ubuntu 18.04.06 使用内核源码安装内核

文章目录

  • 前言
  • 一、编译内核以及安装
  • 二、编译内核模块
  • 总结
  • 参考资料

前言

上一篇我在ubuntu 18.04 更换内核版本后,这篇我们在ubuntu 18.04上用内核源码编译其它版本的内核,并进行安装。ubuntu 18.04.4我用起来体验感很差,我便卸载了,换成了18.04.6,体验感舒服了很多。
上一篇文章地址链接:ubuntu18.04.4更换内核版本

内核版本:
ubuntu 18.04.06 使用内核源码安装内核_第1张图片

随便选择一个内核版本,我选择 5.0 ,官网下载太慢,这里给出个链接:
http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/
ubuntu 18.04.06 使用内核源码安装内核_第2张图片

一、编译内核以及安装

(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 

ubuntu 18.04.06 使用内核源码安装内核_第3张图片

(3)配置需要编译的内核
在编译内核之前,拷贝当前内核的配置文件到需要编译的内核目录的.config文件下,即把5.4.0 的内核配置拷贝到 5.0 的内核版本中,直接用当前内核的配置。

cd linux-5.0
sudo cp /boot/config-$(uname -r) .config
vim .config

ubuntu 18.04.06 使用内核源码安装内核_第4张图片

sudo make menuconfig

打开Kernel的配置程序,可以进行相关的配置,在这里可以选择启用或者禁用一些模块,我在这里没有进行任何修改,直接保存退出。
ubuntu 18.04.06 使用内核源码安装内核_第5张图片
(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=""

编译完成:
ubuntu 18.04.06 使用内核源码安装内核_第6张图片

我们可以看到编译出来的原始vmlinux和System.map文件。
ubuntu 18.04.06 使用内核源码安装内核_第7张图片
vmlinux是一个包括linux kernel的静态链接的可执行elf格式的文件,由编译内核源码得到的最原始的内核文件,未压缩,比较大,由于是二进制文件,该文件可以用objdump查看。
ubuntu 18.04.06 使用内核源码安装内核_第8张图片
ubuntu 18.04.06 使用内核源码安装内核_第9张图片

System.map是编译内核时产生的一个文件,存放着内核符号表信息。每次编译一次内核,就会产生一个新的System.map文件。符号表时所有内核符号及其对应地址的一个列表,如下图所示:
ubuntu 18.04.06 使用内核源码安装内核_第10张图片

(5)安装模块
编译完成之后安装模块,位置为 /lib/modules/5.0.0:

sudo make modules_install

ubuntu 18.04.06 使用内核源码安装内核_第11张图片

执行之前:
在这里插入图片描述
执行之后:
在这里插入图片描述

(6)安装内核
安装内核到/boot目录,该命令会自动更新grub,在启动时候看到可选的内核了5.0.0了:

sudo make install

根据输出我们可以得知,执行update-grub 命令,更新启动配置
ubuntu 18.04.06 使用内核源码安装内核_第12张图片

执行之前:
ubuntu 18.04.06 使用内核源码安装内核_第13张图片
执行之后:
ubuntu 18.04.06 使用内核源码安装内核_第14张图片
(7)重启
有两者方式选择内核启动版本:
第一种:修改 vim /etc/default/grub

 vim /etc/default/grub
 sudo update-grub
 reboot

ubuntu 18.04.06 使用内核源码安装内核_第15张图片
ubuntu 18.04.06 使用内核源码安装内核_第16张图片

第二种:启动时按shift键,选择 Linux 5.0.0版本启动:
ubuntu 18.04.06 使用内核源码安装内核_第17张图片
可以看到通过编译内核的方式启动新内核成功:
ubuntu 18.04.06 使用内核源码安装内核_第18张图片
ubuntu 18.04.06 使用内核源码安装内核_第19张图片

二、编译内核模块

ubuntu 18.04.06 使用内核源码安装内核_第20张图片

ubuntu 18.04.06 使用内核源码安装内核_第21张图片
可以我们的内核源码没有在 /usr/src 目录下:
ubuntu 18.04.06 使用内核源码安装内核_第22张图片
因此我们可以在编译内核完成后:

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

你可能感兴趣的:(Linux,操作,ubuntu,linux,服务器)