本文介绍在Ubuntu中编译Linux内核并添加新的启动项信息。
第一步:下载内核源码并解压
内核源码可以在官网下载:点击打开链接
笔者用的内核版本是4.14的。把下载好的内核源码放在/usr/src/kernel目录下,没有这个目录的话可以自己创建。通过以下命令把内核源码解压,后面跟的是源码文件名。
tar xvJf xxxxxx.tar.xz
第二步:配置编译选项
配置编译选项有多种方法:
(1)make config:基于文本的配置界面。
(2)make menuconfig:基于文本的菜单式配置界面。
(3)make xconfig:基于X Windows(Qt)图形配置界面。
(4)make gconfig:基于X Windows(Gtk)图形配置界面。
(5)make oldconfig:使用原有内核配置。
这里使用最简单的make config。
进入解压得来的文件夹,使用make config命令配置编译选项。如果没特殊要求,一路回车选择默认配置就好。
第三步:开始编译内核
使用make bzImage命令开始编译内核,此过程大概需要一小时。
使用make modules编译相应的内核模块,接着使用make modules_install安装编译好的内核模块。此过程大概需要两个小时。
在以上过程中出现scripts/sign-file.c:23:30: fatal error: openssl/opensslv.h错误的解决办法:点击打开链接
第四步:添加新的启动项信息
将/usr/src/kernel/linux-4.14/arch/x86/boot下的bzImage文件拷贝到/boot下,并重命名为vmlinuz-4.14.0,后面是内核版本。这时候该目录下还有init-4.14.0,这是通过命令make modules_install得到的。
修改grub/grub.cfg文件:
只需把上面名为"Ubuntu"的启动项信息复制下来,修改一下启动项名字,还有在linux,initrd分别改成对应的两个文件即可。
重启系统可以进入新的内核。通过uname -r命令可以得到当前内核版本。