Ubuntu的安装就不说了,下面直接说说编译LFS时出现的问题:
1. 编译Binutls出错
一开始的时候就出错了,比较打击人。。。
这里需要安装build-essential和texinfo两个包,因为Ubuntu中没有
2. 编译gcc出错
原因很简单,查找问题很恼火。。。
因为在输出指令的时候,输入languages时少输了末尾的s
3. 编译glibc出错
因为Ubuntu中安装的是mawk,不是gawk
这里需要安装gawk
4. 编译过程中要注意指令的大小写,否则很容易出现问题
这是个细节问题,因为Linux中是区分大小写的,所以要格外注意。因为我是一边在VMWare中操作,一边看LFS Book,LFS Book不是最大化的显示,所以输入指令的时候不容易区分大小写,像C和c,S和s,容易出错,结果编译不过去,仔细一些就可以了
5. 安装完成LFS后,启动出现问题
重新启动以引导LFS的时候卡在了这里:kernel_thread_helper 0x6/0x10,原因是根文件系统无法加载,这个问题被称作kernel panic,似乎遇到的朋友还比较多。
我之前没有编译过Linux内核,并不懂内核配置,但是LFS Book对这里没有任何说明,所以在这里郁闷了很久。最后,找到原因是Linux内核的默认编译选项对sata硬件的支持不完整,有些sata硬件的驱动没有编译进去,比如我使用的VMware 7.1中的sata驱动:
LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
这里需要修改编译选项,以支持该sata驱动。我想其他的驱动支持,道理也差不多,注意添加对应的驱动支持就可以了。可以通过lspci命令了解到系统中的pci设备都有哪些,便于在编译内核时选择正确的驱动。这里的lspci是pciutils包中的工具,没有的话需要安装。