• Linux内核编译详解


    在本文实践过程中出现任何问题和报错,基本都能在我的另外一篇文章中找到解决办法,链接为:https://www.cnblogs.com/y-c-y/p/14140714.html

    内核编译安装傻瓜教程(1-4步骤)

    使用工具:ubantu18.04(可以使用uname -a查看当前的内核版本) linux5.8.5.tar.xz

    Ubantu 往期版本下载地址:
    http://old-releases.ubuntu.com/releases/10.10/

    Linux内核各个版本下载地址:
    https://mirrors.edge.kernel.org/pub/linux/kernel/

    步骤1.首先安装交叉编译环境
    sudo apt update ##更新apt工具
    sudo apt-get install build-essential ##安装gcc和g++的编译环境

    步骤2.准备好要编译的内核源代码进入编译目录
    cp linux-5.8.5.tar.xz /usr/src/ ##将内核代码压缩包拷贝到编译目录
    cd /usr/src/ ##进入编译目录
    xz -d linux-5.8.5.tar.xz ##解压原代码包
    tar xvf linux-5.8.5.tar ##解压原代码包
    cd linux-5.8.5 ##进入解压之后的源码目录

    步骤3.接下来的每一步都要做,每一步都要等很久,所以千万不要忘了自己刚刚执行的命令是什么
    make clean ##只清理所有产生的文件
    make mrproper ##清理所有产生的文件与.config配置文件
    make oldconfig ##生成.config文件,一路回车即可
    make ##编译内核和其他模块
    make modules_install ##安装其他模块
    male install ##安装内核
    reboot ##系统重启

    步骤4.接下来是最重要的一步
    双手合十,闭上双眼,一边回想自己之前的步骤有没有问题,一边祈祷能够成功。
    重启之后没有像别的文章说的一样有开机选择系统的界面,还是和之前一样进入了ubantu系统,但是输入uname -r之后会发现已经是新的内核了。

    =到此编译步骤结束=========================================

    关于各个步骤的解释

    1.安装交叉编译环境,这没什么好说的,想要详细了解,那就是另外的事情了。
    2.关于步骤三中的一套make命令是最精简版本,其中
    make = make bzImage + make modules

    make ##编译内核和其他模块的命令

    make bzImage ##编译内核命令,
    内核现在的版本编译出来普遍较大,例如以上的就是11M,推荐使用命令make bzImage而不是make zImage ,编译出来的对应在源码编译目录的arch//boot/目录下,查询方法如下,可以看出是x86_64架构。

    make modules ##编译其他模块,很多驱动还有功能在.config文件生成时候在(Y/N/M)的时候选成M的都是modules

    make modules_install ##把modules安装好。把模块放到/lib/modules文件夹一个和内核名一样的文件夹下,并且运行depmod生成模块依赖关系文件,系统启动时加载模块就是从dep里面读取信息加载模块。

    make install ##这一步只是安装内核bzImage,System.map。并不安装modules。关键点是要生成initrd.img文件,修改系统引导配置,产生grub.cfg启动文件。使用这个命令是最简单的方法,也可以选择使用mkinitramfs 等命令。

    参考文章如下:
    https://blog.csdn.net/qq_34247099/article/details/50949720
    https://www.cnblogs.com/klb561/p/9192630.html
    https://blog.csdn.net/weibo1230123/article/details/82716763
    https://www.cnblogs.com/gavin-world/p/11169282.html

  • 相关阅读:
    pytorch nn.Parameters vs nn.Module.register_parameter
    pytorch COCO2017 目标检测 (一)DataLoader
    focal loss 两点理解
    pytorch 目标检测 图像预处理
    C++ 使用copy_if获得数组vector掩膜
    pytorch 网络可视化
    SHELL学习笔记二
    SHELL学习笔记一
    Linux命令笔记一
    VLOOKUP返回#N/A结果
  • 原文地址:https://www.cnblogs.com/y-c-y/p/14140741.html
Copyright © 2020-2023  润新知