Linux内核编译与安装教程(Ubuntu下载并编译最新的Linux内核)

今天来做一个实验,目标如下:

把 Linux内核 5.11.0 编译安装成为 目前最稳定的Linux内核版本 5.15.11。

1、下载最新的linux内核

2、配置最新的linux内核

3、编译最新的linux内核

4、使用最新的 linux 内核启动 ubuntu

 

一、准备工作

 

1、先安装相关软件包。

命令如下:

ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get update
ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get upgrade

sudo apt-get update sudo apt-get upgrade

 

ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install wget

sudo apt-get install wget

 

 

ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install build-essential

sudo apt-get install build-essential

 

ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install pkg-config
ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install libgtk2.0-dev
ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install libcanberra-gtk-module
ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install glade libglade2-dev

 

ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install flex bison
ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install libssl-dev
ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install libelf-dev
ubuntu@ubuntu-VirtualBox:~/桌面$ sudo apt-get install libncurses-dev

 

2、查看当前的linux内核版本。

命令如下:

ubuntu@ubuntu-VirtualBox:~$ uname -a
Linux ubuntu-VirtualBox 5.11.0-43-generic #47~20.04.2-Ubuntu SMP Mon Dec 13 11:06:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

uname -a

 

二、下载并编译最新的linux内核

 

1、从 www.kernel.org 下载最新的 linux 内核

注意:目前Linux 稳定内核版本是 5.15.11,建议大家下载稳定版本的内核。

从 www.kernel.org 下载最新的 linux 内核

 

具体操作命令如下:

 

第一步:进入用户主目录

ubuntu@ubuntu-VirtualBox:~$ cd ~
ubuntu@ubuntu-VirtualBox:~$ pwd
/home/ubuntu

cd ~

 

第二步:下载5.15.11最新Linux 稳定内核版本

ubuntu@ubuntu-VirtualBox:~$ sudo wget -c https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.11.tar.xz

sudo wget -c https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.11.tar.xz

 

第三步:解压

ubuntu@ubuntu-VirtualBox:~$ sudo tar xvJf linux-5.15.11.tar.xz

sudo tar xvJf linux-5.15.11.tar.xz

 

第四步:软链接

ubuntu@ubuntu-VirtualBox:~$  sudo ln -s `pwd`/linux-5.15.11 /usr/src/linux

sudo ln -s `pwd`/linux-5.15.11 /usr/src/linux

 

2、配置内核特性

主要是配置最新的linux内核特性。

 

先给大家讲一点知识:

这步配置内核的方法有多种、每一个make就是一种方法、我们只在选其中一种就可以了:

 make config:遍历选择所要编译的内核特性
 make allyesconfig:配置所有可编译的内核特性
 make allnoconfig:并不是所有的都不编译,而是能选的都回答为NO、只有必须的都选择为yes。
 make menuconfig:这种就是打开一个文件窗口选择菜单,这个命令需要打开的窗口大于80字符的宽度,打开后就可以在里面选择要编译的项了
   
 下面两个是可以用鼠标点选择的、比较方便哦:
 make kconfig(KDE桌面环境下,并且安装了qt开发环境)
 make gconfig(Gnome桌面环境,并且安装gtk开发环境)
 menuconfig:使用这个命令的话、如果是新安装的系统就要安装gcc和ncurses-devel这两个包才可以打开、然后再里面选择就可以了、通这个方法也是用得比较多的:

或者

如果想方便点又不想用别的方法,那就复制当前系统上的 /boot/config-版本-平台,这个文件到/usr/src/linux/.config 覆盖这个文件,再改一下里面的配置信息;哪些用得着就保留。哪些用不着就删除了都可以。有什么新的也可以加进来,这就是按自己的需求来配置了。

 

注意:

这里建议大家用root用户来操作,因为普通用户操作的时候可能会提示没有权限。哪怕你用上“sudo”命令有时也没有用。

可以参考:ubuntu默认root密码是多少?ubuntu设置root初始密码

 

具体操作命令如下:

 

第一步:

为了方便,我就直接 复制当前系统上的 /boot/config-版本-平台,这个文件到 /usr/src/linux/.config 并覆盖它。

ubuntu@ubuntu-VirtualBox:~$ cd /usr/src/linux
ubuntu@ubuntu-VirtualBox:/usr/src/linux$ sudo cp /boot/config-`uname -r`   .config

sudo cp /boot/config-`uname -r` .config

 

第二步:

make oldconfig的作用是备份当前.config文件为.config.old,如若make config/menuconfig设置不当可用于恢复先前的.config

root@ubuntu-VirtualBox:/usr/src/linux$ make oldconfig

make oldconfig

 

第三步:配置内核特性(选择一种方法就可以了),一般有以下几种方法,上面也讲过。

make config:遍历选择所要编译的内核特性

make allyesconfig:配置所有可编译的内核特性

make allnoconfig:并不是所有的都不编译

make menuconfig:这种就是打开一个文件窗口选择菜单

make kconfig(KDE桌面环境下,并且安装了qt开发环境)

make gconfig(Gnome桌面环境,并且安装gtk开发环境)

 

为了方便,这里我就直接用“make gconfig”来操作。

root@ubuntu-VirtualBox:/usr/src/linux$ make gconfig

make gconfig

 

3、用“gconfig”来自定义内核配置

