guides14/guides内核编译教程:从零开始定制你的Linux内核

guides14/guides内核编译教程:从零开始定制你的Linux内核

为什么要定制Linux内核?

编译内核能让你打造既精简又功能丰富的系统,测试补丁和优化,真正掌控你的Linux体验。无论你是想为旧硬件创建轻量级内核,还是为高性能工作站添加特定驱动,本指南都能帮你从零开始完成整个过程。

准备工作

开始前请确保:

  • 已安装内核源码和构建工具
  • 拥有root或sudo权限
  • 备份所有重要文件
  • 准备好Live CD/USB作为应急工具

查看当前内核版本:

uname -r

检查硬件信息(有助于确定需要哪些驱动):

lspci -k    # 显示硬件及使用的内核模块
lsmod       # 列出当前加载的内核模块

获取内核源码

下载源码

从kernel.org获取最新稳定版内核:

wget https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/snapshot/linux-stable-rc-<VERSION>.tar.gz
tar -xvzf linux-<VERSION_NUMBER>.tar.xz
cd linux-<VERSION_NUMBER>/

清理源码目录

如果是重新编译,清理之前的编译文件:

make clean      # 清理编译文件,保留配置
make mrproper   # 彻底清理,包括配置文件(需备份配置)

生成配置文件

配置文件(.config)决定内核包含哪些功能和驱动,有多种生成方式:

选项1:使用当前系统配置

cp -v /boot/config-$(uname -r) .config
# 或从运行中的内核获取
zcat /proc/config.gz > .config

选项2:默认配置

make defconfig  # 生成默认配置

选项3:最小化配置

make localmodconfig  # 仅包含当前加载的模块
make tinyconfig      # 超小配置,需手动添加必要功能

配置内核(可选)

通过菜单界面定制内核功能:

make menuconfig

在菜单中:

  • Y*:将功能直接编译进内核
  • M:编译为可加载模块
  • N或空格:不包含该功能

H查看帮助,按/搜索功能,完成后保存配置。

编译内核

快速编译(推荐)

make -j $(nproc) all modules_install install
  • -j $(nproc):使用所有CPU核心加速编译
  • all:同时编译内核和模块
  • modules_install:安装模块
  • install:安装内核到/boot目录

分步编译(适合学习)

  1. 编译内核镜像:
make -j $(nproc) bzImage
  1. 安装内核:
make install
  1. 编译并安装模块:
make -j $(nproc) modules
make modules_install

生成initramfs

initramfs包含启动必需的驱动和工具:

# 使用mkinitrd
mkinitrd -o /boot/initrd.img

# 或使用update-initramfs
update-initramfs -u

应用内核补丁(高级)

内核补丁能添加新功能或优化性能,常用补丁包括:

应用补丁示例:

cd /usr/src/linux-<VERSION_NUMBER>
wget <PATCH_URL>
patch -p1 < <PATCH_FILE>

编译单个模块

无需重新编译整个内核,可单独编译模块:

cd linux-<VERSION_NUMBER>/
make modules_prepare
make M=<模块目录>
cp <模块目录>/<模块名>.ko /lib/modules/$(uname -r)/
depmod -a

使用DKMS自动更新模块

DKMS能在内核更新时自动重新编译模块:

  1. 创建DKMS配置文件:
mkdir /usr/src/<MODULE>-<VERSION>/
vi /usr/src/<MODULE>-<VERSION>/dkms.conf
  1. 配置文件内容:
PACKAGE_NAME="<MODULE>"
PACKAGE_VERSION="<MODULE_VERSION>"
BUILT_MODULE_NAME[0]="<MODULE>"
DEST_MODULE_LOCATION[0]="/kernel/<SECTION>/<MODULE>/"
AUTOINSTALL="yes"
  1. 安装模块:
dkms add -m <MODULE> -v <MODULE_VERSION>
dkms build -m <MODULE> -v <MODULE_VERSION>
dkms install -m <MODULE> -v <MODULE_VERSION>

完成与测试

编译安装完成后,重启系统并在引导菜单选择新内核:

shutdown -r now

验证新内核是否正常运行:

uname -r

如需回滚,可在引导菜单选择旧内核。更多高级配置和故障排除技巧,请参考项目文档:KERNEL.mdINSTALLATION.md

祝你享受定制内核带来的强大控制力!🚀

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值