linux内核学习---Linux内核编译
一:内核编译前准备
(一)查看使用的操作系统版本
hostnamectl
(二)下载Linux内核源码包(含疑惑)
原本打算使用低版本的Linux内核进行实验,但是编译完成了几个3.X版本以后发现总是出现CPU死机或者无法开机情况,所以这里还是先用与原系统内核的版本相近的进行编译(占了近20G空间)。(好像是gcc编译器?或者系统版本导致??)
下载地址:(下面都可以)
https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/
使用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
所以我们下面直接重启即可!!
三:进入新的内核
(一)重启选择高级选项
(二)选择我们刚刚编译完成的内核
(三)重新查看系统内核
(四)注意:我们发现修改内核,不会改变系统原本的信息!!!
原始数据未改变