既然是自定义,我就做几个简单的示例吧!

 

第一步:将你的 ID 添加为本地版本

将你的 ID 添加为本地版本

 

第二步:禁用二进制仿真

如果不禁用,会提示“arch/x86/Makefile:148: CONFIG_X86_X32  已启用但不支持 binutils“错误。

禁用二进制仿真

 

第三步:保存自定义的配置,可以直接如图下这样去操作。

保存自定义的配置

 

第四步:配置系统受信任的密钥为空

如果不这样设置,会提示类似于如下的错误。

make[1]: *** 没有规则可制作目标“debian/canonical-revoked-certs.pem”,由“certs/x509_revocation_list” 需求。 停止。
make[1]: *** 正在等待未完成的任务....
CC certs/blacklist.o
CC kernel/watchdog_hld.o
make: *** [Makefile:1868:certs] 错误 2
make: *** 正在等待未完成的任务....

没有规则可制作目标“debian/canonical-revoked-certs.pem”,由“certs/x509_revocation_list” 需求。 停止。

 

具体解决此问题的命令如下:

root@ubuntu-VirtualBox:/usr/src/linux# vim .config

 

再将

CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

修改为

CONFIG_SYSTEM_TRUSTED_KEYS=""
CONFIG_SYSTEM_REVOCATION_KEYS=""

CONFIG_SYSTEM_TRUSTED_KEYS="" CONFIG_SYSTEM_REVOCATION_KEYS=""

 

4、清理以前的编译(可选)

如果要重新编译,请执行以下命令清理之前的工作:这里我就先不操作了。

root@ubuntu-VirtualBox:/usr/src/linux# make clean

 

5、编译内核

编译最新的linux内核(漫长的等待)

说明:

make [-j #] : #号最多为CPU物理核心总数的两倍,这样会快点哦!

 

编译前请先查看:(这也是我在编译过程中遇到的问题,你们可以提前做好措施。)

BTF: .tmp_vmlinux.btf: pahole (pahole) is not available 解决方法

FAILED: load BTF from vmlinux: No such file or directory 解决方法

 

root@ubuntu-VirtualBox:/usr/src/linux# make -j2

make -j2

 

经历数小时,总算“编译内核”完成。编译内核”完成

 

6、安装内核模块

root@ubuntu-VirtualBox:/usr/src/linux# sudo make modules_install

 

安装内核模块完成后,如下:安装内核模块完成后

 

注意:

这步完了之后你可以查看一下 /lib/modules/ 目录下就会生成一个以版本号命名的一个文件模块了。

root@ubuntu-VirtualBox:/usr/src/linux# ls /lib/modules/

/lib/modules/

 

7、安装内核

root@ubuntu-VirtualBox:/usr/src/linux# sudo make install

sudo make install

 

注意:

安装完之后会在 /boot/ 目录下生成一个内核文件 vmlinuz-5.15.11、还有几个跟你当前编译的版本一样的文件、可以ls去看一下:

root@ubuntu-VirtualBox:/usr/src/linux# ls /boot/

ls /boot/

 

8、重启并验证

用最新的 linux 内核启动 ubuntu,验正并测试。

注意:

重启后,或许你需要参考:end Kernel panic – not syncing:System is deadlocked on memory原因与解决方法

 

第一步:重启

root@ubuntu-VirtualBox:/usr/src/linux# sudo reboot

 

 

第二步:选择“ubuntu的高级选项 - Linux 5.15.11888新内核”。

ubuntu高级选项

 

Linux 5.15.11888新内核

 

第三步:查看当前内核

ubuntu@ubuntu-VirtualBox:~/桌面$ uname -a
Linux ubuntu-VirtualBox 5.15.11888 #3 SMP Fri Dec 24 18:50:53 CST 2021 x86_64 x86_64 x86_64 GNU/Linux

Linux ubuntu-VirtualBox 5.15.11888

 

总结:

最来,简单来总结一下我们的安装步骤,如下:

       1、获取内核源码,解压至/usr/src
           # tar xf linux-5.15.11.tar.xz -C /usr/src
           # ln -sv /usr/src/linux-5.15.11  /usr/src/linux
       2、配置内核特性(选择以下其中一种方法就可以了)
           make config:遍历选择所要编译的内核特性
           make allyesconfig:配置所有可编译的内核特性
           make allnoconfig:并不是所有的都不编译
           make menuconfig:这种就是打开一个文件窗口选择菜单
           make kconfig(KDE桌面环境下,并且安装了qt开发环境)
           make gconfig(Gnome桌面环境,并且安装gtk开发环境)
       3、编译内核
           # make [-j #] : #号最多为CPU物理核心总数的两倍,这样会快点哦            
       4、安装内核模块
           # make modules_install
       5、安装内核
           # make install
       6、验正并测试
           # cat /boot/grub/grub.conf 或 grub.cfg
           查看新内核是否已经添加, 而后重启系统并测试
    A+
发布日期:2021年12月24日 17:39:38  所属分类:Linux
最后更新时间:2021-12-25 20:18:18
标签:
付杰
  • ¥ 99.0元
  • 市场价:99.0元
  • ¥ 298.0元
  • 市场价:598.0元
  • ¥ 198.0元
  • 市场价:298.0元
  • ¥ 298.0元
  • 市场价:598.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: