最近比较无聊,呵呵,,,
去装了一个LFS系统,搞了差不多一个星期(不过不是一直对着电脑一个星期,呵呵~~~)
环境:VMware 5.5
宿主系统:lfslivecd-x86-6.3-r2160 ,下载:http://ftp.osuosl.org/pub/lfs-livecd/lfslivecd-x86-6.3-r2145.iso
参考文档:手把手教你如何建立自己的Linux系统 第二版(主要)及 LFS手册6.2
目的:学习从源码安装一个LINUX系统,了解LINUX系统内部如何工作,SED的一些用法;
 
 
1、测试工具链调整错误:(第一次)
echo 'main(){}' > dummy.c
cc dummy.c
readelf -l a.out | grep 'tools'
结果无任何输出;
原因是:因为 /tools/bin/cc 这个符号链接丢失了
解决:检查/tools/bin/下面没有发现cc的链接文件
重新建立一个链接:ln -sv gcc /tools/bin/cc
重新测试OK

2、编译perl时出错
miniperlmain.o opmini.o libperl.a
libperl.a(pp.o)(.text+0x170a): In function `Perl_pp_pow':
: undefined reference to `pow'
libperl.a(pp.o)(.text+0x54d9): In function `Perl_pp_sin':
: undefined reference to `sin'
libperl.a(pp.o)(.text+0x55e5): In function `Perl_pp_cos':
: undefined reference to `cos'
libperl.a(pp.o)(.text+0x58c5): In function `Perl_pp_exp':
: undefined reference to `exp'
libperl.a(pp.o)(.text+0x5a07): In function `Perl_pp_log':
: undefined reference to `log'
collect2: ld returned 1 exit status
make: *** [miniperl] Error 1
collect2: ld returned 1 exit status
make: *** [miniperl] Error 1
原因不明,知道的说一下;
解决:经过几次的重新编译,终于OK了。
有可能是在输入过程中有输错的字符引起的。

3、gcc编译3次
在执行make -k check这一步时提示下面的错误:
make[2]: Leaving directory `/sources/gcc-build/i686-pc-linux-gnu/libiberty'
make[1]: Target `check-target' not remade because of errors.
make[1]: Leaving directory `/sources/gcc-build'
make: *** [do-check] Error 2
make: Target `check' not remade because of errors.
原因是少了make这一步就直接执行检测;
 
4、shadow 安装configure过程无法完成,
截图如下:
 
原因是因为crypt这东东没有找到,
从网上找了一下资料说这是一个密码验证的东东,,
PS:在我的印象当中当时测试工具链时好像没有问题的,我都不清楚到底那里出错了;
属于glibc这一个源码包,
重新编译glibc并重新调整工具链,再重新编译shadow,顺利完成;
 
 
5、完成后能启动但是无法登入系统
原因:root没有设置密码
解决:1.重新启动计算机,并从LiveCD启动
   2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/hda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/hda1   //根据你的分区情况修改
  4.加载必要的文件系统
  mount -v --bind /dev $LFS/dev
  mount -vt devpts devpts $LFS/dev/pts
  mount -vt tmpfs shm $LFS/dev/shm
  mount -vt proc proc $LFS/proc
  mount -vt sysfs sysfs $LFS/sys
  5.Chroot到目标系统下
  chroot "$LFS" /tools/bin/env -i \
  HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
   PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
  /bin/bash --login +h
  6.进入编译目录
  cd /sources
  export LFS=/sources
使用passwd  root进行设置密码,发现无法创建密码;
重新编译shadow后,再设置密码成功,
重启,正常启动。
 
最后总结:整个安装过程中,出现问题最多的就是GCC及GLIBC这一部分,基本上所有的问题都是在这一部分出现;也有的是命令输入的字符错误所引起的问题;
 
1、在安装过程中,一定要保证工具链的正确无误;
2、确保安装的每一个源码包在编译过程中没有出现错误(有的允许的除外)
3、在输入命令时要注意命令是否输入错误,特别注意工具链那里的( ` `  )及 单引号(‘ ’ )这两个不要搞混了;
4、手把手教你如何建立自己的Linux系统 第二版是一部很好的安装手册,但是那些命令没有写出它的作用,最好就是与LFS手册一参考。
5、发现这篇文章写得好乱,哈哈,,,,