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