编译Linux 4.0内核是定制化系统、优化性能或修复漏洞的重要操作,整个过程需依赖工具链、配置选项及正确安装步骤,以下是详细编译流程:

环境准备
编译内核需先安装必要工具和依赖库,不同发行版命令略有差异:
- Ubuntu/Debian:
sudo apt-get update sudo apt-get install build-essential libncurses5-dev libssl-dev libelf-dev bison flex dwarves
- CentOS/RHEL:
sudo yum groupinstall "Development Tools" sudo yum install ncurses-devel openssl-devel elfutils-libelf-devel bison flex dwarves
这些工具包括编译器(gcc)、构建工具(make)、依赖库(ncurses、openssl等),确保编译过程无报错。
获取内核源码
Linux 4.0内核源码可通过官方镜像站下载(如kernel.org):
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.0.tar.xz
下载后解压到当前目录:
tar -xvf linux-4.0.tar.xz cd linux-4.0
配置内核选项
内核配置是编译核心,决定哪些功能被编译进内核(y)或作为模块(m),或禁用(n),常用配置方式:
| 配置方式 | 命令 | 依赖/特点 | 适用场景 |
|---|---|---|---|
| 默认配置 | make defconfig |
基于当前硬件生成默认配置 | 快速启动编译,无需手动调整 |
| 基于当前配置 | make oldconfig |
升级时保留原内核配置,新增选项需选择 | 内核版本升级 |
| 图形化界面 | make menuconfig |
需安装libncurses5-dev |
手动调整选项,直观易操作 |
| 最小化配置 | make tinyconfig |
仅保留核心功能 | 嵌入式或极简系统 |
推荐使用make menuconfig,通过方向键选择选项,空格键切换y/m/n,保存后生成.config文件。

编译内核及模块
配置完成后,执行编译命令,建议使用多线程加速(-j后跟CPU核心数,可通过nproc查看):
# 清理旧编译文件(可选,首次编译可跳过) make clean # 编译内核映像(vmlinuz)和模块 make -j$(nproc) bzImage # 编译核心映像(适用于x86) make -j$(nproc) modules # 编译内核模块
编译过程可能持续数十分钟至数小时,若报错需根据提示安装缺失依赖(如缺少某个头文件则安装对应-dev包)。
安装内核模块
模块编译成功后,安装到系统模块目录:
sudo make modules_install
此命令会将模块复制到/lib/modules/4.0/目录,并生成依赖文件。
安装内核及引导配置
内核映像和模块安装后,需将内核文件复制到/boot并更新引导加载程序(如GRUB):
# 安装内核映像和System.map文件 sudo make install # 更新GRUB配置(适用于GRUB2) sudo update-grub
make install会自动生成initrd文件(初始内存盘),并修改/boot/grub/grub.cfg,添加新内核启动项。

验证与启动
重启系统,进入BIOS/GRUB菜单,选择新内核启动项(通常显示为“Linux Linux 4.0”),启动后可通过以下命令验证内核版本:
uname -r
若输出为0,则编译安装成功。
相关问答FAQs
Q1:编译内核时提示“fatal error: gnu/stubs-32.h: No such file or directory”怎么办?
A:这是缺少32位兼容库导致的,在64位系统上安装32位开发包:
- Ubuntu/Debian:
sudo apt-get install gcc-multilib - CentOS/RHEL:
sudo yum install glibc-devel.i686
安装后重新执行编译命令即可。
Q2:新内核启动后无法进入系统,黑屏或报错“Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)”怎么办?
A:通常因内核配置缺少文件系统支持或引导参数错误,解决步骤:
- 进入GRUB菜单,选择新内核,按
e编辑启动参数,在linux行末尾添加init=/bin/bash(以单用户模式启动); - 若仍报错,可能是缺少磁盘控制器驱动(如SATA/RAID),需重新编译内核时在
Device Drivers中启用对应驱动(CONFIG_SATA_AHCI=y); - 若问题解决,则需重新编译并安装内核,确保驱动已正确配置。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33897.html