HCRM博客

如何从零开始在CentOS上编译Linux内核?

环境准备

1、安装开发工具:确保系统已安装必要的开发工具和库,使用以下命令安装:

sudo yum groupinstall "Development Tools"
sudo yum install ncursesdevel elfutilslibelfdevel openssldevel bc

2、下载内核源码:从内核官方网站(如[HTTPS://www.kernel.org/](https://www.kernel.org/))下载所需版本的内核源码,并解压到/usr/src/kernels/目录下。

如何从零开始在CentOS上编译Linux内核?-图1
(图片来源网络,侵权删除)
cd /usr/src/kernels/
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux4.14.14.tar.xz
tar xvJf linux4.14.14.tar.xz C /usr/src/kernels/

3、配置本地YUM源(可选):如果系统无法联网,可以配置本地YUM源以方便安装依赖包,将ISO文件挂载到某个目录,并编辑/etc/yum.repos.d/CentOSMedia.repo文件,将baseurl指向挂载目录,然后运行yum clean all && yum makecache生成缓存。

编译与安装

1、进入内核源码目录

cd /usr/src/kernels/linux4.14.14

2、配置内核选项:使用make menuconfigmake oldconfig命令配置内核选项,前者会打开一个基于文本菜单的配置界面,后者则基于当前系统的配置文件进行简单修改。

make menuconfig
或
cp /boot/config$(uname r) .config
make oldconfig

3、编译内核:根据系统配置选择合适的并行度(即j参数的值),然后执行make命令编译内核。

make j$(nproc)

$(nproc)会自动检测系统的CPU核心数,编译过程可能需要一些时间,具体取决于硬件性能和选择的编译选项。

4、安装模块:编译完成后,使用以下命令安装内核模块:

如何从零开始在CentOS上编译Linux内核?-图2
(图片来源网络,侵权删除)
sudo make modules_install

5、安装内核:将新编译的内核安装到系统中,并更新引导加载程序。

sudo make install
sudo dracut force regenerateall

6、更新GRUB配置:如果需要,可以手动编辑/boot/grub2/grub.cfg文件,将新内核添加到启动项中,或者重启系统后,使用grubby setdefault命令设置默认启动项。

7、重启系统:完成上述步骤后,重启系统并选择新编译的内核进行启动。

常见问题及解决方案

1、问题一:/boot分区空间不足

解答:在执行sudo make install时,如果遇到/boot分区空间不足的问题,可以考虑删除不必要的旧内核版本或调整分区大小,如果问题严重,可能需要重装系统并自定义分区大小。

2、问题二:UUID不匹配导致无法启动新内核

如何从零开始在CentOS上编译Linux内核?-图3
(图片来源网络,侵权删除)

解答:如果在重启后选择新内核启动时出现UUID不匹配的错误,可以通过以下步骤手动修复:找到正确的UUID(可以使用ls l /dev/disk/byuuid/命令查看);手动编辑/boot/grub2/grub.cfg文件,将错误的UUID替换为正确的值;重新生成initramfs并重启系统。

通过以上步骤,您应该能够在CentOS上成功编译并安装新的Linux内核版本,编译内核是一项复杂的任务,需要谨慎操作以避免对系统造成不可逆的损害,在进行任何更改之前,请务必备份重要数据并确保您了解所执行操作的后果。

分享:
扫描分享到社交APP
上一篇
下一篇