1.严格按照说明做,少看一点无关内容后面就一堆err了。

2.新分区大点,4G不够的,最小用8G。我用了20G的,硬盘不值钱。另外说一句,并不是4G不能够做到,而是你可能被迫删除不少有用东西,或者是移到其他位置,增加复杂度。

3.每次你进入一个section,以前针对这个包进行解压,打补丁,并修改的source都作废了。直接删除它们,然后重新解压。lfs不依赖于以前解开的源码,在任何一节的开始都不需要翻以前怎么处理(解压,打补丁,修改)源码的。你在任何一节都可以(并且必须)独立操作源码。

4.mawk会出错,装一个gawk。

5.yacc没有的时候,装bison,it’s works。

6.如果碰到见鬼的tar.xz,用tar Jxf。或者更简单的,现代tar都支持xf直接解压,不用再自己选择zjJ。

7.chapter5的流程?先用系统的编译器编译了binutils,gcc和glibc,然后再用刚刚编译好的再编译这三个,这样编译系统就统统连接到了/tools上。然后用/tools的连接编译了一堆编译用工具,bash啦,make啦。这样,就完成了编译环境的建立,/tools是一个独立于主系统的,完整而可用的编译系统。用这个编译系统编译任何东西的结果应当是相对可控的。

8.如果我是你,在chapter5完成的时候会tar czf ~/tools.tar.gz /tools。这样会让你在chapter6中犯错的时候不至于血本无归。

9.chapter6的流程?用chapter5的编译系统,编译了新系统的编译系统。当然,这个不容易,因为刚刚的编译系统所有指向都是/tools。所以lfs指导你做了不少patch。然后重复chapter5的过程,逐步把源码编译安装到正式系统中。

10.lfs真TMD的辛苦,连source code的typo都需要在书中指出和fix。。。而且lfs自己还有errata。

11.lfs的56两章看起来像是两个人写的,风格习惯不一致。chapter5用``,chapter6用$()。还有gcc-pass2的时候,cp -v XXX{,.tmp}; sed XXX.tmp … > XXX。而chapter6的binutils则是sed -i.bak。当然,有可能是因为有些系统的sed不支持-i,例如redhat的系统始终不支持netstat -nlp46,I hate it。BTW,我喜欢sed -i。

12.编译过程真心傻X,大部分都是解开源码,configure –prefix=… && make && make check && make install。这些过程好像可以用一个不知道啥脚本来简化,建议不要手工干这堆事情,没意思的。相反,倒是很多调整有些意思。