Linux编译内核

来源:互联网 发布:c语言怎么定义数组 编辑:程序博客网 时间:2024/06/05 14:06

编译内核不难,按部就班的来一个上午就能搞定(编译内核的过程要花费很多时间)。

本文使用的环境是: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]# lsdebug  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_642.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=15000mkswap /swap2swapon /swap2
这只是临时有效的,重启后swap分区还会变成原来的大小,但我认为这样就行了,因为我的机器内存和swap分区够大,只是编译的时候使用了太多内存。

安装内核

make install

验正并测试

cat /boot/grub/grub.conf
查看新内核是否已经添加,,而后重启系统并测试


原创粉丝点击