说明:本文教程适合Ubuntu9.04,让你的内核在你的硬件上,更适合你的CPU。(本文以Pentium 4CPU为例)
注意:编译内核是危险性工作,万一编译不成功,导致系统出了问题,或者丢了数据,Linuxhobby可无法负责的,希望各位在编译前,先做好备份,或者找一台测试机来试验。再说了,养成备份这个习惯,本来就是很重要的。
第1步:下载并且安装必要的工具,为你的编译工作做好准备。
# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2
必需要源代码来编译新的内核,所以你的安装源码。
# apt-get install linux-source
如果没有用apt-get install linux-source这一步骤,请自己下载最新内核linux-kernel2.6.28.tar.bz2复制到/usr/src目录。
执行:
[root@linuxhobby ~]# cd /usr/src
解压内核源码包:
[root@linuxhobby src]# bzip2 -d linux-source-2.6.28.tar.bz2
[root@linuxhobby src]# tar xvf linux-source-2.6.28.tar
解压后,应该可以看到这个目录:linux-source-2.6.28
建立一个名为linux的软连接到源码包目录。
[root@linuxhobby src]# ln -s linux-source-2.6.28 linux
[root@linuxhobby src]# cd linux
将/boor下的config-`uname -r`文件复制到/usr/src/linux/,为什么要这样做呢,是因为有目前系统的配置。
[root@linuxhobby linux]# cp /boot/config-`uname -r` /usr/src/linux/.config,注意有个点,是个隐藏文件。
第2步:先前的都是一些准备工作,开始重头戏了,编译内核。
用什么工具呢?make menuconfig?make xconfig?make gconfig?
当然用make menuconfig了,字符模式,不需要X的支持,make xconfig、make gconfig都需要X支持,make gconfig还需要GDK支持。
执行:
[root@linuxhobby linux]# make menuconfig

这是读取.config文件后的结果,所以现在应该明白刚才那个.config到底是什么了。
现在可以通过menuconfig中简单的三个菜单“ “来选择内核模块了。关于内核的详细参数选项介绍,Linuxhobby推荐参阅金步国先生翻译的《Linux 2.6.19.x 内核编译配置选项简介》,虽然内核版本比现在最新内核低了很多,但是主要的一些选项都没有太大变动。
当一切配置选项都增删完之后,保存.config文件,这些仅仅是选择了一些内核选项而已,还没编译呢。编译的过程其实很简单,
执行:
[root@linuxhobby linux]# make-kpkg clean #将以前的一些*.o文件清理掉。
[root@linuxhobby linux]# ffakeroot make-kpkg – -initrd – -append-to-version=-mw4 kernel_image kernel_headers
注意一下 “–append-to-version=” ,“=”后面必须先使用一个“-”,以示隔离。建议在编译内核的时候,命名一个容易区别内核版本高低的名字,这样在下次又编译了一个内核的时候,依照命名以方便自己区别编译的内核版本,建议做法,比如增加日期之类的标识。这个编译过程有点漫长,根据各自的电脑配置,所花时间也不一样,还请耐心等待。
经过漫长等待后,终于内核终于编译完成了。这时候,可以在linux目录(也就是现在所在的目录)下,看到两个.deb的文件包。
在成功构建内核,你可以找到两个。 deb文件包的目录中建立你的内核如果你是在Linux的目录,看看上面的目录中的两个*.deb包,整个内核编译的主要工作已经完成,后面就是如何在开机时候正确引导这个编译好的内核了。
执行:
[root@linuxhobby linux]# dpkg -i linux-image-2.6.28.9mw4_2.6.28.9mw4-10.00.Custom_i386.deb
[root@linuxhobby linux]# dpkg -i linux-headers-2.6.28.9mw4_2.6.28.9mw4-10.00.Custom_i386.deb
现在,简查一下你的/boot/grub/menu.lst文件
[root@linuxhobby linux]# cat /boot/grub/menu.lst
因为各自电脑先前的内核不同,所以一下显示不同。
## ## End Default Options ##
title Ubuntu 9.04, kernel 2.6.28.9mw4
uuid 10517256-c276-4517-821a-4986d477bb86
kernel /boot/vmlinuz-2.6.28.9mw4 root=UUID=10517256-c276-4517-821a-4986d477bb86 ro quiet splash
quiet
title Ubuntu 9.04, kernel 2.6.28.9mw4 (recovery mode)
uuid 10517256-c276-4517-821a-4986d477bb86
kernel /boot/vmlinuz-2.6.28.9mw4 root=UUID=10517256-c276-4517-821a-4986d477bb86 ro single
title Ubuntu 9.04, kernel 2.6.28-11-generic
uuid 10517256-c276-4517-821a-4986d477bb86
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=10517256-c276-4517-821a-4986d477bb86 ro quiet splash
initrd /boot/initrd.img-2.6.28-11-generic
quiet
title Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid 10517256-c276-4517-821a-4986d477bb86
现在可以reboot测试自己编译的内核。
转载请注明出处:麦麦的不老阁 » 《Ubuntu9.04下编译内核》










Leave a comment