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

原文地址:https://www.cnblogs.com/y-c-y/p/14140741.html