CentOS 编译内核
在CentOS上编译Linux内核涉及多个步骤,从环境搭建、源码获取到最终编译和安装,以下是详细步骤:
搭建编译环境
1、安装基础工具:确保系统安装了必要的编译工具,使用以下命令安装GCC、G++、Make等工具:
```bash
sudo yum groupinstall "Development Tools" y
```
2、安装额外依赖:根据需要安装其他依赖包,如bc、ncursesdevel等:
```bash
sudo yum install bc ncursesdevel y
```
下载并解压内核源码
1、下载内核源码:可以从[the Linux Kernel Archives](https://www.kernel.org/)下载所需版本的内核源码。
```bash
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux4.1.16.tar.gz
```
2、解压源码:将下载的源码包解压到/usr/src/kernels
目录:
```bash
sudo tar zxvf linux4.1.16.tar.gz C /usr/src/kernels/
```
配置编译参数
1、进入源码目录:
```bash
cd /usr/src/kernels/linux4.1.16/
```
2、复制现有内核配置(可选):为了保持与当前系统的兼容性,可以将现有的内核配置文件复制到新内核源码目录中:
```bash
sudo cp /boot/config$(uname r) ./.config
```
3、更新配置:运行make oldconfig
命令,该命令会基于现有配置文件生成新的配置文件,用户可以根据提示进行修改:
```bash
make oldconfig
```
编译内核
1、查看CPU信息:确定系统中CPU的数量,以便并行编译提高效率:
```bash
cat /proc/cpuinfo | grep processor | wc l
```
2、执行编译:使用make
命令进行编译,j
选项指定并行编译的任务数:
```bash
make j$(nproc)
```
安装内核模块和内核镜像
1、安装模块:将编译好的内核模块安装到系统中:
```bash
sudo make modules_install
```
2、安装内核:将编译好的内核镜像安装到引导程序中:
```bash
sudo make install
```
更新GRUB配置并重启系统
1、生成GRUB配置文件:
```bash
sudo dracut force
```
2、重启系统:
```bash
sudo reboot
```
3、选择新内核启动:在GRUB菜单中选择新安装的内核版本进行启动。
验证新内核版本
1、查看当前内核版本:登录系统后,使用以下命令确认是否成功加载新内核:
```bash
uname r
```
常见问题及解决方案
1、问题一:/boot分区空间不足
解决方案:清理旧内核或扩展/boot
分区,可以使用如下命令删除旧内核:
```bash
sudo packagecleanup oldkernels count=1
```
2、问题二:UUID不匹配
解决方案:手动注册新内核,首先删除错误的启动项,然后手动复制新的内核镜像和配置文件到启动分区,并使用dracut
生成新的启动文件:
```bash
sudo cp /usr/src/kernels/linux4.1.16/arch/x86_64/boot/bzImage /boot/vmlinuz4.1.16
sudo cp /usr/src/kernels/linux4.1.16/.config /boot/config4.1.16
sudo dracut kver 4.1.16 k /lib/modules/4.1.16/ kernelcmdline root=UUID=[启动分区的UUID] initramfs4.1.16.img
```
FAQs
1、如何在编译时加快速度?
解答:可以通过增加j
选项的值来提高并行编译任务数,make j$(nproc)
,其中$(nproc)
表示当前系统的CPU核心数。
2、如何避免因分区空间不足导致的错误?
解答:可以在编译前检查并清理/boot
分区中的旧内核,或者扩大/boot
分区的空间。