1、下载最新的Linux内核,小版本号为偶数是稳定版本,我们选择稳定版本下载。内核官方网站 https://www.kernel.org/,点击那个屎黄色的按钮就开始下载了,现在最新的版本是5.6.14,要知道更新了什么自己去看文档吧,我也懒得看了。
2、下载完是一个.tar.xz的压缩包,使用下面这个解压吧。
tar xf linux-5.6.14.tar.xz
解压完进入目录
cd linux-5.6.14/
偷偷去看一下就是下面这样的,Ubuntu20暗黑模式可以吧!
3、直接配置会出现好多奇葩问题,都是些依赖问题,需要看具体打印,比如说下面这样的
那就安装一下依赖解决吧,如果下面这些还解决不了你的问题,那就请你去找度娘了,毕竟我也忘了我之前有没有安装其他的,哈哈哈。
sudo apt-get install libncurses5-dev flex bison libssl-dev
4、启动配置
make menuconfig
终于成功了一步,配置选项非常多,感兴趣的盆友可以深入了解每个选项的含义,这里我就偷懒使用默认保存好了。不过好像默认保存就是使用当前内核的配置的,这样的话,第五条不就多余了,哈哈。
5、配置编译选项,默认直接保存是可以用的,但是为了避免出现意想不到的问题,还是用你现在有的吧,可以去这个目录拷贝一个/boot/config-xxx,xxx是现在内核的配置(xxx处使用TAB补全),然后将它放到内核源码目录下,重命名为.config。
cp /boot/config-xxx .config
然后使用配置
make oldconfig
6、我们加点东西吧,这样好玩一些,比如修改init目录下的main.c的start_kernel函数中加入一条打印,这样系统启动第一条打印就是你加入的了!
printk("JC love linux!!!");
7、然后就是开始编译了,这就看谁的电脑配置牛叉了,我的编译了差不多一个小时,听说还有三个小时的。为了加快编译那就多开几个线程吧,一般是CPU内核数+1,比如四核就-j5。
make -j5
8、编译安装内核模块
sudo make modules_install
9、安装内核
sudo make install
10、清理旧内核,这一步是不需要的,你或许需要回退内核版本,以备不时之需,但是我强迫症,不想看到没有用的东东。
sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
删除/boot/目录下config-xxx.old,System.map-xxx.old,vmlinuz.old,vmlinuz-xxx.old文件
sudo rm -f xxx.old
11、查看当前内核版本
uname -a
已经使用最新的版本啦!!!
12、重启系统
reboot
13、看看我们加入的打印吧,由于Ubuntu启动屏蔽了一些启动打印,那我们去找log看看好了。
sudo cat /var/log/kern.log
好多打印呀,我们的打印在哪里?我们搜索一下,点一下小放大镜,找到了!!!容我激动一分钟!!!
咦!还有特别的发现,居然支持两个国产CPU,Hygon海光和zhaoxin兆芯,国产还需要加油哈!
后记:通过编译内核,我们发现这个过程还得很简单的,没有想象的复杂,当然深入学习肯定会越来越复杂,但是内核编译成功运行,给了我学习Linux的极大信心和成功的满足感,希望看到此文的盆友共勉。