编译内核不难,按部就班的来一个上午就能搞定(编译内核的过程要花费很多时间)。
本文使用的环境是:CentOS 6.9(linux-4.9.39-29.el6.x86_64),要编译的内核是linux-3.16.49
内核可以到Linux内核官网下载,下载完整内核包(后缀是tar.xz)即可,但这要注意内核版本是否适用于你的开发版本,比如我用最新的linux-4.13.10就安装不成功。
下载完成后解压到/usr/src目录:
[root@localhost 下载]# tar xf linux-4.9.59.tar.xz -C /usr/src/
[root@localhost 下载]# ls /usr/src/
debug kernels linux-4.9.59
配置内核的方法有很多种:
make config:遍历选择所要编译的内核特性
make allyesconfig:配置所有可编译的内核特性
make allnoconfig:并不是所有的都不编译,而是能选的都回答为NO,只有必须的都选择为YES
make menuconfig:这种就是打开一个文件窗口选择菜单
make kconfig:KDE桌面环境下,并且安装了qt开发环境
make gconfig:Gnome桌面环境,并且安装gtk开发环境
其实这些配置我是没看懂的(当然网上有很多说明文档),我是直接使用make oldconfig在现有的内核设置文件基础上建立一个新的设置文件,只会向用户提供有关新内核特性的问题
[root@bogon ye]# cd /usr/src
[root@bogon src]# ls
debug kernels linux-3.16.49
[root@bogon src]# cd linux-3.16.49/
[root@bogon linux-3.16.49]# make oldconfig
当然也可以复制当前系统上的/boot/config文件到该目录覆盖这个文件,再修改一下里面的配置(一般没有特殊要求默认即可)
cp /boot/config-4.9.39-29.el6.x86_64 .config
注:
make clean 删除大多数的编译生成文件, 但是会保留内核的配置文件.config, 还有足够的编译支持来建立扩展模块
make mrproper 删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件
make -j 4
-j 可以指定用几个进程同时编译,建议小于或等于你的cpu个数(默认是1)
make modules_install
安装成功后可以到/lib/modules查看:
[root@bogon linux-3.16.49]# ls /lib/modules/
2.6.32-431.el6.x86_64 3.16.49 4.9.58-29.el6.x86_64
2.6.32-696.6.3.el6.x86_64 4.9.39-29.el6.x86_64
注意:这里可能会遇到内存不足的错误:
make: *** [_modinst_post] 错误 137
增大swap分区大小即可:
dd if=/dev/zero of=/swap2 bs=1M count=15000
mkswap /swap2
swapon /swap2
这只是临时有效的,重启后swap分区还会变成原来的大小,但我认为这样就行了,因为我的机器内存和swap分区够大,只是编译的时候使用了太多内存。
make install
cat /boot/grub/grub.conf
查看新内核是否已经添加,,而后重启系统并测试