如何从源代码编译和安装 Linux 内核 5.16.9
编译自定义内核有其优点和缺点。但是,新的 Linux 用户/管理员发现编译 Linux 内核很困难。编译内核需要了解一些内容,然后输入几个命令。本分步指南介绍了如何在 Ubuntu 或 Debian Linux 下编译 Linux 内核版本 5.16.9。以下说明已在 RHELCentOS 7/8(及其克隆)、Debian Linux、Ubuntu Linux 和 Fedora Linux 31/32 上成功测试。但是,对于任何其他 Linux 发行版,说明都相同。
如何编译和安装Linux内核5.16.9
从源代码构建(编译)并安装最新 Linux 内核的过程如下:
- 从 kernel.org 获取最新内核
- 验证内核
- 解压内核压缩包
- 复制现有的 Linux 内核配置文件
- 编译并构建Linux内核5.16.9
- 安装 Linux 内核和模块(驱动程序)
- 更新 Grub 配置
- 重新启动系统
让我们详细了解所有步骤。
教程详细信息 | |
---|---|
难度等级 | 先进的 |
Root 权限 | 赫斯 |
要求 | Linux 终端 |
类别 | 系统管理 |
操作系统兼容性 | Alma • CentOS • Debian • Fedora • Linux • Pop!_OS • RHEL • Rocky • Stream • Ubuntu |
预计阅读时间 | 7 分钟 |
步骤 1. 获取最新的 Linux 内核源代码
访问官方项目网站并下载最新的源代码。单击大黄色按钮,上面写着“最新稳定内核”:
文件名将是 linux-xyztar.xz,其中 xyz 是实际的 Linux 内核版本号。例如,文件 linux-5.16.9.tar.xz 代表 Linux 内核版本 5.16.9。使用wget 命令下载 Linux 内核源代码:
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.9.tar.xz
第 2 步:提取 tar.xz 文件
您实际上不必将源代码提取到 /usr/src 中。您可以使用以下 unzx 命令或 xz 命令将源代码提取到 $HOME 目录或任何其他目录中:
$ unxz -v linux-5.16.9.tar.xz
或
$ xz -d -v linux-5.16.9.tar.xz
使用 pgp 验证 Linux 内核 tartball
首先获取 linux-5.16.9.tar 的 PGP 签名:
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.9.tar.sign
尝试验证它:
$ gpg --verify linux-5.16.9.tar.sign
示例输出:
gpg: assuming signed data in 'linux-5.16.9.tar' gpg: Signature made Sun 12 Aug 2018 04:00:28 PM CDT gpg: using RSA key 79BE3E4300411886 gpg: Can't check signature: No public key
从 PGP 密钥服务器获取公钥以验证签名,即 RSA 密钥 ID 79BE3E4300411886(来自上述输出):
$ gpg --recv-keys 79BE3E4300411886
示例输出:
gpg: key 79BE3E4300411886: 7 duplicate signatures removed gpg: key 79BE3E4300411886: 172 signatures not checked due to missing keys gpg: /home/vivek/.gnupg/trustdb.gpg: trustdb created gpg: key 79BE3E4300411886: public key "Linus Torvalds <torvalds@kernel.org>" imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1
现在使用 gpg 命令再次验证 gpg 密钥:
$ gpg --verify linux-5.16.9.tar.sign
示例输出:
gpg: assuming signed data in 'linux-5.16.9.tar' gpg: Signature made Sun 12 Aug 2018 04:00:28 PM CDT gpg: using RSA key 79BE3E4300411886 gpg: Good signature from "Linus Torvalds <torvalds@kernel.org>" [unknown] gpg: aka "Linus Torvalds <torvalds@linux-foundation.org>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886
如果“gpg –verify”命令没有输出“ BAD signature ”,请使用 tar 命令解压/提取 Linux 内核 tarball ,输入:
$ tar xvf linux-5.16.9.tar
步骤 3. 配置 Linux 内核功能和模块
在开始构建内核之前,必须配置 Linux 内核功能。您还必须指定系统需要哪些内核模块(驱动程序)。这项任务对于新用户来说可能非常繁重。我建议您使用 cp 命令复制现有配置文件:示例
输出:
$ cd linux-5.16.9
$ cp -v /boot/config-$(uname -r) .config
'/boot/config-4.15.0-30-generic' -> '.config'
步骤 4. 安装所需的编译器和其他工具
您必须安装GCC编译器等开发工具以及相关工具才能编译Linux内核。
如何在Debian/Ubuntu Linux上安装 GCC 和开发工具
输入以下apt 命令或apt-get 命令来安装:有关更多信息,
$ sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev
请参阅“ Ubuntu Linux 安装 GNU GCC 编译器和开发环境”。
如何在CentOS/RHEL/Oracle/Scientific Linux上安装 GCC 和开发工具
尝试yum 命令:
$ sudo yum group install "Development Tools"
或者
$ sudo yum groupinstall "Development Tools"
其他软件包:
$ sudo yum install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
如何在 Fedora Linux 上安装 GCC 和开发工具
运行以下 dnf 命令:
$ sudo dnf group install "Development Tools"
$ sudo dnf install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
步骤 5. 配置内核
现在,您可以通过在源代码目录中输入以下任一命令来启动内核配置:
- $make menuconfig – 基于文本的彩色菜单、广播列表和对话框。如果您想远程编译内核,此选项在远程服务器上也很有用。
- $make xconfig – 基于 X windows(Qt)的配置工具,在 KDE 桌面下效果最佳
- $make gconfig – 基于 X windows(Gtk)的配置工具,在 Gnome Dekstop 下运行效果最佳。
例如,运行make menuconfig命令会启动以下屏幕:
$ make menuconfig
您必须根据需要选择不同的选项。每个配置选项都有与之关联的帮助按钮,因此请选择帮助按钮以获取帮助。请注意,“make menuconfig”是可选的。我在这里仅将其用于演示目的。您可以使用此选项启用或禁用某些功能或内核驱动程序。很容易删除对设备驱动程序或选项的支持,最终导致内核损坏。例如,如果从内核配置文件中删除了 ext4 驱动程序,系统可能无法启动。如有疑问,只需在内核中保留支持即可。
步骤 5. 如何编译 Linux 内核
开始编译并创建压缩的内核映像,输入:
$ make
要加快编译时间,请-j按如下方式传递:
编译和构建 Linux 内核将花费大量时间。构建时间取决于系统的资源,例如可用的 CPU 核心和当前系统负载。所以请耐心等待。
## use 4 core/thread ##
$ make -j 4
## get thread or cpu core count using nproc command ##
$ make -j $(nproc)
安装 Linux 内核模块
$ sudo make modules_install
安装 Linux 内核
到目前为止,我们已经编译了 Linux 内核并安装了内核模块。现在是时候安装内核本身了:
$ sudo make install
它将在 /boot 目录中安装三个文件,并修改内核 grub 配置文件:
- initramfs-5.16.9.img
- 系统.map-5.16.9
- vmlinuz-5.16.9
步骤 6. 更新 grub 配置
您需要修改 Grub 2 引导加载程序配置。根据您的 Linux 发行版,在 shell 提示符下输入以下命令:
CentOS/RHEL/Oracle/Scientific 和 Fedora Linux
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo grubby --set-default /boot/vmlinuz-5.16.9
您可以使用以下命令确认详细信息:
grubby --info=ALL | more
grubby --default-index
grubby --default-kernel
Debian/Ubuntu Linux
以下命令是可选的,因为 make install 会为您完成所有工作,但仅出于历史原因在此处包含:
$ sudo update-initramfs -c -k 5.16.9
$ sudo update-grub
如何从源代码构建和安装最新的 Linux 内核
您已编译 Linux 内核。此过程需要一些时间,但现在您已拥有适用于系统的自定义 Linux 内核。让我们重新启动系统。
重新启动 Linux 计算机并启动到新内核
只需发出重启命令或关机命令:重启后
# reboot
验证新的 Linux 内核版本:
$ uname -mrs
示例输出:
Linux 5.16.9 x86_64
结论 - Linux 编译内核版本 5.16.9
配置!您已完成从源代码构建 Linux 内核的各个步骤,并且编译后的内核应该在您的系统上运行。我强烈建议您始终备份重要数据,并访问此处的kernel.org 页面以获取更多信息。