下面是我参考网上资料根据自己的实践写的
我的编译环境:ubuntu 10.4(里面的内核版本是Linux 2.6.32-30)
一、下载源代码
我是在http://www.kernel.org/ 上下载的最新的内核源代码压缩包:linux-2.6.38.2.tar.bz2(下载的日期是2011年4月12日,当然以后会有更新的版本出来)
二、解压源代码
很多教程上说应该解压到 /usr/src, 但是实际上解压到任何目录上都可以。
/usr/src下面需要root权限反而容易出问题.
进入到你的压缩包所在的目录,用下面的命令解压:
tar jfx linux-2.6.38.2.tar.bz2 -C /usr/txlkernel
(txlkernel是我自己建的目录)
现在,源代码就在 /usr/txlkernel/linux-2.6.38.2目录下
进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。
cd /usr/txlkernel/linux-2.6.38.2
三、开始编译前的准备工作
首先,清理以前编译时留下的临时文件,执行如下命令:
make mrproper
四、开始配置内核选项
从linux-2.6.32开始可以使用make localmodconfig自动精简内核,
菜鸟也能轻松精简内核 到十几MB
执行如下命令:
make localmodconfig
选择自己需要的服务项(需要选择的服务项特别多,要耐心做下去,自己凭直觉随便选,以后会慢慢明白这些服务都有哪些作用的)
五、开始编译内核
ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。
相关命令:
sudo make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=txl0.76 kernel_image
上述命令中的txl0.76大家用自己喜欢的字符代替.
输完上述命令回车之前,可以去喝杯凉茶了再过来,我编译用了30分钟左右。
六、安装内核
编译完成就是安装工作。编译好的内核在上一层目录。我的是linux-image-2.6.38.2txl0.76_2.6.38.2txl0.76-10.00.Custom_i386.deb
执行如下命令:
cd..
sudo dpkg -i linux-image-2.6.38.2txl0.76_2.6.38.2txl0.76-10.00.Custom_i386.deb
文件名很长,如果不用tab自动补足是超级麻烦的。
安装完后不用担心系统是从哪个内核启动,只要你用的版本在我的版本之后,系统会在启动的时候让你自己选择从哪个内核进去。其实是你在安装内核的时候系统自动将下面的这段代码添加到/boot/grub/grub.cfg里面,所以在启动的时候可以选择新版本的内核,反正我安装的时候是这样。
menuentry 'Ubuntu,Linux 2.6.38.2txl0.76' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,8)'
search --no-floppy --fs-uuid --set c2729b49-8316-4de9-9a80-a3472b550e0d
linux /vmlinuz-2.6.38.2txl0.76 root=/dev/sda12 ro quiet splash
}
menuentry 'Ubuntu,Linux 2.6.38.2txl0.76 (恢复模式)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,8)'
search --no-floppy --fs-uuid --set c2729b49-8316-4de9-9a80-a3472b550e0d
echo '载入 Linux ...'
linux /vmlinuz-2.6.38.2txl0.76 root=/dev/sda12 ro single
echo '载入引导虚拟磁盘 ...'
}
ok!大功告成!下次启动的时候会有两个内核版本供你选择。这样的工作虽然没有多大用处,但为以后出来做开发打下一定的基础,因为很多时候都需要在开发板上自己裁剪linux,编译,然后烧到开发板上去。
我帮我姐做的旅游网站----http://www.trip58.com(缺少点击量,看到的麻烦帮忙点击,想旅游的也可以咨询网站右边的QQ客服,呵呵,多谢!)