11、整个第六章的编译安装是建立在第五章的工具链之上的,所以第五章工具链的问题将直接导致第六章的失败,所以在第六章出现问题可以从第五章上找找原因,当然也可能是刚刚编译的第六章的包造成的,通常来讲,如果第六章的glibc如果编译安装没有问题的话,那么工具链通常都是正确的。
12、第六章的调整工具链(6.12. Re-adjusting the Toolchain)也是最容易出问题的章节之一,问题基本和第五章上的一样,主要是输入方面的问题:
perl -pi -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g;' \ 这行里面是单引号
-e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' \ 这行里面是单引号
`gcc --print-file specs` 这行里面是“`”
记得调整完以后一定要记得测试:
echo 'main(){}' > dummy.c
cc dummy.c
readelf -l a.out | grep ': /lib'
测试的结果一定要是
[Requesting program interpreter: /lib/ld-linux.so.2]
才行。
如果你过了这一关,则下面的编译可以放心的继续了,后面的章节都比较容易,只要注意命令不要敲错了就行。
13、到了第六章Shadow这节也要注意一下,这里有三个sed命令,这一节也经常有人出问题,出问题的结果就是导致最终的LFS启动后无法登录。要注意sed命令中的的空格、单引号和“`”、以及大小写。
sed -e's@#MD5_CRYPT_ENAB.no@MD5_CRYPT_ENAB yes@'这行中no前面是一个点,而yes前面是一个空格。
不要在安装完shadow后忘记执行
pwconv
grpconv
passwd root
否则root用任何密码都进不去系统哦。
如果已经开始启动新系统发现这个问题,那么只有重新用原系统启动,然后根据《制作LFS过程中各个阶段恢复工作状态的方法》一文中介绍的方法恢复到第六章的状态,然后再设置root密码。
14、第六章sysvinit(6.56. Sysvinit-2.86),也是在启动系统的时候比较重要的,这里比较重要的就是/etc/inittab,先严格按照LFS手册里面的写吧。
15、第六章的Udev(6.58. Udev-056)是个比较“特殊”的包,特殊在如果你不了解这个包最好只用手册上的使用的版本,因为用新的版本可能有不兼容的情况。
如果不小心使用了不兼容的版本,那么用原系统启动,然后根据《制作LFS过程中各个阶段恢复工作状态的方法》一文中介绍的方法恢复到第六章的状态(安装udev之前的状态),然后重新编译安装Udev。
16、第七章的配置Linux Console部分(7.6. Configuring the Linux Console),建议直接跳过去,默认配置通常没有问题。这里如果配置不对的话,反而可能造成在用Linux中键盘失常。
如果已经开始启动新系统发现这个问题,可以用原系统启动,然后根据《制作LFS过程中各个阶段恢复工作状态的方法》一文中介绍的方法恢复到第六章的状态,然后删除/etc/sysconfig/console文件即可。
17、第八章编译内核(8.3. Linux-2.6.11.12)
手册中有命令
loadkeys -m /usr/share/kbd/keymaps/[path to keymap] > \
drivers/char/defkeymap.c
这个是为了配合第七章的配置Linux Console部分(7.6. Configuring the Linux Console)而需要的,既然Linux Console部分前面已经跳过去了,这里也跳过去,不需要这个命令。
如果已经开始启动新系统发现这个问题,那么只有重新用原系统启动,然后根据《制作LFS过程中各个阶段恢复工作状态的方法》一文中介绍的方法恢复到第六章的状态,然后重新编译内核。
编译内核也是很有讲究的,这个有许多文章介绍,这里就不多说了,这里主要提醒一下,如果不想使用initrd的话一定要把目标系统使用的磁盘的驱动编译到内核里,而不要编译成模块,IDE的比较容易,默认就可以,但SCSI和LSI的就需要配置一下了;目标系统/目录的文件系统也要编译到内核里,不要做成模块,目标系统的/boot不要放在LVM上,否则grub无法识别出来。
18、第八章使系统可启动部分(8.4. Making the LFS System Bootable)
这里有人经常出现在grub中无法找到硬盘的情况,这里首先要排除使用了LVM,然后检查是否加载了proc文件系统,以及是否运行了/sbin/udevstart,要保证/dev中有需要的设备文件,这样grub才能正确识别。
grub中对磁盘的表示方法和/dev中的不太相同,/dev/hda2在grub中表示为(hd0,1)而/dev/hdb1表示为(hd1,0),SCSI的表示方法也不一样/dev/sda2也表示为(hd0,1)。
(转载请保持文章的完整性,请注明作者和出处)
本文的目的是希望更多的人能够顺利的踏入LFS的神秘世界,如果你有什么好的想法和建议也希望能写出来,大家一起分享。
作者:冲天飞豹(youbest)
Email:youbest@sina.com
2006年4月16日
