上一篇我在ubuntu 18.04 更换内核版本后,这篇我们在ubuntu 18.04上用内核源码编译其它版本的内核,并进行安装。ubuntu 18.04.4我用起来体验感很差,我便卸载了,换成了18.04.6,体验感舒服了很多。
上一篇文章地址链接:ubuntu18.04.4更换内核版本
随便选择一个内核版本,我选择 5.0 ,官网下载太慢,这里给出个链接:
http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/
(1)解压内核:
sudo tar -xavf linux-5.0.tar.xz
(2)安装各种依赖,由于我是刚安装的虚拟机,所以需要安装依赖较多(编译内核时根据提示所需要的依赖进行安装,不同的环境可能稍有差异):
sudo apt-get install gcc make libncurses5-dev openssl
sudo apt-get install build-essential
sudo apt-get install pkg-config
sudo apt-get install libc6-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libelf-dev
sudo apt-get install libncurses-dev
sudo apt-get install libssl-dev
(3)配置需要编译的内核
在编译内核之前,拷贝当前内核的配置文件到需要编译的内核目录的.config文件下,即把5.4.0 的内核配置拷贝到 5.0 的内核版本中,直接用当前内核的配置。
cd linux-5.0
sudo cp /boot/config-$(uname -r) .config
vim .config
sudo make menuconfig
打开Kernel的配置程序,可以进行相关的配置,在这里可以选择启用或者禁用一些模块,我在这里没有进行任何修改,直接保存退出。
(4)编译
为了加快编译速度,我给我的虚拟机分配8核,磁盘分配时最好大一些,不然磁盘大小不够,会导致编译失败,不知道速度提升大不,这一步时间很长。
make -j8
在编译的过程出现如下错误(有的可能不会出现如下错误,没出现则不用管):
make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
vim .config
将 CONFIG_SYSTEM_TRUSTED_KEYS改为空值,如下所示:
CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
改为:
CONFIG_SYSTEM_TRUSTED_KEYS=""
我们可以看到编译出来的原始vmlinux和System.map文件。
vmlinux是一个包括linux kernel的静态链接的可执行elf格式的文件,由编译内核源码得到的最原始的内核文件,未压缩,比较大,由于是二进制文件,该文件可以用objdump查看。
System.map是编译内核时产生的一个文件,存放着内核符号表信息。每次编译一次内核,就会产生一个新的System.map文件。符号表时所有内核符号及其对应地址的一个列表,如下图所示:
(5)安装模块
编译完成之后安装模块,位置为 /lib/modules/5.0.0:
sudo make modules_install
(6)安装内核
安装内核到/boot目录,该命令会自动更新grub,在启动时候看到可选的内核了5.0.0了:
sudo make install
根据输出我们可以得知,执行update-grub 命令,更新启动配置
执行之前:
执行之后:
(7)重启
有两者方式选择内核启动版本:
第一种:修改 vim /etc/default/grub
vim /etc/default/grub
sudo update-grub
reboot
第二种:启动时按shift键,选择 Linux 5.0.0版本启动:
可以看到通过编译内核的方式启动新内核成功:
可以我们的内核源码没有在 /usr/src 目录下:
因此我们可以在编译内核完成后:
sudo mv linux-5.0/ /usr/src/
cd /usr/src/linux-5.0/
sudo make modules_install
sudo make install
使用内核源码安装内核到此结束。
https://blog.csdn.net/hoopertsau/article/details/119962827
https://blog.csdn.net/qq_37748570/article/details/108118284
https://blog.csdn.net/qq_41037945/article/details/91352418
https://www.jianshu.com/p/061ec6c81ecf
https://blog.csdn.net/qq_36393978/article/details/118157426