|
|
经过近3天的折腾,终于在Ubuntu7.04下成功安装了LFS6.2.0。
确实不容易。在看了论坛无数帖子以后,知道有大侠说在Ubuntu下LFS,比较困难,但没办法。就装了Ubuntu了。
不过总算是成功了。其中遇到了几个问题,在这里总结一哈,希望能对在Ubuntu7.04进行LFS的同志们有点帮助。
1. 软件包
软件包比较多,如果挨个下载比较麻烦。在Ubuntu7.04可以直接下载LFS6.2.0的LiveCD。将镜像挂载。
- mount -t iso9660 -o loop /yourpath/yourfilename.iso /mnt/iso
复制代码
然后在将镜像中的root.ext2挂载
- mount -o loop root.ext2 /mnt/ext2
复制代码
2.编译binutils报错unrecognized option '--hash-style=both'或类似。
这是由于GCC版本较高导致的问题。
参考http://www.linuxfromscratch.org/lfs/errata/stable/
编译binutils在。./configure 前加上CC="gcc -B/usr/bin/"
整个编译命令应为:
- CC="gcc -B/usr/bin/" ../binutils-2.16.1/configure --prefix=/tools --disable-nls
- make
- make install
- make -C ld clean
- make -C ld LIB_PATH=/tools/lib
复制代码
同样,编译GCC的时候也要这样做。
3.编译Glibc-2.3.6时出错
错误如下所示。
- ……
- /mnt/lfs/sources/glibc-build/csu/version-info.h:2: error: missing terminating " character
- /mnt/lfs/sources/glibc-build/csu/version-info.h:3: error: missing terminating " character
- /mnt/lfs/sources/glibc-build/csu/version-info.h:4: error: expected ',' or ';' before string constant
- make[2]: *** [/mnt/lfs/sources/glibc-build/csu/version.o] Error 1
- make[2]: Leaving directory `/mnt/lfs/sources/glibc-2.3.6/csu'
- make[1]: *** [csu/subdir_lib] Error 2
- make[1]: Leaving directory `/mnt/lfs/sources/glibc-2.3.6'
- make: *** [all] Error 2
复制代码
搜了半天发现是由于文件中换行符的问题。
将version-info.h修改成如下所示。
- "Compiled on a Linux 2.6.12 system on 2007-07-15.\n"
- "Available extensions:\n"
- "\n"
- " GNU libio by Per Bothner\n"
- " crypt add-on version 2.1 by Michael Glad and others\n"
- " Native POSIX Threads Library by Ulrich Drepper et al\n"
- " BIND-8.2.3-T5B\n"
- " NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk\n"
复制代码
4.内核编译
内核编译的时候要注意驱动的问题。
我的机器是Intel的板子,第一遍编译内核时无法挂载主文件系统。
搜了半天才知道要在内核中加入对Intel PIIXn chipsets support
注意要编译进内核,而不是编译成模块。即[]中是*而不是M。
另外还要注意模块对ext3文件系统的支持,最好编译进模块。
然后就是网卡驱动的问题,在编译内核要加入对网卡的支持。
否则会出现eth0 doesn't exist
首先在宿主机上使用lspci查看网卡型号
如果要使用nvidia的驱动,在编译内核时不要编译对nvidia framebuffer的支持
5.grub问题
安装Ubuntu时已经安装了grub,所以,我在LFS时没有安装grub直接使用宿主机的grub。
我在LFS时分区没有处理好,我是直接对fat分区进行操作,似乎有问题。后来又将分区删掉
重新划分结果导致grub引导出问题。如果没有一张使用grub引导的光盘,那么麻烦就大了。
如果电脑上还装了Windows的话,可以先用DOS启动盘引导使用fdisk /mbr修复引导区。
进入Windows后,安装wingrub,重新启动,在wingrub中使用命令启动Ubuntu。
进入Ubuntu后,运行
- sudo grub
- root (hd0,7)
- setup (hd0)
复制代码
重新安装grub
其中root中的 (hd0,7)是宿主机的文件系统所在的分区。
setup中的(hd0)代表将grub安装在第一个硬盘上。
因为我现在有两台电脑可以用。
所以,我主要使用ssh远程登录进行操作感觉蛮爽。
LFS成功以后,如果要进行BLFS,最后也采用ssh的方式。
应首先在LFS中装上openssh。
我是在Windows下通过putty远程登录,如果有软件包需要下载,就用迅雷,然后通过psftp上传的LFS中。
LFS只是个开始。BLFS将更复杂。
我在BLFS时,编译pango时没有生成libpangoxft-1.0.so,很是奇怪。
不知道是什么问题。
我安装了xft后,又重新编译,还是没有libpangoxft-1.0.so,真是郁闷呢。
总之,提醒各位欲进行LFS的同志们,错误是难免的,重在过程。
预祝各位编译成功。 |
|