linux内核编译,step by step!

时间:2022-01-11 07:48:48

这里写代码片 最近因为学习操作系统原理的课程,老师要求编译自己的linux内核,弄了蛮久终于搞定了,在这过程中受到了很多过时的教程的错误引导,浪费了蛮多时间,所以就此做个记录,以备以后查阅!
准备工作:
安装好的linux 系统(这是废话)、新的linux内核(可以从官网免费下载:www.kernel.org)
step 1
查看当前的内核版本( uname -r) 并获得root权限 (sudo su)
linux内核编译,step by step!
linux内核编译,step by step!
(notice: 在linux终端中输入密码是不会显示出来的,所以不用惊讶,输完按enter就可以了)
step 2
将下载好的内核压缩包复制到内核文件夹中。之所以复制是因为如果第一次编译内核的话可能出现蛮多意外,你可能要重新开始几次,复制了之后就不用重新开始的时候再去下载
复制命令: cp …/linux-4.15.10.tar.xz /usr/src (省略号是路径,中间的linux-4.15.10是内核版本)
linux内核编译,step by step!
step 3
输入 cd /usr/src 进入该文件夹, 然后依次输入 xz -d linux-4.15.10.tar.xz 和 tar xvf linux-4.15.10.tar 解压内核压缩包
linux内核编译,step by step!
step 4
输入 cd /usr/src/linux-4.15.10 进入解压之后的新的呆编译的内核文件夹, 然后输入 cp /boot/config-, 然后按下tab键,终端会自动补全该目录下符合条件的文件名,然后紧接着输入.config, 这条命令的作用是使用在boot目录下的原内核配置文件
linux内核编译,step by step!
(因为编译时忘了截配置内核文件的图,所以没办法上传,如果没有记错的话,这条命令成功执行之后是不会有任何输出的,因为实际上这是一个复制指令(cp指令),所以如果有输出提示的话,就有点问题)
step 5
输入 sudo make menuconfig 进入内核配置界面(虽然有很多种界面可以选择,比如文本界面,但是推荐这一种)
linux内核编译,step by step!
linux内核编译,step by step!
然后就能选择所需的功能模块,注意[]代表不要该模块,[*]代表内核加入该模块,[M]代表可加载模块,虽然内核功能越强大越好但是最好不要乱点,因为增加模块会扩大内核规模,会影响系统运行速度等等。基本的功能它都已经自动选好了,如果没有特殊要求的话这一步可以直接过,如果想了解其中个模块功能请自行百度。
step 6
输入 sudo make clean 删除前面步骤中生成的中间文件,以防造成一些意想不到的错误(如果是第一次编译内核,这一步可以省略,但是做了这一步也没有什么问题,所以还是进行这一步吧)
输入 sudo make dep 读取配置过程中生成的配置文件,创建其中对应的依赖关系
linux内核编译,step by step!
linux内核编译,step by step!
step 7
输入 sudo make modules 编译内核模块,等待编译完成
输入 sudo make modules_install 安装内核模块,等待安装完成
输入 sudo make install 安装内核
(notice: 这三步会花蛮久,大约两小时左右(我的电脑是这样,当然土豪的高配电脑不要参照我的))
linux内核编译,step by step!
linux内核编译,step by step!
step 8
输入 cp ./arch/x86/boot/bzImage /boot/bzImage
依次输入 sudo mkinitramfs -o /boot/initrd.img-4.15.10 和 sudo update-initramfs -c -k 4.15.10 生成内核启动文件
输入 sudo update-grub2 更新grub引导程序
linux内核编译,step by step!
linux内核编译,step by step!
step 9
完成上面那些步骤之后重启就可以使用新的内核了,但是如果想更加炫酷,比如加上自己的logo也是可以的
输入 gedit /boot/grub/grub.cfg 使用ubuntu自带的编辑器编辑grub引导程序
然后你可以看到很多在重启时grub引导程序的内容,比如 “ubuntu高级选项”, 找到 menuentry ‘ubuntu, linux-4.15.10’ 的字样,将单引号中的内容修改成你想要的内容然后保存重启就可以看到你的修改。
linux内核编译,step by step!
step 10
重启验证是否编译安装成功!
linux内核编译,step by step!

Notice :
1.由于我编译安装了两次内核,以上步骤是第二次编译安装时的步骤,实际上第一次编译安装时遇到了很多问题,大都是没有相应的库,需要安装相应的模块,比如在make menuconfig时,终端提示系统缺少终端下屏幕控制的库 ncurces , 这种情况只用按照提示把相应的库安装上去就好了, 比如缺少 ncurces 库,输入 sudo apt-get install libncursers5-dev 然后确认下载就行了
2. 注意, linux中默认是启动最新的内核的,也就是在开机后的grub引导界面,如果选择第一个“ubuntu”,那么进入的就是刚刚编译好的新内核,如果想选择原来的或者更多的内核版本,点击“ubuntu高级选项”。但是如果想改变选择“ubuntu”后进入的默认内核,就要进入grub.cfg (step 9)中修改我们在step 8中生成的启动文件, 将ubuntu默认启动的内核启动文件改成你想要内核启动文件
linux内核编译,step by step!