LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 06-02-16, 17:27 第 1 帖
youbest
 
youbest 的头像
 
 
版主  
  注册日期: Jan 2005
  帖子: 1,498
  精华: 20
 

标题: [原创]制作LFS过程中各个阶段恢复工作状态的方法


更新日志
2006年8月22日:修改错字一处

前提:
  对于做过一两次LFS的朋友,想必对LFS的漫长制作时间印象深刻,特别是对机器不太好的朋友,有时候LFS的制作时间真是“可怕”,有时候不得以必须关机然后重新启动并恢复到工作状态,但对一些不太清楚LFS的工作原理的朋友,可能一时无法正确的恢复到工作状态,因此为了能成功的完成LFS,有的会开个一两天的机器不关,本人特别针对这个问题写了一些自己的经验,以下的过程全部经过测试,应该是正确的,希望能给还在LFS制作中的朋友减轻一些“痛苦”。
  为了说明方便,例子采用VMWare5.0的环境下开始的,但也同样适合使用真实机器的情况,只是用真实的机器需要在相应的磁盘设备名上修改成实际的设备名。(用VMWare只是为了说明方便,VMware本身就具有暂停的功能,所以不必计较这个问题)
  文章使用VMWare5.0虚拟的SCSI设备,并使用sda设备名,sda1用于swap,而sda2用于目标系统的根目录。
  
  以下是按照LFS6.1.1-3里面的章节数写的,如果你使用的LFS-Book与下面的章节数有出入,以章节数后面的标题为准。

开始~4.4. Setting Up the Environment
  从头开始好了,没什么好可惜的。

4.5. About SBUs~5.33. Stripping
  从现在开始一直到第五章结束,也就是完成Stripping中间的步骤中如果重新启动的恢复步骤:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.建立工具链的链接
  ln -sv $LFS/tools /
  5.创建lfs用户
  groupadd lfs
  useradd -s /bin/bash -g lfs -m -k /dev/null lfs
  passwd lfs
  chown -v lfs $LFS/tools
  chown -v lfs $LFS/sources
  su - lfs
  6.建立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
  7.检查一下
  export命令查看输出,应该是
  declare -x HOME="/home/lfs"
  declare -x LC_ALL="POSIX"
  declare -x LFS="/mnt/lfs"
  declare -x OLDPWD
  declare -x PATH="/tools/bin:/bin:/usr/bin"
  declare -x PS1="\\u:\\w\\\$ "
  declare -x PWD="/home/lfs"
  declare -x SHLVL="1"
  declare -x TERM="linux"
  基本上就恢复工作状态了。

6.1. Introduction
  这个时候也许你想睡觉关机了,那么重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
相关知识点:
  这时候已经制作好了工具链,因此可以不需要建立根目录下的tools链接了。

6.2. Mounting Virtual Kernel File Systems~6.8. Populating /dev
  这个时候如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  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 \
  /tools/bin/bash --login +h

6.9. Linux-Libc-Headers-2.6.11.2~6.37. Bash-3.0
  从现在开始一直到第六章的File-4.13之前,也就是Bash-3.0结束后,这个阶段如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  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 \
  /tools/bin/bash --login +h
  6.创建/dev下的设备文件
  mount -nvt tmpfs none /dev
  mknod -m 622 /dev/console c 5 1
  mknod -m 666 /dev/null c 1 3
  mknod -m 666 /dev/zero c 1 5
  mknod -m 666 /dev/ptmx c 5 2
  mknod -m 666 /dev/tty c 5 0
  mknod -m 444 /dev/random c 1 8
  mknod -m 444 /dev/urandom c 1 9
  chown -v root:tty /dev/{console,ptmx,tty}
  ln -sv /proc/self/fd /dev/fd
  ln -sv /proc/self/fd/0 /dev/stdin
  ln -sv /proc/self/fd/1 /dev/stdout
  ln -sv /proc/self/fd/2 /dev/stderr
  ln -sv /proc/kcore /dev/core
  mkdir -v /dev/pts
  mkdir -v /dev/shm
  mount -vt devpts -o gid=4,mode=620 none /dev/pts
  mount -vt tmpfs none /dev/shm
  6.进入编译目录
  cd /sources

6.38. File-4.13~6.58. Udev-056
  从现在开始一直到第六章的Udev-056完成之前,这个阶段如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  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.创建/dev下的设备文件
  mount -nvt tmpfs none /dev
  mknod -m 622 /dev/console c 5 1
  mknod -m 666 /dev/null c 1 3
  mknod -m 666 /dev/zero c 1 5
  mknod -m 666 /dev/ptmx c 5 2
  mknod -m 666 /dev/tty c 5 0
  mknod -m 444 /dev/random c 1 8
  mknod -m 444 /dev/urandom c 1 9
  chown -v root:tty /dev/{console,ptmx,tty}
  ln -sv /proc/self/fd /dev/fd
  ln -sv /proc/self/fd/0 /dev/stdin
  ln -sv /proc/self/fd/1 /dev/stdout
  ln -sv /proc/self/fd/2 /dev/stderr
  ln -sv /proc/kcore /dev/core
  mkdir -v /dev/pts
  mkdir -v /dev/shm
  mount -vt devpts -o gid=4,mode=620 none /dev/pts
  mount -vt tmpfs none /dev/shm
  6.进入编译目录
  cd /sources

