使用的版本是6.3,下面摘录构建的时候的注意事项和问题,前后用了5天时间
1. livecd启动的时候,从lfs用户切换会root,用命令exit;
2. lfs 预先的设定:把源码包从/lfs-sources复制到/mnt/lfs/sources目录,然后你会解压文件源码包,然后进入需要源码包的目录,然后就是文档第5章中的操作了;
3. 5.4编译gcc的时候,不要先打补丁;
4. 在非gui界面,用 lynx 阅读lfs文档,运行greeting命令,可以查看lfs文档在哪里,6.3是/usr/share/LFS-BOOK-6.3-HTML中;
如果要运行命令,命令选项太长,怕打错,需要复制文档中的命令,但是lynx没法直接复制,可以先用p命令打印到文件中,然后用vim打开文该文件,然后再用split命令新建一个专门保存需要执行的命令的文件,然后用vim复制到新建的文件中,保存后,在终端用source command-file执行该命令,有点曲折,至少不用怕打错字,影响后面的编译了;
5. 执行6.3 中的命令之前要先切换到 root 帐号,但是文档未说明这个切换,切换之后没有产生权限问题,之后lfs帐号基本被搁置了;
6. 6.12 GCC-4.1.2 是第三次编译gcc,由于前面第二次对gcc源码包做了修改还打了补丁,这里不要使用前一次遗留下来的源码,重新解压gcc-4.1.2.tar。
这个应该又是LFS一个没有说明的默认操作方式:每次编译需要重新解压源码包,如果上次没有修改,当然可以重新使用;
7. 系统构建完成后,启动出现问题:
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Insert root floppy and press ENTER
VFS: Cannot open root device "sda9" or unknow-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
最后参考:http://www.linuxeden.com/html/newbie/20100220/70680.html,确实是SATA 驱动的问题,解决方法也摘录下来:
--- 在宿主机查看硬件配置
$ lspci | grep -i "sata"
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller (rev 01)
$ lspci | grep -i "ide"
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
--- 内核选项配置
$ make menuconfig
Device Drivers
|---> SCSI device support
|---> <*> SCSI device support
|---> <*> SCSI disk support
|---> <*> Serial ATA (prod) and Parallel ATA (experimental) drivers
|---> <*> AHCI SATA support
|---> <*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support (NEW)
|---> <*> Intel PATA old PIIX support (NEW)
File systems
|---> <*> Ext3 journalling file system support
|---> [*] Ext3 extended attributes
|---> [*] Ext3 POSIX Access Control Lists
--- 验证配置选项
$ grep -i sata .config | grep "^[^#]"
CONFIG_SATA_AHCI=y
$ grep -i scsi .config | grep "^[^#]"
CONFIG_SCSI=y
CONFIG_SCSI_NETLINK=y
CONFIG_SCSI_WAIT_SCAN=m
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_AIC7XXX=y
CONFIG_SCSI_AIC79XX=y
$ grep -i ahci .config | grep "^[^#]"
CONFIG_SATA_AHCI=y
$
Q.E.D. 重新编译内核,重启,引导成功