LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1283|回复: 1

编译内核时的问题(为什么好多文章讲的方法有些出入,不知那个才更好些)

[复制链接]
发表于 2007-11-30 11:42:27 | 显示全部楼层 |阅读模式
看了些文章,发现有好多不同的地方,有些不能理解:
在   学习编译内核── 为新手指南 一文中再最后几步时,直接

bash-3.00# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12.3
bash-3.00# cp System.map /boot/System.map-2.6.12.3
bash-3.00# cd /boot
bash-3.00# /sbin/mkinitrd initrd-2.6.12.3.img 2.6.12.3 这个是用来创新initrd映像的,不创建这个文件,有时是启动不起来的,比如提示VFS错误等;


然后再就配置grub,配置grub能看明白。

然而在别的文章里,最后几步都有
#cp /usr/src/linux/System.map /boot/System.map-2.2.16
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.2.16
#cd /boot
#rm -f System.map
#ln -s System.map-2.2..16 System.map

把以前的那个System.map删了,再重新建链接,而我查出的System.map的作用是:
System.map却是文件系统上的一个真实文件。当你编译一个新内核时,你原来的System.map中的符号信息就不正确了。随着每次内核的编译,就会产生一个新的 System.map文件,并且需要用该文件取代原来的文件

按这样的理解的话,每次编译完后,以前的那个System.map就不能用了,必须用用新产生的这个。
那在 学习编译内核── 为新手指南 一文中是怎样做的,为什么可以那样做?

还有就是关于
cd /usr/include
rm -rf asm linux scsi
ln -s /usr/src/linux/include/asm-i386 asm
ln -s /usr/src/linux/include/linux linux
ln -s /usr/src/linux/include/scsi scsi


这几步,在有的文章里 上面那几步做了,有的没做,做为什么?不做又是为什么?
发表于 2007-12-1 06:42:00 | 显示全部楼层
似乎并非这篇"学习编译内核── 为新手指南"的问题,楼主说的其他文章可能是有点过时了
Post by zhangzhh05;1789662
看了些文章,发现有好多不同的地方,有些不能理解:
在   学习编译内核── 为新手指南 一文中再最后几步时,直接

bash-3.00# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12.3
bash-3.00# cp System.map /boot/System.map-2.6.12.3
bash-3.00# cd /boot
bash-3.00# /sbin/mkinitrd initrd-2.6.12.3.img 2.6.12.3 这个是用来创新initrd映像的,不创建这个文件,有时是启动不起来的,比如提示VFS错误等;


然后再就配置grub,配置grub能看明白。
initrd 其实并非必要,但在某些发行版里却很重要,比如 Debian,这是因为内核维护者的洁癖,连最重要的文件系统的支援如 ext2 之类都编译成模块而非编入内核里,结果在没有 initrd 的二次引导情况下便无法启动了 !俺一直不用 initrd,无往而不利,只要编译内核时将必要的东西编译进内核,其余的编译成模块便行!
然而在别的文章里,最后几步都有
#cp /usr/src/linux/System.map /boot/System.map-2.2.16
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.2.16
#cd /boot
#rm -f System.map
#ln -s System.map-2.2..16 System.map

把以前的那个System.map删了,再重新建链接,而我查出的System.map的作用是:
System.map却是文件系统上的一个真实文件。当你编译一个新内核时,你原来的System.map中的符号信息就不正确了。随着每次内核的编译,就会产生一个新的 System.map文件,并且需要用该文件取代原来的文件

按这样的理解的话,每次编译完后,以前的那个System.map就不能用了,必须用用新产生的这个。
那在 学习编译内核── 为新手指南 一文中是怎样做的,为什么可以那样做?
2.6 以後的内核已无此顾虑了,无需再为每次更新内核而另配 System.map 的 symlink 了
还有就是关于
cd /usr/include
rm -rf asm linux scsi
ln -s /usr/src/linux/include/asm-i386 asm
ln -s /usr/src/linux/include/linux linux
ln -s /usr/src/linux/include/scsi scsi


这几步,在有的文章里 上面那几步做了,有的没做,做为什么?不做又是为什么?
这些也是古时流行的做法,把最後安装的内核头文件配置成系统的头文件,但这做法早已确定是不合适的了,所以新派的人都不会这样做,过中原因不是三言两语能说明的,有兴趣的话可以看看这里:

http://www.linuxsir.cn/bbs/showthread.php?t=260766
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表