一:内核编译前准备

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


hostnamectl


linux内核学习---Linux内核编译_重启

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

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

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

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

​https://www.kernel.org/​

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

linux内核学习---Linux内核编译_系统内核_02

(三)解压源码文件


sudo tar -zxvf linux-4.10.14.tar.gz


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

(四)进入源码文件夹


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使用#注释掉,如下图:

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

然后进行更新grub即可


sudo update-grub


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

三:进入新的内核

(一)重启选择高级选项

linux内核学习---Linux内核编译_系统版本_05

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

linux内核学习---Linux内核编译_重启_06

(三)重新查看系统内核

linux内核学习---Linux内核编译_重启_07

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

linux内核学习---Linux内核编译_系统内核_08

原始数据未改变