/ 中存储网

Ubuntu编译Linux 3.0-rc4内核的方法及命令

2014-12-22 00:00:00 来源:中存储网

Linux 内核经过漫长的 2.6 版本之后终于主版本+1了,现在已放出 3.0 RC4 版,最近又有消息称 3.0 会比 2.6.39 快,喜欢折腾的你又不介意当小白鼠的话不妨试试下载 Linux Kernel 3.0 的源代码自己编译。

接下来简单讲一下在 Ubuntu 10.10 编译 Linux Kernel 3.0 RC4 的过程。因为编译内核的过程都差不多,所以理论上接下来的过程同时也适用于其他发行版(比如红帽系的 Fedora 15,接下来我会同时注出使用 Fedora 15 编译的异同),因为 3.0 还不是正式版,使用自己编译的新内核可能启动不了计算机,所以要保留当前使用的内核。

1、下载并解压缩 Linux Kernel 3.0 RC4 源代码
到官方 http://kernel.org/ 下载,得到 linux-3.0-rc4.tar.bz2 文件,把它挪到随便一个你有权限读写的文件夹,运行接下来命令解压缩并进入解压这个文件包之后的文件夹:
$ tar -jxvf linux-3.0-rc4.tar.bz2
$ cd linux-3.0-rc4

2、配置内核编译参数
先安装 ncurses 工具,这是字符版配置工具所依赖的:
$ apt-get install libncurses5 libncurses5-dev  #(Ubuntu 环境)
$ sudo yum install ncurses ncurses-devel  #(Fedora 环境)

因为新版本配置工具会自动寻找当前系统环境的配置信息(即位于 /boot 下以 config-XXX 开头的文件),所以接下来可以直接运行字符版的配置工具:
$ make menuconfig

这里有很多配置选项,一旦是尝试性的心态,则可不必理会它,直接选中菜单接下来的“Save”然后退出,配置工具会生成一个“.config”文件。

3、开始编译
$ make

编译过程从十几分钟到1、2个小时不等,视乎你计算机运行的速度。一旦CPU是4核的,可以在 make 命令后面加上“-j4”参数让编译程序同时使用4核编译,这样编译所需要的时间能减倍。

一旦编译中途意外中断,然后想重新开始编译,需要先执行接下来命令清理一下编译现场然后再编译:
$ make mrproper

(这里是漫长的等待过程)

4、安装编译好的模块和内核
内核编译好之后,使用接下来命令安装 modules:
$ sudo make modules_install

上面的Linux命令会将编译好的 modules 复制到 “/lib/modules/3.0.0-rc4” 文件夹,其中“3.0.0-rc4”是内核的版本号,你会在“/lib/modules”文件夹中看到其他版本内核的 modules,包括当前系统环境的,不要手痒把这些文件夹删除了。

然后安装编译好的内核映像文件:
$ sudo make install

上面的Linux命令会把编译文件夹里面的“arch/x86/boot/bzImage”文件复制到“/boot”,同时还会复制 config 和 System.map 文件,最后在“/boot”会多出如下3个文件:
/boot/config-3.0.0-rc4
/boot/System.map-3.0.0-rc4
/boot/vmlinuz-3.0.0-rc4

是不是发现缺少了一个 initrd.img 文件(初始ram磁盘文件)?使用接下来命令创建一个即可:
$ sudo mkinitramfs 3.0.0-rc4 -o /boot/initrd.img-3.0.0-rc4    #(Ubuntu 环境)
$ sudo mkinitrd initramfs-3.0.0-rc4.img 3.0.0-rc4   #(Fedora 环境)

5、修改 GRUB 启动菜单,增加使用新内核启动的项目
这一步可以使用 GRUB2 的自动生成工具完成
$ sudo update-grub2    #(Ubuntu 环境)
$ sudo grub2-mkconfig   #(Fedora 环境)

假如你(对新内核没什么把握)不希望修改 GRUB 启动菜单,则可以直接在启动 Linux 时手动指定新内核,方法如下:
重启计算机,在 GRUB 菜单界面(假如没有看到的话则重启计算机时按下ESC键)按“c”进入命令模式,先设置启动文件的分区,接下来假设 “/boot”位于第一块硬盘第一个分区,一旦在其他分区则把接下来的数字“1”改成“2,3,5,6,7……”等:
set root=(hd0, 1)

指定内核映像和虚拟ram磁盘文件位置:
linux /boot/vmlinuz-3.0.0-rc4 root=/dev/sda1
initrd /boot/initrd.img-3.0.0-rc4

注意,在 GRUB 命令模式下也可以按“TAB”键自动补完的,不要一个字一个字地敲。最后输入“boot”启动。

至于速度有没有比 2.6.x 的快,或许有,不过有点难察觉。