6.59. Util-linux-2.12q~6.60. About Debugging Symbols
  从现在开始一直到第六章的Stripping Again之前,这个阶段如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  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.创建/dev下的设备文件
  mount -nvt tmpfs none /dev
  /sbin/udevstart
  mkdir -v /dev/pts
  mkdir -v /dev/shm
  mount -vt devpts -o gid=4,mode=620 none /dev/pts
  mount -vt tmpfs none /dev/shm
  6.进入编译目录
  cd /sources

6.61. Stripping Again
  如果现在重新启动,那么重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  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/bash --login
  6.创建/dev下的设备文件
  mount -nvt tmpfs none /dev
  /sbin/udevstart
  mkdir -v /dev/pts
  mkdir -v /dev/shm
  mount -vt devpts -o gid=4,mode=620 none /dev/pts
  mount -vt tmpfs none /dev/shm
  6.进入编译目录
  cd /sources

6.62. Cleaning Up~结束
  从现在开始一直到制作结束,重新开机后回到工作状态的步骤是:
  1.重新启动计算机,并从LiveCD启动
  2.加载分区
  export LFS=/mnt/lfs
  mkdir -pv $LFS
  mount /dev/sda2 $LFS
  3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
  swapon /dev/sda1
  4.加载必要的文件系统
  mount -vt proc proc $LFS/proc
  mount -vt sysfs sysfs $LFS/sys
  5.Chroot到目标系统下
  chroot "$LFS" /usr/bin/env -i \
  HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
   PATH=/bin:/usr/bin:/sbin:/usr/sbin \
  /bin/bash --login
  6.创建/dev下的设备文件
  mount -nvt tmpfs none /dev
  /sbin/udevstart
  mkdir -v /dev/pts
  mkdir -v /dev/shm
  mount -vt devpts -o gid=4,mode=620 none /dev/pts
  mount -vt tmpfs none /dev/shm
  6.进入编译目录
  cd /sources

(转载请保持文章的完整性,请注明作者和出处)

                               作者:冲天飞豹(youbest)
                               Email:youbest@sina.com
                               2006年2月16日

更新日志:
2006年8月22日:
印象深刻误写为影象深刻,已改正
由Linuxsir上的青铜镜发现并报告







__________________
青橄榄在入口的时候是苦的,过了一会你就可以长久的品味那淡淡而又清爽的甜味。

青橄榄 http://youbest.cublog.cn

青橄榄计划的第一步总算迈出来了,等待它的是万里长征.

做技术要有做技术的原则,决不拿技术做侵权的事情,更不能用来做违法的事情。工作丢了可以再找一个,原则丢了就找不回来了。

此帖于 06-08-22 12:26 被 youbest 编辑.
  youbest 当前离线   回复时引用此帖
旧 06-02-17, 21:14 第 2 帖
晨想 帅哥
 
晨想 的头像
 
 
资深版主  
  注册日期: Feb 2003
  我的住址: P.R.China
  帖子: 9,637
  精华: 9
 

这篇文章一定占用了兄弟不少的时间。非常实用,毕竟家庭电脑不能24x7的开着。

希望以后多多看到兄弟的精彩文章。







__________________
我的wiki: http://wiki.linuxgnu.org

马甲Show:终极幻想 黯然销魂 DawnFantasy FinalFantasy ArmageddonMa
  晨想 当前离线   回复时引用此帖
旧 06-02-17, 21:26 第 3 帖
youbest
 
youbest 的头像
 
 
版主  
  注册日期: Jan 2005
  帖子: 1,498
  精华: 20
 

谢版主支持。
这篇是从我另外一篇文章上节选的几个部分,因能独立成篇,所以就专门拿出来变成了一篇完整的。
其内容是经过测试的,如果有发现什么问题的,还望及时指出,及时改正。

中间有几个靠的比较近的几个章节,建议一次通过比较好。
  youbest 当前离线   回复时引用此帖
旧 06-02-17, 23:42 第 4 帖
晨想 帅哥
 
晨想 的头像
 
 
资深版主  
  注册日期: Feb 2003
  我的住址: P.R.China
  帖子: 9,637
  精华: 9
 

我都是一次性搞定所有的,基本没中途中断的。要等有时间专门测试了。

大家使用的时候,就是最好的测试了:)。
  晨想 当前离线   回复时引用此帖
旧 06-02-18, 08:30 第 5 帖
csfrank 帅哥
 
csfrank 的头像
 
 
注册会员  
  注册日期: Jun 2005
  我的住址: 上海
  帖子: 524
  精华: 20
 

春节断网了两个月,一回来就看见兄弟的牛贴,高兴!
这个帖子想必是解决了许多弟兄的头痛之事,下一版LFS手册要把这些内容加进去,如何?
  csfrank 当前离线   回复时引用此帖
旧 06-02-18, 13:38 第 6 帖
晨想 帅哥
 
