Linux 编译安装内核至指定版本
后知后觉 暂无评论

升级 Linux 自带内核,编译内核过程的记录。本文意在编译安装指定版本的内核用以实现某些功能或者兼容某些软件。

准备工作

切换至工作目录

cd /usr/src
小贴士:很多教程说必须放至在 /usr/src 目录中,实测放哪都行。要是条件允许就按官方的说法放在 /usr/src 里,并且请确认目录所在磁盘可用空间大于 10Gb)

下载源码

以 4.9.39 版本为例

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.39.tar.xz

查看当前最新内核请到内核组织官网 The Linux Kernel Archives

解包源码

xz -d linux-4.9.39.tar.xz
tar xvpf linux-4.9.39.tar

构建依赖

安装编译环境

# Debian/Ubuntu
sudo apt install build-essential
# RedHat/CentOS
sudo yum groupinstall "development tools"

开始构建

cd linux-4.9.39/

清理工作

进入目录后先做一次清除命令,预防有残余编译文件留下。

make mrproper && make clean
小贴士:若是新下载解压的,可以跳过此步骤。

创建编译参数

以下三种方法可生成编译参数文件

使用当前系统的配置参数

make defconfig

用命令获取当前内核参数

问答式全新配置

问答式配置过程,想细心配置的,可以逐个逐条去看。实在不想看的,一路按着回车按默认设置就可以了。

make localmodconfig

载入目前配置并对新配置进行询问时配置

建议用这种方式,通过命令界面配置内核,会自动载入既有的 .config 配置文件,并且只有在遇到先前没有设定过的选项时,才会要求手动设定。

make oldconfig

图形界面微调参数

生成内核配置参数后,若需要微调,可以执行命令进入图形界面对选项进行调整。

make menuconfig
小贴士:此功能需要依赖支持才能使用,若执行命令输出报错,请根据发行版不同进行安装依赖。

开始编译

make -j $(nproc)
小贴士:若机器为多核心可以使用 -j 参数指定多线程编译,大幅度提高速度。

编译内核模块

make modules && make modules_install

部署内核

安装新内核并自动配置启动文件

sudo make install
小贴士:不推荐在 Debian 系统中使用此种方式进行编译安装内核,其专属方式请参见相关链接。

使用新内核

安装新内核后必须重启系统才能读取并使用新内核

sudo reboot

清理旧内核

常见问题

报错提示 fatal error: libelf.h: No such file or directory

# Debian / Ubuntu
sudo apt install libelf-dev
# CentOS / Fedora / RedHat
sudo dnf install elfutils-libelf-devel

提示 bison: command not found

sudo apt install bison
小贴士:其他必备依赖在官网有公示,可参考

附录

相关链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。