ubuntu 20.04 lts 编译 linux kernel 5.10.53

gcc版本

$ gcc --version
gcc (GCC) 12.0.0 20210722 (experimental)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

这里默认你已经装好9以上的gcc,并配置好环境了。没GCC环境的可以参考我上篇文章 ubuntu 20.04 lts 编译gcc12

下载Linux内核

kernel.org 下载 longterm: 5.10.53/home/user/Download/kernel

cd /home/user/Download/kernel && wget -c https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.53.tar.xz 

解压

tar -Jxf linux-5.10.53.tar.xz && cd linux-5.10.53

编译前的准备工作

编译内核需要各种依赖

$ sudo apt-get install fakeroot build-essential ncurses-dev xz-utils bc bison flex libssl-dev libncurses5-dev libelf-dev -y

flebx 是词法分析器,bison 是解析器
这里面可能会出现一些问题,按照提示做即可,涉及一些软件包版本相互依赖关系,每个机器可能问题不一样,具体可以Google.

可以先用uname -r自行查看下当前内核版本

$ uname -r
5.4.0-80-generic

拷贝内核配置文件

$ cp /boot/config-$(uname -r) ./. config

将当前内核的配置文件拷贝成 .config 放到 linux-5.10.53 目录下,来提供对各种硬件的支持。
谨慎点可以多拷贝一份放到U盘,以防操作不慎,系统崩掉

定制内核

$ make localmodconfig

输入 make localmodconfig 它将询问您有关新驱动程序和内核支持的问题,如果您想定制您的内核,请按照提示一步步回答提示(有不明白的地方可以Google)。如果您不知道该如何配置,请按 Enter 键将问题的所有答案设置为默认值。

Linux 内核构建系统提供了许多构建目标,了解它的最好方法可以运行 make help

开始编译

$ make -j6

-j6 的意思是采用6个内核线程编译,由于我是4核8线程系统,所以采用6个线程。(因为手上还有工作在完成,所以留出2个线程)
编译完成之后首先安装模块

编译完成之后首先安装模块

$ sudo make modules_install -j6

然后安装内核

$ sudo make install

完成后启用内核作为引导

$ sudo update-initramfs -c -k 5.10.53
update-initramfs: Generating /boot/initrd.img-5.10.53

更新一下grub

$ sudo update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.10.53
Found initrd image: /boot/initrd.img-5.10.53
Found linux image: /boot/vmlinuz-5.8.0-63-generic
Found initrd image: /boot/initrd.img-5.8.0-63-generic
Found linux image: /boot/vmlinuz-5.8.0-43-generic
Found initrd image: /boot/initrd.img-5.8.0-43-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done

重启

$ sudo shutdown -r now

检查内核是否安装成功

如果重启顺利能进系统,运行如下命令看下内核是否安装成功

$ uname -r
5.10.53

到此,内核成功更新完毕。还有另一种编译方式,直接打包成.deb包,如下

另一种安装方式

$ make -j6 deb-pkg

该命令将为您编译的内核创建一个 .deb 文件。

编译完成后,输入将内核安装到系统

$ sudo dpkg -i linux-*.deb

现在重新启动,您将在 GRUB 菜单中看到编译后的内核。

$ sudo shutdown -r now