Ubuntu 编译 Linux 3.0-rc4

27 Jun
2011
# 作者: ivarptr / / 本文采用CC BY-NC-SA 2.5协议授权,转载请注明本文链接

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 还不是正式版,使用自己编译的新内核可能启动不了计算机,所以要保留当前使用的内核。@ivarptr

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 内核的“系统监视器”截图:

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

文章来源

加入我们 / 来 Wow!Ubuntu 问答社区参与更多讨论

20 Responses to Ubuntu 编译 Linux 3.0-rc4

Avatar

Mucid

Firefox 5.0 Firefox 5.0 Windows 7 Windows 7

June 27th, 2011 at 2:51 pm

这3.7GB的内存好抽象……

Chromium 12.0.742.91 Chromium 12.0.742.91 Ubuntu 10.04 Ubuntu 10.04

wolf Reply:

@Mucid,

我的4G内存在linux X64里也只能认到 3.7G……不知道为何……
在32位里才只能认到2G多一点点 = =|

Google Chrome 12.0.742.100 Google Chrome 12.0.742.100

ivarptr Reply:

@wolf, 主板的集成显卡会占用部分内存

Chromium 12.0.742.91 Chromium 12.0.742.91 Ubuntu 10.04 Ubuntu 10.04

wolf Reply:

@ivarptr,
问题是我已经在bios里面把集显关掉了……

Google Chrome 12.0.742.124 Google Chrome 12.0.742.124 GNU/Linux x64 GNU/Linux x64

LampMan Reply:

@wolf, 计算方式不同而已. 假如芯片制造商是是以 1000KB = 1MB 来转换的话, 那么 4GB = 4*1000MB = 4*1000*1000KB. 这时候再假如, OS 是以 1024KB = 1MB 来转换的话, 那么你眼中的 4GB / (1.024*3) = OS 中的 3.7 GB.

Firefox 6.0 Firefox 6.0 GNU/Linux x64 GNU/Linux x64

nick Reply:

开什么玩笑。内存芯片的容量都是按照2进制计算的。闪存同理。
这里的容量误差可能是系统调用某种函数把本来就正确的内存容量又缩小了一次。

Firefox 6.0 Firefox 6.0 GNU/Linux x64 GNU/Linux x64

nick Reply:

4GiB的内存一定是4*1024*1024*1024*8bit=4GiB。

Firefox 8.0 Firefox 8.0 Ubuntu Ubuntu

Just Fancy Reply:

@wolf, 没有吧,我32位的,正常识别3G...

Avatar

fx

Unknown Unknown Unknown Unknown

June 27th, 2011 at 5:20 pm

3.0装在10.10上会不能用nvidia的闭源驱动和virtualbox吧?

Avatar

Boneflame

Google Chrome 14.0.801.0 Google Chrome 14.0.801.0 GNU/Linux GNU/Linux

June 27th, 2011 at 5:30 pm

等正式版然后yaourt -Syua

Avatar

windboy

Firefox 5.0 Firefox 5.0 GNU/Linux GNU/Linux

June 27th, 2011 at 5:43 pm

包括当前系统环境的,不要手痒把这些文件夹删除了。

-------------------------

+1

曾经手痒过N次,蛋疼的开不了机

Avatar

123

Firefox 5.0 Firefox 5.0 GNU/Linux GNU/Linux

June 27th, 2011 at 6:03 pm

不敢啊,怕悲剧

Chromium 12.0.742.91 Chromium 12.0.742.91 Ubuntu 10.04 Ubuntu 10.04

error Reply:

@123, 10.04安装2.6.39rc4后异常悲剧,幸好当时偷懒没有把就内核删掉,不然就屎定了。现在对内核敬而远之。还是等12.04吧

Avatar

Boild

Google Chrome 12.0.742.105 Google Chrome 12.0.742.105 GNU/Linux GNU/Linux

June 27th, 2011 at 9:50 pm

make nconfig比make menuconfig好用

Firefox 8.0 Firefox 8.0 GNU/Linux x64 GNU/Linux x64

z Reply:

@Boild, 谢谢,

Avatar

Leo Ding

Google Chrome 14.0.797.0 Google Chrome 14.0.797.0 GNU/Linux GNU/Linux

June 28th, 2011 at 9:29 am

想看具体的性能报告 ……

Avatar

vincentltz

Google Chrome 12.0.742.112 Google Chrome 12.0.742.112 GNU/Linux GNU/Linux

July 1st, 2011 at 9:16 pm

悲剧啊,装好新内核后,声卡好像不工作了。现在处于无声状态。回到老的内核也没有用。。。

Avatar

windboy

Firefox 5.0 Firefox 5.0 GNU/Linux GNU/Linux

July 21st, 2011 at 9:16 pm

又看一遍

Avatar

vincentltz

Google Chrome 14.0.835.202 Google Chrome 14.0.835.202 GNU/Linux GNU/Linux

October 15th, 2011 at 4:41 pm

如何删除呢???痛苦!!!

Avatar

静 忘 天 空

WordPress 3.3.1 WordPress 3.3.1

February 7th, 2012 at 12:12 pm

[...] 参考《Ubuntu 编译 Linux 3.0-rc4》上的内容: [...]

top