LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1052|回复: 10

机器重新启动以后继续LFS需要注意一些什么?

[复制链接]
发表于 2005-11-8 15:11:27 | 显示全部楼层 |阅读模式
原来编译过的软件应该不用再编译了吧?

   但是某些调整,比如说gcc编译后的一些调整应该再做一次吧?

   请方家谈谈。
发表于 2005-11-8 15:20:55 | 显示全部楼层

其实书上都有的

Post by yhyzh
原来编译过的软件应该不用再编译了吧?

不用
Post by yhyzh
  但是某些调整,比如说gcc编译后的一些调整应该再做一次吧?

不用
Post by yhyzh
  请方家谈谈。

在第五章中中断要查环境变量LFS以及/tools,如果是chroot环境中中断则要重新进入chroot环境。
回复 支持 反对

使用道具 举报

发表于 2005-11-8 15:24:21 | 显示全部楼层
可以看看我的blog(虽然还没安装成功,呵呵):http://lfs6.blogspot.com/,前几天刚弄明白这个问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-8 19:20:04 | 显示全部楼层
Post by cfed
可以看看我的blog(虽然还没安装成功,呵呵):http://lfs6.blogspot.com/,前几天刚弄明白这个问题


我是很想看看,可是连接不上。能不能贴在这里。
回复 支持 反对

使用道具 举报

发表于 2005-11-8 22:26:38 | 显示全部楼层
cfed兄的连接把",前几天刚弄明白这个问题"都包括在[/url]内,所以连不上

键入http://lfs6.blogspot.com/ 就可以了

BTW,yhyzh兄也应先熟读LFS手册,置顶有中文译本
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-8 23:37:36 | 显示全部楼层
Post by d00m3d
cfed兄的连接把",前几天刚弄明白这个问题"都包括在[/url]内,所以连不上

键入http://lfs6.blogspot.com/ 就可以了

BTW,yhyzh兄也应先熟读LFS手册,置顶有中文译本


我这里blogspot.com好象都连接不上,我原来想在那里建一个blog的,因此做罢。

我在LFS里面还是没有找到这个问题的答案。不知道hints里面有没有。
回复 支持 反对

使用道具 举报

发表于 2005-11-8 23:45:14 | 显示全部楼层
yhyzh兄在第1帖的问题,看了LFS手册便知道答案了

这视乎你要的是什麽,原来编译过的软件未必需要再编译的
回复 支持 反对

使用道具 举报

发表于 2005-11-9 01:10:20 | 显示全部楼层
yhyzh兄,非常抱歉!没有看清楚你的标题便胡乱作答 :beat

你是在哪一章节重启?

若在第6章,那麽6.1-6.3节已有说明。
估计是第5章,对不?在第5章,已编好的软件不用再编了,tool chain调整是应该再做一次的。

对不起!请yhyzh兄原谅 :sorry  :sorry  :sorry
回复 支持 反对

使用道具 举报

发表于 2005-11-9 02:38:21 | 显示全部楼层
不确定,我觉得toolchain调整做一次就够了。

你是在第几章?chroot前还是后?
回复 支持 反对

使用道具 举报

发表于 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
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表