自己搞LFS的一些心得这个阶段工作的主要参考是《Linux From Scratch》这份文档,下面是这份文档中讲的思路,也是我工作的步骤。我对每一步解释一下。 1. 两个特殊符号:$LFS,SUBs: $LFS开始是用命令export LFS=/mnt/lfs定义的,后来在用户的.bash_profile中用LFS=/mnt/lfs来定义的,因为《LFS》中所有软件编译中都用到-prefix=$LFS/static/确定静态系统的安装位置。 SUBs是用来衡量时间的,编译Bash时用的时间为1SUBs,这样,编译每一个软件的时候,你就可以预料所用的时间了。 2. 划出一个空的分区,建立一个新的用户: 划出新的分区是用来存储两个系统的,中间平台(一个静态的编译平台)和目标系统(LFS)。这个空间最小是1G,建议在2G以上,这样就不必编译完一个软件就删除源码了。 在创建中间平台的时候要注意不要用root账号来工作,万一敲错一个命令,你装的原来的系统就不行了。但是要保证新开的账号能访问新画出的空间中的所有资源。 3. 格式化分区,创建目录: 用ext2分区格式,格式化新的分区,挂载到/mnt/lfs目录下面。创建目录/mnt/lfs/static和/mnt/lfs/static/src,这两个目录分别是中间平台的根目录和中间平台的源代码目录。中间平台的所有内容都将放在目录/mnt/lfs/static中。我的分区结构如下图: 4. 编译静态开发平台: 把Bash-2.05a、Binutils-2.13、Bzip2-1.0.2Diffutils-2.8.1、Fileutils-4.1、Findutils-4.1、Gawk-3.1.1、GCC-3.2、Grep-2.5、Gzip-1.2.4a、Make-3.80、Patch-2.5.4、Sed-4.0、Sh-utils-2.0、Tar-1.13、Texinfo-4.2、Textutils-2.1、Util-linux-2.11w这些软件的源代码复制到/mnt/lfs/static/src/目录中,用自己原来系统上的Gcc进行编译。 为什么没有Glibc?因为所有的软件在编译的时候都是静态编译的。 为什么要这么多软件,不是只要Gcc吗?因为我们configure配置脚本中用到了这些软件。在《LFS》中每个软件的后面会有Installation Dependencies,这里就列出了编译,安装这个软件所要用到了其他工具。 configure过程中一般会用到下列选项: --enable-static-link告诉编译器,这个程序用静态连接。 编译过程按照《LFS》上面讲的一步一步走,一般没有什么问题,当在下一步(chroot以后)出现自己编译的东西不能用时,多数情况是这里静态编译出的问题,解决办法是按照说明重新静态编译,安装一次(哪个软件不行,重装哪个),也可以看源码中的README或INSTALL说明文档,自己选择编译时候的参数。 5. 用上一步得到的静态编译平台制作目标系统(LFS) 首先是改变根目录,用chroot命令。这样,在当前控制台看来,原来的/mnt/lfs/就成了现在的根目录,这个时候所有运行的软件都在/static/bin/下面(下面提到的“/”没有特殊说明指原来系统上的“/mnt/static/”。所以chroot以后,至少要使环境变量PATH=/static/bin/ 改变“/”下所有文件和目录的组权限、拥有权限为0、0(指root),并在根目录下创建必要的文件夹,注意有些文件夹创建以后要改变权限,因为做出来的LFS不是只有root来使用。同时创建passwd、group文件,将来的LFS系统的组、用户信息就在这两个文件里。 接下来就是创建必要的设备,这里有一个编好的脚本MAKEDEV,只要运行一下就行了,常用到的设备都给建好了。如果发现自己机器上的某些设备这里没有考虑到,可以自己用mknod命令来建。 最后就是安装下列软件: Linux-2.4.19、Man-pages-1.53、Glibc-2.2.5、GCC-3.2、Zlib-1.1.4、Findutils-4.1、Gawk-3.1.1、Ncurses-5.3、Vim-6.1、M4-1.4、Bison-1.75、Less-378、Groff-1.18.1、Textutils-2.1、Sed-4.0、Flex-2.5.4a、Binutils-2.13、Fileutils-4.1、Sh-utils-2.0、Gettext-0.11.5、Net-tools-1.60、Perl-5.8.0、Linux threads-2.2.5 man pages、Texinfo-4.2、Autoconf-2.54、Automake-1.7.1、Bash-2.05a、File-3.39、Libtool-1.4.2、Bin86-0.16.3、Bzip2-1.0.2、Ed-0.2、Kbd-1.08、Diffutils-2.8.1、E2fsprogs-1.29、Grep-2.5、Gzip-1.2.4a、Man-1.5k、Lilo-22.2、Make-3.80、Modutils-2.4.21、Netkit-base-0.17、Patch-2.5.4、Procinfo-18、Procps-3.0.4、Psmisc-21.2、Shadow-4.0.3、Sysklogd-1.4.1、Sysvinit-2.84、Tar-1.13、Util-linux-2.11w、LFS-Bootscripts-1.10 这些软件不是一定要装的,有些你不要的话,完全可以不装。但是上面提到的是很基本的东西,最好是装上。同时,你如果想装其他自己想要装的软件完全可以现在装上去,比如说KDE桌面系统。 这些软件在编译过程中都使用了动态连接,在这些软件安装以前安装了Glibc-2.2.5,下面的软件都使用了这个库赖动态连接的。 软件安装完,要记住修改一些配置文件来配置这些软件的工作。 6. 创建或修改启动过程中用到的配置文件: 这里要修改的配置文件主要是: /etc/sysconfig/clock、/etc/sysconfig/network、/etc/hosts、/etc/sysconfig/network、/etc/sysconfig/network-devices/ifconfig.eth* 7. 让你的LFS启动起来: 首先创建/etc/fstab文件,系统启动时,这个文件告诉系统要挂载哪个文件系统,要挂载哪个分区。 其次就是编译一个内核,编译内核没有什么特殊的,知道你要什么功能,你的机器上有什么,就可以编译了。 我用的系统引导器是Grub(可能现在更多的Linux用户用的是这个引导器)要硬到你的LFS有两种方法: 1) 把内核放到原来系统中的/boot/中,不用在新的分区上装引导器,配置一下menu.lst就可以启动了。 上一篇:制作自己的Floppy-Linux Step By Step 下一篇:系统启动脚本分析(6)--其它一些脚本简介 更多相关文章
|
推荐文章
精彩文章
·备份策略
|