1. 下载 Linux 内核源代码
首先,你需要从官方站点或镜像站点下载 Linux 内核源代码。
-
官方源代码 :
The Linux Kernel Archives -
清华大学镜像站点 :
Index of /kernel/v5.x/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
下载 .tar.xz
格式的内核源代码文件到你的本地计算机。
2. 安装依赖项和开发工具
在编译 Linux 内核之前,确保你已经安装了所有需要的开发工具和库。你可以使用以下命令安装它们:
bash
sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm dwarves
这些库和工具是内核配置、编译和调试时所需要的:
libncurses-dev
:用于menuconfig
命令的配置界面。libssl-dev
:用于内核中的 SSL 支持。libelf-dev
:用于处理 ELF 文件。flex
和bison
:用于生成词法和语法分析器。- 其他包是构建和优化内核编译所需要的工具。
3. 解压内核源代码
假设你已经将下载的内核源代码放在 /home/seed/work
目录下。你需要将 .tar.xz
文件解压到工作目录中。
执行以下命令解压源代码:
cpp
cp KERNEL_FILE.tar.xz /home/seed/work
cd /home/seed/work
sudo tar xvf KERNEL_FILE.tar.xz
解压后,你将在 /home/seed/work/
下看到以内核版本命名的目录,例如 linux-5.x
。
4. 复制当前内核配置文件
你可以使用系统当前内核的配置文件作为基础配置。通常,它存储在 /boot
目录中,文件名为 config-$(uname -r)
。
bash
cp /boot/config-$(uname -r) /home/seed/work/KERNEL_FILE/.config
这会将当前正在运行内核的配置文件复制到新解压的内核源代码目录中,以便你在编译时使用现有的配置。
5. 进入内核源代码目录并切换到 root 用户
执行以下命令切换到 root 用户,并进入内核源代码目录:
bash
sudo su
cd /home/seed/work/KERNEL_FILE
6. 清理先前的配置和编译缓存
在开始配置内核之前,你需要确保源代码树是干净的。这可以通过以下命令来完成:
bash
make mrproper # 清理所有的配置文件和编译生成的文件
make clean # 进一步清理临时文件
7. 配置内核
现在可以使用 menuconfig
命令进入内核配置界面:
bash
make menuconfig
这将会打开一个基于菜单的配置界面,你可以在里面定制你需要的内核功能。在配置完成后,保存配置并退出。保存的配置将存储在 .config
文件中。
8. 编译内核镜像和模块
完成配置后,开始编译内核镜像和内核模块。
bash
make bzImage -j$(nproc) # 编译内核镜像
make modules -j$(nproc) # 编译内核模块
bzImage
是可引导的内核镜像。-j$(nproc)
命令用于启用并行编译,$(nproc)
表示使用与系统 CPU 核心数量相同的线程数来加快编译过程。
注意:编译内核通常会花费大约 30 分钟到几个小时,具体时间取决于你的硬件性能。
你也可以合并两个命令为一个命令执行:
bash
make -j$(nproc)
这将同时编译内核镜像和模块。
9. 总结流程
- 下载并解压内核源代码。
- 安装所有必需的开发工具和依赖项。
- 复制当前内核配置文件。
- 清理之前的编译缓存和设置。
- 使用
menuconfig
进行配置。 - 编译内核镜像和模块。
完成这几个步骤之后,你就得到了新编译的 Linux 内核。接下来你可以安装并测试这个新的内核,确保它满足你的系统需求。如果需要进一步的安装和测试步骤,我可以为你提供帮助。