直接用源码编译安装linux内核核心三步:准备源码和工具链、配置功能、编译并安全装入系统;需从kernel.org镜像下载tar.xz源码,解压至/usr/src,安装build-essential等依赖,复制当前config并make menuconfig定制,执行make -j$(nproc)、sudo make modules_install和sudo make install,最后重启验证uname -r。

直接用源码编译安装 Linux 内核,核心就三件事:准备好源码和工具链、配置你想要的功能、编译并安全装入系统。整个过程不难,但每一步都有关键细节,错一步可能进不了系统。
下载源码与准备编译环境
去 https://cdn.kernel.org/pub/linux/kernel/ 或 https://mirrors.edge.kernel.org/pub/linux/kernel/ 找你需要的版本(比如长期支持版 6.6.x 或 5.10.x)。推荐选 longterm 分类下的 tar.xz 包。
解压到 /usr/src/ 是惯例做法,方便后续管理:
- tar -xf linux-6.6.25.tar.xz -C /usr/src/
- cd /usr/src && ln -sf linux-6.6.25 linux
安装必要依赖(Ubuntu/Debian):
- sudo apt update
- sudo apt install build-essential libncurses-dev flex bison libssl-dev libelf-dev
配置内核功能(.config 文件)
配置决定了哪些驱动、文件系统、调试选项会被编译进去。别从头手写,用已有配置起步最稳:
- cp /boot/config-$(uname -r) .config
- make menuconfig
启动后按方向键导航,空格切换[*](内置)或[M](模块),比如想让 NTFS 可读写,就找到:
File systems → DOS/FAT/NT Filesystems → NTFS file system support → 按空格设为 M
退出时选 Save,确保 .config 被保存。这步跳过或乱配,后面可能缺驱动、起不来。
编译与安装模块
先清理旧残留(尤其重试时):
- make mrproper
- make clean
正式编译(用多核加速,比如 4 核就写 -j4):
- make -j$(nproc)
- sudo make modules_install
注意:modules_install 会把模块复制到 /lib/modules/新版本号/,它不会动旧内核模块,但若磁盘空间不足或权限异常,可能导致模块复制失败甚至覆盖出错。建议提前 df -h /lib/modules 看剩余空间。
安装内核镜像与更新启动项
生成的内核镜像在源码根目录下,名字通常是 vmlinuz(x86_64)或 Image(ARM):
- sudo make install
这条命令实际做了三件事:
– 把 vmlinuz 和 System.map 复制到 /boot/(加版本前缀)
– 把 config-* 复制过去
– 自动调用 update-grub(Ubuntu/Debian)或 grubby(RHEL/CentOS)更新启动菜单
完成后重启,开机时在 GRUB 菜单里选新内核。验证是否生效:
- uname -r # 应显示你刚编译的版本号,比如 6.6.25
- ls /lib/modules/ | grep 6.6.25 # 确认模块目录存在











