Ubuntu 编译 Linux 3.0-rc4 内核

RayDon 2011-06-28

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

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

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

上面的命令会把编译文件夹里面的“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”启动。下面帖一张使用 3.0 内核的“系统监视器”截图:

Ubuntu 编译 Linux 3.0-rc4 内核

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

相关推荐