linux内核学习---Linux内核编译

一:内核编译前准备

(一)查看使用的操作系统版本

hostnamectl

 

(二)下载Linux内核源码包(含疑惑)

原本打算使用低版本的Linux内核进行实验,但是编译完成了几个3.X版本以后发现总是出现CPU死机或者无法开机情况,所以这里还是先用与原系统内核的版本相近的进行编译(占了近20G空间)。(好像是gcc编译器?或者系统版本导致??)

下载地址:(下面都可以)

https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/

https://www.kernel.org/

使用wget进行下载,或者使用共享文件夹上传...都可以,放入/usr/src/下

(三)解压源码文件

sudo tar -zxvf linux-4.10.14.tar.gz 

(四)进入源码文件夹

cd linux-4.10.14

二:开始编译内核

(一)执行下面3条语句

sudo make mrproper         #检查有无不正确的.o文件和依赖关系,使用刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令。

sudo make clean         #clean为清除上一次产生的编译中间文件

sudo make menuconfig        #进入到图形界面,进行内核配置

补充:menuconfig,我们初次选择默认即可。save之后退出即可

其中,每一个配置选项有三种选择,它们的含义如下:

<*>或[*]:表示将该功能编译进内核

[ ]:表示不将该功能编译进内核

[M]:表示将该功能编译成在需要时动态插入到内核的代码

用户根据需要进行配置。

(二)开始编译内核(两种方法)

sudo make –j线程数

设置线程数,可以提高编译速度!!!

或者

sudo make bzImage  #编译为映像---使用了这个

(三)安装内核模块

sudo make modules_install        //安装内核模块

(四)安装内核

sudo make install

(五)配置grub文件

安装内核以后,会默认将新的内核信息更新到grub中,但是我们需要修改grub文件,使得我们可以进行开机选择进入的内核

sudo gedit /etc/default/grub

然后将GRUB_HIDDEN_TIMEOUT=0使用#注释掉,如下图:

然后进行更新grub即可

sudo update-grub

所以我们下面直接重启即可!!

三:进入新的内核

(一)重启选择高级选项

(二)选择我们刚刚编译完成的内核

(三)重新查看系统内核

(四)注意:我们发现修改内核,不会改变系统原本的信息!!! 

原始数据未改变

原文地址:https://www.cnblogs.com/ssyfj/p/13647589.html