编译内核的痛苦经历
时间:2005-12-06 来源:ys_long
内核编译经验整理
这两天要给turbblinux7.0升级内核,经过几天的经历,把经验写出来,虽然很多东西还不是很明白,但总算是成功了一次。turbolinux7.0 内核是2.4.18.从www.kernel.org下载了2.6.的最新内核。周末安装了半天未果,像module_init_tools这个软件装了半天也不成功。不知道为什么,明明装上了,在编译时就提示没装,原因找不出,决定放弃。
周一下载了2.4.19的patch,想给2.4.18打补丁,这里patch 命令的 -p0和-p1理解了好久。
当前目录如果在根目录,哪么patch里有一条/usr/src/linux这样的解包路径,如果用p0则指/usr/src/linux完全不变,解包时就要../../../patch,这样解包,路径就不会错而用p1,解包时就变成usr/src/linux,这样就要用../../patch
不知道这样理解对不对,具体的还是要摸索一下,确实不好理解,但是把包放在/usr/src 然后用gzip -dc patch.gz |patch -p0就不会错。
解包过程也是极其痛苦的,一直提示是否要覆盖,Assume -R?我也不知道是什么意思,搞了半天大概才明白,是问是否要保持恢复,很多提示信息不懂,都是e文,我就一路enter最终解出来的结果,用/usr/src/linux/script/patch-kernel /usr/src/linux-2.4.18结果还是4.18.原以为会变成4.19。失败,,,大大的失败。。。放弃。。。以后再搞。
最终决定,干脆直接下载2.4.19.tar.gz,下载完后编译,安装成功。把过程写下。
#cd /usr/src
#tar -zxvf linux-2.4.19.tar.gz (解压并解包)
#mv linux linux1 (修改原来源代码树的链接文件)
#ln -s linux-2.4.19 linux (创建新的链接)
#cd linux-2.4.19
#make menuconfig (只配了几项)具体的看以下一些链接的文章。
#make dep 创建依赖性列表,具体还不是很明白这步的意义
#make clean
#make bzImage 编译生成gzip压缩的核心映像文件
做到这一切顺利,开心 :) ,接下来就是安装了,其实安装就是几个拷贝。把编译好的2.4.19的文件拷贝到/boot 。到底要拷几个文件呢?做安装前最好能先看看这篇文章。
http://cn.tech.yahoo.com/051010/551/27gtd.html 这里有介绍Linux内核的重要文件。
#cd /boot
#mv System.map System.map1(原来是一个软链接,改名)
#mv vmlinuz vmlinuz1(原来是一个软链接,改名)
#cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.19 ;cp /usr/src/linux/System.map
#cp /usr/src/linux/arch/i386/boot/vmlinux /boot/vmlinux-2.4.19
#mkinitrd /boot/initrd-2.4.19 2.4.18 (创建一个新的启动初始化RAM磁盘映像文件)
#mv /boot/initrd /boot/initrd1 (修改原有的链接文件)
#ln -s /boot/initrd-2.4.19 /boot/initrd(创建新的链接文件)
lilo -v
重启,uname -a 一切ok,成功更新到2.4.19.