|
|
第 1 帖 | |
|
|
标题: [原创]制作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 编辑. |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
这篇文章一定占用了兄弟不少的时间。非常实用,毕竟家庭电脑不能24x7的开着。
希望以后多多看到兄弟的精彩文章。
__________________
我的wiki: http://wiki.linuxgnu.org 马甲Show:终极幻想 黯然销魂 DawnFantasy FinalFantasy ArmageddonMa |
|
|
|
|
|
|
|
第 3 帖 | |
|
|
谢版主支持。
这篇是从我另外一篇文章上节选的几个部分,因能独立成篇,所以就专门拿出来变成了一篇完整的。 其内容是经过测试的,如果有发现什么问题的,还望及时指出,及时改正。 中间有几个靠的比较近的几个章节,建议一次通过比较好。 |
|
|
|
|
|
|
|
第 4 帖 | |
|
|
我都是一次性搞定所有的,基本没中途中断的。要等有时间专门测试了。
大家使用的时候,就是最好的测试了:)。 |
|
|
|
|
|
|
|
第 5 帖 | |
|
|
春节断网了两个月,一回来就看见兄弟的牛贴,高兴!
这个帖子想必是解决了许多弟兄的头痛之事,下一版LFS手册要把这些内容加进去,如何? |
|
|
|
|
|
|
|
第 6 帖 | |
|
|
下一版?。。你是说 6.X 中文版?
|
|
|
|
|
|
|
|
第 7 帖 | ||
|
|
引用:
![]()
__________________
@@ |
||
|
|
|
||
|
|
第 8 帖 | |
|
|
没问题,不过你的正式版你自己要从头到尾试一遍!
正式版,马虎不得,看你的了,我们等着你的好消息! 期待中…… 此帖于 06-02-18 14:45 被 youbest 编辑. |
|
|
|
|
|
|
|
第 9 帖 | |
|
|
youbest 不如把此精文写成 hints,相信被接立的机会必定很高。
![]()
__________________
nO ^^4+73R wH1<h d!5+R0z j00 42E U$1N9 7r% LpHZ 4+ l3457 oN(& |
|
|
|
|
|
|
|
第 10 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 11 帖 | |
|
|
补充一下:
从开始到第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 |
|
|
|
|
|
|
|
第 12 帖 | |
|
|
及时雨~ 刚好做到 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 |
|
|
|
|
|
|
|
第 13 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 14 帖 | |
|
|
我现在用的就是LiveCD硬盘的环境。
而且每次开机后,就设置这一个参数。也没建立lfs用户,就是默认的,应该是root,或者0吧 发现问题还没有,会有什么问题啊? 我进行中多次用: gcc -v 查看当前用的gcc ldd /tools/bin/xx 查看刚刚编译出来的程序使用的lib是否正确 发现没有受开关机的影响,只要PATH,ok。 |
|
|
|
|
|
|
|
第 15 帖 | |
|
|
硬盘记录了你修改的信息,livecd不记录的。:)。也许之间有一点什么差别吧。。
|
|
|
|
|
|