晨想 的头像
 
 
资深版主  
  注册日期: Feb 2003
  我的住址: P.R.China
  帖子: 9,637
  精华: 9
 

下一版?。。你是说 6.X 中文版?
  晨想 当前离线   回复时引用此帖
旧 06-02-18, 13:44 第 7 帖
csfrank 帅哥
 
csfrank 的头像
 
 
注册会员  
  注册日期: Jun 2005
  我的住址: 上海
  帖子: 524
  精华: 20
 

引用:
作者: 终极幻想
下一版?。。你是说 6.X 中文版?
呵呵,最近比较空闲,想修订一下6.1.1,为6.1版本出个正式版,前面老是RC对不起大家







__________________
@@
  csfrank 当前离线   回复时引用此帖
旧 06-02-18, 14:09 第 8 帖
youbest
 
youbest 的头像
 
 
版主  
  注册日期: Jan 2005
  帖子: 1,498
  精华: 20
 

没问题,不过你的正式版你自己要从头到尾试一遍!
正式版,马虎不得,看你的了,我们等着你的好消息!
期待中……

此帖于 06-02-18 14:45 被 youbest 编辑.
  youbest 当前离线   回复时引用此帖
旧 06-02-23, 19:35 第 9 帖
d00m3d
 
d00m3d 的头像
 
 
资深版主  
  注册日期: Nov 2004
  帖子: 14,315
  精华: 10
 

youbest 不如把此精文写成 hints,相信被接立的机会必定很高。







__________________
nO ^^4+73R wH1<h d!5+R0z j00 42E U$1N9 7r% LpHZ 4+ l3457 oN(&
  d00m3d 当前离线   回复时引用此帖
旧 06-02-23, 20:19 第 10 帖
youbest
 
youbest 的头像
 
 
版主  
  注册日期: Jan 2005
  帖子: 1,498
  精华: 20
 

引用:
作者: d00m3d
youbest 不如把此精文写成 hints,相信被接立的机会必定很高。
我不太清楚写成hints的要求或者有什么条件,而且我英文非常的菜,如果有人愿意帮忙我不胜感激.谢谢.
  youbest 当前离线   回复时引用此帖
旧 06-02-24, 22:34 第 11 帖
good02xaut
 
good02xaut 的头像
 
 
注册会员  
  注册日期: Feb 2006
  帖子: 339
  精华: 2
 

补充一下:
从开始到第6章,
只要能够保证:PATH="/tools/bin:xxxx就可以了
其他的条件基本都没什么用:)







__________________
=============================
我的blog:
http://blog.21ic.com/blog.asp?name=good02xaut
=============================
sound,video,or net,just all.
LFS-SVN20060123安装完成
LFS ID:17037
  good02xaut 当前离线   回复时引用此帖
旧 06-02-24, 22:37 第 12 帖
soloforce 帅哥
 
soloforce 的头像
 
 
版主  
  注册日期: Dec 2004
  帖子: 2,280
  精华: 14
 

及时雨~ 刚好做到 chapter 6(还没开始), 歇一会儿,玩玩gentoo,听听歌,明天继续







__________________
Athlon Phenom II X4 940 OC 3.6G / Kingston DDR2 4G / DFI 790X-M2RS / Sapphire HD4870 /Audigy2 ZS / 22' LCD / Acbel iPower660
  soloforce 当前离线   回复时引用此帖
旧 06-02-24, 22:45 第 13 帖
youbest
 
youbest 的头像
 
 
版主  
  注册日期: Jan 2005
  帖子: 1,498
  精华: 20
 

引用:
作者: good02xaut
补充一下:
从开始到第6章,
只要能够保证:PATH="/tools/bin:xxxx就可以了
其他的条件基本都没什么用:)
你要是真的从LiveCD启动来恢复工作状态,需要的步骤是很讲究的,单靠PATH=/tools/bin是绝对不行的,也许对于有过经验的人是没什么,因为发现问题能知道怎么回事,但新手还是按照规范的方式恢复到工作状态比较好,这里不能光涂省事.
  youbest 当前离线   回复时引用此帖
旧 06-02-24, 22:59 第 14 帖
good02xaut
 
good02xaut 的头像
 
 
注册会员  
  注册日期: Feb 2006
  帖子: 339
  精华: 2
 

我现在用的就是LiveCD硬盘的环境。
而且每次开机后,就设置这一个参数。也没建立lfs用户,就是默认的,应该是root,或者0吧

发现问题还没有,会有什么问题啊?
我进行中多次用:
gcc -v 查看当前用的gcc
ldd /tools/bin/xx 查看刚刚编译出来的程序使用的lib是否正确

发现没有受开关机的影响,只要PATH,ok。
  good02xaut 当前离线   回复时引用此帖
旧 06-02-24, 23:15 第 15 帖
晨想 帅哥
 
晨想 的头像
 
 
资深版主  
  注册日期: Feb 2003
  我的住址: P.R.China
  帖子: 9,637
  精华: 9
 

硬盘记录了你修改的信息,livecd不记录的。:)。也许之间有一点什么差别吧。。
  晨想 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 22:44


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org