有时候觉得Linux内核版本太低,想升级一下,或者想研究一下,我们就需要以下方法了。顺带说,Linux的开放性在此也体现出来了优越性,呵呵~
总的来说,根据各大教程总结出来,在你解压的Kernel目录下执行以下步骤就完成了。
# make config
# make bzImage
# make modules
# make modules_install
# mkinitramfs -o yourinitrd.img 2.3.31.6(或mkinitrd
yourinitrd.img)
# make install
以下简单说明一下上述方法:
一、到http://kernel.org下载最新的kernel(或者你想要的版本,以下以linux-2.6.31.6为例说明,并假设在root权限,否则加sudo)。
二、拷贝到/usr/src目录下,$ cp ~/linux-2.6.31.6.tar.bz2
/usr/src。(其实在任意目录都可以,只是在这个目录看起来正规一点,呵呵~)
三、到/usr/src目录下,$ cd /usr/src。解压kernel。$ tar jxf
linux-2.6.31.6.tar.bz2。(想了解jxf参数的意思,可以tar –help)。
四、编译config,最简单的方法就是将已有的config拷贝过来。查看/boot目录,cd到linux-2.6.31.6目录,$
cd linux-2.6.31.6。譬如我的,$ cp /boot/config–2.6.28-16-generic
config。然后$make config。当然还有推荐$make menuconfig $make xconfig
可视化比较好,可以很直观,不过这两者都需要安装一些包,看你个人。make
config用文字方式列出很多很多参数,你看着选择(后面转载文章详细列出参数)。当然还有两个比较简便的方法。$ make
defconfig 就是利用默认的选项,据说Linus的i386机子就是这个配置,哈哈~$ make allyesconfig
就是将所有选项都选yes,这个编译要花的时间就很长很长了,4小时以上,当然得看你机子的配置了。
五、清楚一些不要的东西,$ make clean。当然如果你是刚下载下来,从来没编译过的,可以忽略此步骤。
六、$make bzImage。一般大于512K用这个,当然你说一定要用$make zImage我也没辙,不过还是推荐$ make
bzImage吧。
七、$ make modules。编译模块。
八、$ make modules_install。安装模块。
九、制作initrd.img文件。SCSI硬盘需要制作,IDE盘好像可以省略,我没试,因为自己的是SCSI。$
mkinitramfs -o initrd-newkernel.img
2.6.31.6。这个是在Ubuntu下的,因为Ubuntu下mkinitrd命令不可以用。至于参数可以自己用help(其实如果你敲错了,它自己就会出来提示,呵呵)
十、$ make
install。将上述的东西安装到/boot下,执行完此命令后,你就可以到/boot目录下看到System.map-2.6.31.6/vmlinuz-2.6.31.6/config-2.6.31.6。你如果看到以上文件,恭喜你,你编译成功了。记得手动把生成的initrd-newkernel.img也栲过来,想重新命名随你。
十一、接下来就是编写menu了。有的是menu.lst,有的是grub.conf,看你的发行版本来,以Ubuntu为例,添加以下代码到原来的menu之后:
title
Ubuntu new, kernel 2.6.31.6
uuid
050d4e1f-eb58-4b5b-8902-d65999fa6bb3
kernel
/boot/vmlinuz-2.6.31.6
root=UUID=050d4e1f-eb58-4b5b-8902-d65999fa6bb3 ro quiet
splash
initrd
/boot/initrd-newkernel.img.img
上面uuid和root=后面的东西都是依照原来的menu画出来的,你可以参考自己的menu。
至此,系统编译完成,你可以reboot你的电脑了。$ reboot。重启后,选择你的系统进去,享受你的过程吧。利用$
uname -r查看你的版本
参考:http://hi.baidu.com/xtlp/blog/item/ae905bdfa6b8151949540328.html