|
|
发表于 2005-11-9 09:27:50
|
显示全部楼层
Post by yhyzh
我这里blogspot.com好象都连接不上,我原来想在那里建一个blog的,因此做罢。
我在LFS里面还是没有找到这个问题的答案。不知道hints里面有没有。
郁闷!停电了!昨天安装的东西都没了 (第五章)
没有什么经验可以借鉴的,自己慢慢捣腾吧!以下是恢复的步骤!
首先当然是以livecd启动,root登陆了
export LFS=/mnt/lfs
echo $LFS
mount /dev/hda6 $LFS
ln -s $LFS/tools /
下面都是为了以lfs用户登陆做准备了
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
su - lfs
在以root登陆看,source和tools目录的ower还是lfs,呵呵
echo $LFS 啥也没有,那我们就重新配置一下lfs的环境
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
source ~/.bash_profile
echo $LFS 呵呵,这下行了
仔细看了一下在第五章的目的主要是建立一个静态开发平台,
第一阶段——依赖host system安装binutils,gcc,glibc,然后通过调整toolchain使下面的调用glibc不依赖host system,而使用新安装的glibc。
binutils安装依赖:Bash, Bison, Coreutils, Diffutils, Flex, GCC, Gettext, Glibc, Grep, M4, Make, Perl, Sed, Texinfo
gcc安装依赖:Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo
glibc安装依赖:Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo
binutils-pass1的目的安装连接器,汇编器,gcc的目的是安装编译器,并通过下面的命令实现用cc调用的是gcc,ln -s gcc /tools/bin/cc,然后是安装glibc,最后调整toolchain,通过执行make -C ld install使有东西都连接到 /tools/lib 里面的库文件,通过修正 GCC 的 specs 文件(把所有的 “/lib/ld-linux.so.2” 都替换成 “/tools/lib/ld-linux.so.2” 就行了),来使它指向新的动态连接器.
第二阶段——通过连接到新的 Glibc ,安装不依赖host system glibc的bintuils,gcc
然后为了测试GCC和Binutils是否工作正常,需要安装测试程序。这需要安装Tcl,Expect 和 DejaGNU三个包(安装好后需要测试host system 的pty,用命令expect -c "spawn ls"测试)。然后在继续安装bintuils,gcc pass 2,等等。
通过以上这个思路,在进行以下测试:
$expect -c "spawn ls" 测试pty
$cd ~$echo 'main(){}' > dummy.c
$cc dummy.c
$readelf -l a.out grep ': /tools'
如果正常:$rm dummy.c a.out
继续安装
在进行到6.9章后关机重新继续安装需要进行的步骤
开机后运行前面第五章断电后需要进行的步骤,在做如下操作:
mkdir -p $LFS/{proc,sys}
mount -t proc proc $LFS/proc
mount -t sysfs sysfs $LFS/sys
mount -f -t ramfs ramfs $LFS/dev
mount -f -t tmpfs tmpfs $LFS/dev/shm
mount -f -t devpts -o gid=4,mode=620 devpts $LFS/dev/pts
chroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /tools/bin/bash --login +h
chown -R 0:0 /tools
6.5的Creating Directories 及6.66.6. Creating Essential Symlinks 经查看不需要在重新建立
6.7.的root shell环境也都还在,不需重建passed和group,
6.8.1的Creating Initial Device Nodes也都还在
但是6.8.2Mounting ramfs and Populating /dev 需重新建立
mount -n -t ramfs none /dev
/tools/sbin/udevstart
ln -s /proc/self/fd /dev/fd
ln -s /proc/self/fd/0 /dev/stdin
ln -s /proc/self/fd/1 /dev/stdout
ln -s /proc/self/fd/2 /dev/stderr
ln -s /proc/kcore /dev/core
mkdir /dev/pts
mkdir /dev/shm
mount -t devpts -o gid=4,mode=620 none /dev/pts
mount -t tmpfs none /dev/shm |
|