手把手教你如何建立自己的Linux系统 - 第二版(6)

2019-01-19 11:18

make install cd .. rm -rf texinfo-4.9

Util-linux-2.12r 代码:

tar xvf /lfs-sources/util-linux-2.12r.tar.bz2 cd util-linux-2.12r sed -i 's@/usr/include@/tools/include@g' configure ./configure make -C lib make -C mount mount umount make -C text-utils more cp -v mount/{,u}mount text-utils/more /tools/bin cd .. rm -rf util-linux-2.12r Stripping

这步是可有可无的,如果你打算今后还要用/tools里面的东西,那么可以strip一下来减少占用的磁盘空间,但如果做完目标系统后就删除了,不Strip也可以,反正最后也是要删掉的。 代码:

strip --strip-debug /tools/lib/* strip --strip-unneeded /tools/{,s}bin/* info和man里面的内容在制作过程中没什么用处,所以删掉也没啥关系。 代码:

rm -rf /tools/{info,man}

退出lfs用户(这步不要少了) 代码:

- 26 -

exit 到目前为止,工具链已经制作完成了,接着就要开始制作真正的目标系统了,如果你到目前为止没出什么问题,那么恭喜你成功的通过了一关,不过接着还有相当长的路。

现在你应该是处于root用户状态的,看看你的命令行提示符是不是回到了#。

从现在开始不在需要lfs用户来制作系统了,因此我们用 代码:

chown -R root:root $LFS/tools 重新设置目录权限,便于后面的工作。

创建三个重要目录 代码:

mkdir -pv $LFS/{dev,proc,sys} 创建两个目标系统所必须的设备文件 代码:

mknod -m 600 $LFS/dev/console c 5 1 mknod -m 666 $LFS/dev/null c 1 3

这个时候也许你想睡觉关机了,那么重新开机后回到工作状态的步骤是: 1.重新启动计算机,并从LiveCD启动 2.加载分区

export LFS=/mnt/lfs mkdir -pv $LFS mount /dev/hda2 $LFS

3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤) swapon /dev/hda1

- 27 -

相关知识点:

这时候已经制作好了工具链,因此可以不需要建立根目录下的tools链接了。

利用主系统加载几个重要的文件系统,请注意这个步骤对于后面的工作极其重要。 代码:

mount -v --bind /dev $LFS/dev mount -vt devpts devpts $LFS/dev/pts mount -vt tmpfs shm $LFS/dev/shm mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys 相关知识点:

mount命令加载的分区在重新启动后就失效了,所以在这其中重新启动则需要重新加载。

这里为了方便使用源码包,我将光盘加载到目标系统里 mkdir $LFS/cdrom

mount /dev/cdrom $LFS/cdrom

这个步骤不是必须的,如果你想使用,那么在重新启动后进入工作状态的步骤中在相应的位置上加入。 这里有一个更简单的办法,将lfs-sources里面所有源码包复制到$LFS/sources目录中,这步对于后面在第六章使用源代码将非常方便。 代码:

cp -a /lfs-sources/* $LFS/sources/ 关于增加中文显示功能:

为了方便在制作完后的系统能够直接显示中文,这里可以从网络上下载本人写的一个显示UTF-8编码文字的内核补丁。 使用下面的命令来下载: cd $LFS/sources/

wget http://zdbr.net.cn/download/utf8-kernel-2.6.22.5-core-1.patch.bz2

- 28 -

wget http://zdbr.net.cn/download/utf8-kernel-2.6.22.5-fonts-1.patch.bz2 解压缩这两个补丁

bunzip2 utf8-kernel-2.6.22.5-core-1.patch.bz2 bunzip2 utf8-kernel-2.6.22.5-fonts-1.patch.bz2

Chroot到目标系统的目录下,以便不受主系统的影响来制作目标系统 代码:

chroot \HOME=/root TERM=\PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \\ /tools/bin/bash --login +h 注意:这个时候你的提示符会是“I have no name!”,没有关系继续我们的工作很快就可以正常了。

这个时候如果你关机或重新启动,那么重新开机后回到工作状态的步骤是: 1.重新启动计算机,并从LiveCD启动 2.加载分区

export LFS=/mnt/lfs mkdir -pv $LFS mount /dev/hda2 $LFS

3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤) swapon /dev/hda1 4.加载必要的文件系统

mount -v --bind /dev $LFS/dev mount -vt devpts devpts $LFS/dev/pts mount -vt tmpfs shm $LFS/dev/shm mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys

- 29 -

5.Chroot到目标系统下

chroot \

HOME=/root TERM=\ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \\ /tools/bin/bash --login +h

建立目标系统的目录结构 代码:

mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt} mkdir -pv /{media/{floppy,cdrom},sbin,srv,var} install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src} mkdir -pv /usr/{,local/}share/{doc,info,locale,man} mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -pv /usr/{,local/}share/man/man{1..8} for dir in /usr /usr/local; do ln -sv share/{man,doc,info} $dir done mkdir -pv /var/{lock,log,mail,run,spool} mkdir -pv /var/{opt,cache,lib/{misc,locate},local}

创建几个必要的链接,因为在目标系统的编译过程中,部分编译程序会用绝对路径来寻找命令或文件。 代码:

ln -sv /tools/bin/{bash,cat,echo,grep,pwd,stty} /bin ln -sv /tools/bin/perl /usr/bin ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib - 30 -


手把手教你如何建立自己的Linux系统 - 第二版(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:生态系统稳定性之教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: