LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 596|回复: 0

自己搞LFS的一些心得

[复制链接]
发表于 2003-6-1 22:13:05 | 显示全部楼层 |阅读模式
自己搞LFS的一些心得

发布日期:2003-05-19
文摘内容:
--------------------------------------------------------------------------------
摘要
相信大家肯定听说过LFS(Linux From Scratch)大家有没有自己搞过呢?我花了一个多星期的课余时间,在我的Celeron 366上搞了起来,这个是我工作完成后的一些心得,大家可以做个参考(2003-05-14 13:47:04)

--------------------------------------------------------------------------------
By 阿土


这个阶段工作的主要参考是《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告诉编译器,这个程序用静态连接。
--prefix=$LFS/static告诉安装脚本,这个程序的安装位置。
LDFLAGS=-all-static设置Gcc的环境变量,让其静态连接。
make CC="gcc -static -s"设置Gcc的环境变量,让其静态连接。
--disable-nls:我不是很懂,大概是禁止编译器以国际标准编译(原文:This option disables internationalization (also known as i18n). We don't need this for our static programs and nls often causes problems when you're linking statically.)

编译过程按照《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就可以启动了。
2) 在新的分区上安装Grub,把内核放在LFS系统中的/boot/中,配置一下新安装的Grub。

我用的是第一种方法。

8. 清理现场:

现在,我们的LFS已经能启动起来了,大功告成。/static/下面的内容已经没有什么用了(要是以后还想再搞LFS可以放在那里)。删掉/static/里面的内容以后,大概还有640MB(包括内核193MB)

详细列表如下:

bin 13400kb
dev 56kb
home 4kb
lost+found 16kb
opt 60kb
root 28kb
static 248644kb
usr 613000kb
->src 193284kb
->bin 40464kb
->include 16376kb
->lib 257328kb
->local 75656kb
->sbin 1588kb
->share 96424kb
->.....
boot 3284kb
sbin 8768kb
欢迎访问我们的站点http://www.nsfocus.com/
绿盟科技给您安全的保障

   


中联绿盟信息技术(北京)有限公司版权所有 联系:webadmin@nsfocus.com
©1999-2003 NSFOCUS Corporation. All rights Reserved.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表