前提:CnPLinux联盟 对于做过一两次LFS的朋友,想必对LFS的漫长制作时间影象深刻,特别是对机器不太好的朋友,有时候LFS的制作时间真是“可怕”,有时候不得以必须关机然后重新启动并恢复到工作状态,但对一些不太清楚LFS的工作原理的朋友,可能一时无法正确的恢复到工作状态,因此为了能成功的完成LFS,有的会开个一两天的机器不关,本人特别针对这个问题写了一些自己的经验,以下的过程全部经过测试,应该是正确的,希望能给还在LFS制作中的朋友减轻一些“痛苦”。CnPLinux联盟 为了说明方便,例子采用VMWare5.0的环境下开始的,但也同样适合使用真实机器的情况,只是用真实的机器需要在相应的磁盘设备名上修改成实际的设备名。(用VMWare只是为了说明方便,VMware本身就具有暂停的功能,所以不必计较这个问题)CnPLinux联盟 文章使用VMWare5.0虚拟的SCSI设备,并使用sda设备名,sda1用于swap,而sda2用于目标系统的根目录。CnPLinux联盟 CnPLinux联盟 以下是按照LFS6.1.1-3里面的章节数写的,如果你使用的LFS-Book与下面的章节数有出入,以章节数后面的标题为准。CnPLinux联盟 CnPLinux联盟 开始~4.4. Setting Up the EnvironmentCnPLinux联盟 从头开始好了,没什么好可惜的。CnPLinux联盟 CnPLinux联盟 4.5. About SBUs~5.33. StrippingCnPLinux联盟 从现在开始一直到第五章结束,也就是完成Stripping中间的步骤中如果重新启动的恢复步骤:CnPLinux联盟 1.重新启动计算机,并从LiveCD启动CnPLinux联盟 2.加载分区CnPLinux联盟 export LFS=/mnt/lfsCnPLinux联盟 mkdir -pv $LFSCnPLinux联盟 mount /dev/sda2 $LFSCnPLinux联盟 3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)CnPLinux联盟 swapon /dev/sda1CnPLinux联盟 4.建立工具链的链接CnPLinux联盟 ln -sv $LFS/tools /CnPLinux联盟 5.创建lfs用户CnPLinux联盟 groupadd lfsCnPLinux联盟 useradd -s /bin/bash -g lfs -m -k /dev/null lfsCnPLinux联盟 passwd lfsCnPLinux联盟 chown -v lfs $LFS/toolsCnPLinux联盟 chown -v lfs $LFS/sourcesCnPLinux联盟 su - lfsCnPLinux联盟 6.建立lfs用户的环境CnPLinux联盟 cat > ~/.bash_profile << "EOF"CnPLinux联盟 exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bashCnPLinux联盟 EOFCnPLinux联盟 CnPLinux联盟 cat > ~/.bashrc << "EOF"CnPLinux联盟 set +hCnPLinux联盟 umask 022CnPLinux联盟 LFS=/mnt/lfsCnPLinux联盟 LC_ALL=POSIXCnPLinux联盟 PATH=/tools/bin:/bin:/usr/binCnPLinux联盟 export LFS LC_ALL PATHCnPLinux联盟 EOFCnPLinux联盟 CnPLinux联盟 source ~/.bash_profileCnPLinux联盟 7.检查一下CnPLinux联盟 export命令查看输出,应该是CnPLinux联盟 declare -x HOME="/home/lfs"CnPLinux联盟 declare -x LC_ALL="POSIX"CnPLinux联盟 declare -x LFS="/mnt/lfs"CnPLinux联盟 declare -x OLDPWDCnPLinux联盟 declare -x PATH="/tools/bin:/bin:/usr/bin"CnPLinux联盟 declare -x PS1="\\u:\\w\\\$ "CnPLinux联盟 declare -x PWD="/home/lfs"CnPLinux联盟 declare -x SHLVL="1"CnPLinux联盟 declare -x TERM="linux"CnPLinux联盟 基本上就恢复工作状态了。CnPLinux联盟 CnPLinux联盟 6.1. IntroductionCnPLinux联盟 这个时候也许你想睡觉关机了,那么重新开机后回到工作状态的步骤是:CnPLinux联盟 1.重新启动计算机,并从LiveCD启动CnPLinux联盟 2.加载分区CnPLinux联盟 export LFS=/mnt/lfsCnPLinux联盟 mkdir -pv $LFSCnPLinux联盟 mount /dev/sda2 $LFSCnPLinux联盟 3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)CnPLinux联盟 swapon /dev/sda1CnPLinux联盟 相关知识点:CnPLinux联盟 这时候已经制作好了工具链,因此可以不需要建立根目录下的tools链接了。CnPLinux联盟 CnPLinux联盟 6.2. Mounting Virtual Kernel File Systems~6.8. Populating /devCnPLinux联盟 这个时候如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:CnPLinux联盟 1.重新启动计算机,并从LiveCD启动CnPLinux联盟 2.加载分区CnPLinux联盟 export LFS=/mnt/lfsCnPLinux联盟 mkdir -pv $LFSCnPLinux联盟 mount /dev/sda2 $LFSCnPLinux联盟 3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)CnPLinux联盟 swapon /dev/sda1CnPLinux联盟 4.加载必要的文件系统CnPLinux联盟 mount -vt proc proc $LFS/procCnPLinux联盟 mount -vt sysfs sysfs $LFS/sysCnPLinux联盟 5.Chroot到目标系统下CnPLinux联盟 chroot "$LFS" /tools/bin/env -i \CnPLinux联盟 HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \CnPLinux联盟 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \CnPLinux联盟 /tools/bin/bash --login +hCnPLinux联盟 CnPLinux联盟 6.9. Linux-Libc-Headers-2.6.11.2~6.37. Bash-3.0CnPLinux联盟 从现在开始一直到第六章的File-4.13之前,也就是Bash-3.0结束后,这个阶段如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:CnPLinux联盟 1.重新启动计算机,并从LiveCD启动CnPLinux联盟 2.加载分区CnPLinux联盟 export LFS=/mnt/lfsCnPLinux联盟 mkdir -pv $LFSCnPLinux联盟 mount /dev/sda2 $LFSCnPLinux联盟 3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)CnPLinux联盟 swapon /dev/sda1CnPLinux联盟 4.加载必要的文件系统CnPLinux联盟 mount -vt proc proc $LFS/procCnPLinux联盟 mount -vt sysfs sysfs $LFS/sysCnPLinux联盟 5.Chroot到目标系统下CnPLinux联盟 chroot "$LFS" /tools/bin/env -i \CnPLinux联盟 HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \CnPLinux联盟 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \CnPLinux联盟 /tools/bin/bash --login +hCnPLinux联盟 6.创建/dev下的设备文件CnPLinux联盟 mount -nvt tmpfs none /devCnPLinux联盟 mknod -m 622 /dev/console c 5 1CnPLinux联盟 mknod -m 666 /dev/null c 1 3CnPLinux联盟 mknod -m 666 /dev/zero c 1 5CnPLinux联盟 mknod -m 666 /dev/ptmx c 5 2CnPLinux联盟 mknod -m 666 /dev/tty c 5 0CnPLinux联盟 mknod -m 444 /dev/random c 1 8CnPLinux联盟 mknod -m 444 /dev/urandom c 1 9CnPLinux联盟 chown -v root:tty /dev/{console,ptmx,tty}CnPLinux联盟 ln -sv /proc/self/fd /dev/fdCnPLinux联盟 ln -sv /proc/self/fd/0 /dev/stdinCnPLinux联盟 ln -sv /proc/self/fd/1 /dev/stdoutCnPLinux联盟 ln -sv /proc/self/fd/2 /dev/stderrCnPLinux联盟 ln -sv /proc/kcore /dev/coreCnPLinux联盟 mkdir -v /dev/ptsCnPLinux联盟 mkdir -v /dev/shmCnPLinux联盟 mount -vt devpts -o gid=4,mode=620 none /dev/ptsCnPLinux联盟 mount -vt tmpfs none /dev/shmCnPLinux联盟 6.进入编译目录CnPLinux联盟 cd /sourcesCnPLinux联盟 CnPLinux联盟 6.38. File-4.13~6.58. Udev-056CnPLinux联盟 从现在开始一直到第六章的Udev-056完成之前,这个阶段如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:CnPLinux联盟 1.重新启动计算机,并从LiveCD启动CnPLinux联盟 2.加载分区CnPLinux联盟 export LFS=/mnt/lfsCnPLinux联盟 mkdir -pv $LFSCnPLinux联盟 mount /dev/sda2 $LFSCnPLinux联盟 3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)CnPLinux联盟 swapon /dev/sda1CnPLinux联盟 4.加载必要的文件系统CnPLinux联盟 mount -vt proc proc $LFS/procCnPLinux联盟 mount -vt sysfs sysfs $LFS/sysCnPLinux联盟 5.Chroot到目标系统下CnPLinux联盟 chroot "$LFS" /tools/bin/env -i \CnPLinux联盟 HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \CnPLinux联盟 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \CnPLinux联盟 /bin/bash --login +hCnPLinux联盟 6.创建/dev下的设备文件CnPLinux联盟 mount -nvt tmpfs none /devCnPLinux联盟 mknod -m 622 /dev/console c 5 1CnPLinux联盟 mknod -m 666 /dev/null c 1 3CnPLinux联盟 mknod -m 666 /dev/zero c 1 5CnPLinux联盟 mknod -m 666 /dev/ptmx c 5 2CnPLinux联盟 mknod -m 666 /dev/tty c 5 0CnPLinux联盟 mknod -m 444 /dev/random c 1 8CnPLinux联盟 mknod -m 444 /dev/urandom c 1 9CnPLinux联盟 chown -v root:tty /dev/{console,ptmx,tty}CnPLinux联盟 ln -sv /proc/self/fd /dev/fdCnPLinux联盟 ln -sv /proc/self/fd/0 /dev/stdinCnPLinux联盟 ln -sv /proc/self/fd/1 /dev/stdoutCnPLinux联盟 ln -sv /proc/self/fd/2 /dev/stderrCnPLinux联盟 ln -sv /proc/kcore /dev/coreCnPLinux联盟 mkdir -v /dev/ptsCnPLinux联盟 mkdir -v /dev/shmCnPLinux联盟 mount -vt devpts -o gid=4,mode=620 none /dev/ptsCnPLinux联盟 mount -vt tmpfs none /dev/shmCnPLinux联盟 6.进入编译目录CnPLinux联盟 cd /sourcesCnPLinux联盟 CnPLinux联盟 6.59. Util-linux-2.12q~6.60. About Debugging SymbolsCnPLinux联盟 从现在开始一直到第六章的Stripping Again之前,这个阶段如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:CnPLinux联盟 1.重新启动计算机,并从LiveCD启动CnPLinux联盟 2.加载分区CnPLinux联盟 export LFS=/mnt/lfsCnPLinux联盟 mkdir -pv $LFSCnPLinux联盟 mount /dev/sda2 $LFSCnPLinux联盟 3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)CnPLinux联盟 swapon /dev/sda1CnPLinux联盟 4.加载必要的文件系统CnPLinux联盟 mount -vt proc proc $LFS/procCnPLinux联盟 mount -vt sysfs sysfs $LFS/sysCnPLinux联盟 5.Chroot到目标系统下CnPLinux联盟 chroot "$LFS" /tools/bin/env -i \CnPLinux联盟 HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \CnPLinux联盟 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \CnPLinux联盟 /bin/bash --login +hCnPLinux联盟 6.创建/dev下的设备文件CnPLinux联盟 mount -nvt tmpfs none /devCnPLinux联盟 /sbin/udevstartCnPLinux联盟 mkdir -v /dev/ptsCnPLinux联盟 mkdir -v /dev/shmCnPLinux联盟 mount -vt devpts -o gid=4,mode=620 none /dev/ptsCnPLinux联盟 mount -vt tmpfs none /dev/shmCnPLinux联盟 6.进入编译目录CnPLinux联盟 cd /sourcesCnPLinux联盟 CnPLinux联盟 6.61. Stripping AgainCnPLinux联盟 如果现在重新启动,那么重新开机后回到工作状态的步骤是:CnPLinux联盟 1.重新启动计算机,并从LiveCD启动CnPLinux联盟 2.加载分区CnPLinux联盟 export LFS=/mnt/lfsCnPLinux联盟 mkdir -pv $LFSCnPLinux联盟 mount /dev/sda2 $LFSCnPLinux联盟 3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)CnPLinux联盟 swapon /dev/sda1CnPLinux联盟 4.加载必要的文件系统CnPLinux联盟 mount -vt proc proc $LFS/procCnPLinux联盟 mount -vt sysfs sysfs $LFS/sysCnPLinux联盟 5.Chroot到目标系统下CnPLinux联盟 chroot $LFS /tools/bin/env -i \CnPLinux联盟 HOME=/root TERM=$TERM PS1='\u:\w\$ ' \CnPLinux联盟 PATH=/bin:/usr/bin:/sbin:/usr/sbin \CnPLinux联盟 /tools/bin/bash --loginCnPLinux联盟 6.创建/dev下的设备文件CnPLinux联盟 mount -nvt tmpfs none /devCnPLinux联盟 /sbin/udevstartCnPLinux联盟 mkdir -v /dev/ptsCnPLinux联盟 mkdir -v /dev/shmCnPLinux联盟 mount -vt devpts -o gid=4,mode=620 none /dev/ptsCnPLinux联盟 mount -vt tmpfs none /dev/shmCnPLinux联盟 6.进入编译目录CnPLinux联盟 cd /sourcesCnPLinux联盟 CnPLinux联盟 6.62. Cleaning Up~结束CnPLinux联盟 从现在开始一直到制作结束,重新开机后回到工作状态的步骤是:CnPLinux联盟 1.重新启动计算机,并从LiveCD启动CnPLinux联盟 2.加载分区CnPLinux联盟 export LFS=/mnt/lfsCnPLinux联盟 mkdir -pv $LFSCnPLinux联盟 mount /dev/sda2 $LFSCnPLinux联盟 3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)CnPLinux联盟 swapon /dev/sda1CnPLinux联盟 4.加载必要的文件系统CnPLinux联盟 mount -vt proc proc $LFS/procCnPLinux联盟 mount -vt sysfs sysfs $LFS/sysCnPLinux联盟 5.Chroot到目标系统下CnPLinux联盟 chroot "$LFS" /usr/bin/env -i \CnPLinux联盟 HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \CnPLinux联盟 PATH=/bin:/usr/bin:/sbin:/usr/sbin \CnPLinux联盟 /bin/bash --loginCnPLinux联盟 6.创建/dev下的设备文件CnPLinux联盟 mount -nvt tmpfs none /devCnPLinux联盟 /sbin/udevstartCnPLinux联盟 mkdir -v /dev/ptsCnPLinux联盟 mkdir -v /dev/shmCnPLinux联盟 mount -vt devpts -o gid=4,mode=620 none /dev/ptsCnPLinux联盟 mount -vt tmpfs none /dev/shmCnPLinux联盟 6.进入编译目录CnPLinux联盟 cd /sourcesCnPLinux联盟 CnPLinux联盟 (转载请保持文章的完整性,请注明作者和出处)CnPLinux联盟 CnPLinux联盟 作者:冲天飞豹(youbest)CnPLinux联盟 Email:youbest@sina.comCnPLinux联盟 2006年2月16日 CnPLinux联盟 CnPLinux联盟
|