LFS (版本6.1.1) 安装心得(转)[@more@]---前序:
好多年前,安装过早期的Slackware.
两三年前安装过RedHat9.
基本上就是安装好后, 进桌面系统打一下小游戏,然后就删除掉.因为我的硬盘一直很小,20G.
当然一个很主要的原因是我不喜欢这些发行版中一大堆的东西,太乱,看不明白怎么组织的.
前几天换了40G硬盘,于是划分了8G安装了Debian.装好了后一看也是一大堆的软件,各式各样.正要准备删除.
不知道在哪里看到了LFS一下,顿时被吸引了,于是计划安装一个LFS.而Debian正好作为host system.
下面是我的安装心得,花了周5,周6两个通宵. (glibc, gcc, firefox, Xorg耗时很多,在笔记本上安装.)
写点自己的体会,主要是整理自己对LFS安装过程的理解, 特别是ld和gcc的多次编译.
----目标:
为了创建一个干净的LFS系统.
----实现的大步骤:
1. 尽可能的摆脱host system的影响, 首先创建一个最基本的自治的Toolchain.
这个Toolchain中最基本的需要是: binutils(最基本的binary工具), gcc(编译器), glibc(函数库)
因为其它的tools就可以由这三个创建出来了.
2. 当所有的基本Toolchain工具准备好了,就可以chroot.
3. 在Chroot后的虚拟根/环境下, 用toolchain中的工具生成出最后的LFS系统.
---一个说明:
为什么要创建/tools这个link
初始的Toolchain工具创建在/mnt/lfs/tools目录下.
同时为了将来chroot后, 工具中的Interpreter信息仍然指向正确,使用了一个小技巧.
在host system中的/目录下创建一个名为tools的link, 指向/tools --> /mnt/lfs/tools
这个作用打个比方来说就是,当我们在使用host system的时候,我们可以使用/tools/bin/ld找到ld程序,
将来chroot后,/tools/bin/ld还是能找到这个ld.
否则我们在使用host system的时候,使用/mnt/lfs/tools/bin/ld来找到ld,
换句话说生成的程序包含/mnt/lfs这样的信息,将来chroot之后,可就不太好了.
----符号说明:
(为了行文方便)
bin-0 -----> host system的binutils
ld-0 -----> host system 的ld
bin-1 -----> 第一遍编译出的binutils
ld-1 -----> bin-1中的ld
ld-a -----> 第一次调正后的ld
bin-2 -----> 第二遍编译的binutils
ld-2 -----> bin-2中的ld
ld-b -----> 第二次调正后的ld
bin-3 -----> 第三遍编译生成的binutils
ld-3 -----> bin-3中的ld
gcc-0, gcc-1, gcc-2, gcc-3分别表示host system中的gcc, 和Toolchain中的两遍gcc和最后LFS系统的gcc.
好多年前,安装过早期的Slackware.
两三年前安装过RedHat9.
基本上就是安装好后, 进桌面系统打一下小游戏,然后就删除掉.因为我的硬盘一直很小,20G.
当然一个很主要的原因是我不喜欢这些发行版中一大堆的东西,太乱,看不明白怎么组织的.
前几天换了40G硬盘,于是划分了8G安装了Debian.装好了后一看也是一大堆的软件,各式各样.正要准备删除.
不知道在哪里看到了LFS一下,顿时被吸引了,于是计划安装一个LFS.而Debian正好作为host system.
下面是我的安装心得,花了周5,周6两个通宵. (glibc, gcc, firefox, Xorg耗时很多,在笔记本上安装.)
写点自己的体会,主要是整理自己对LFS安装过程的理解, 特别是ld和gcc的多次编译.
----目标:
为了创建一个干净的LFS系统.
----实现的大步骤:
1. 尽可能的摆脱host system的影响, 首先创建一个最基本的自治的Toolchain.
这个Toolchain中最基本的需要是: binutils(最基本的binary工具), gcc(编译器), glibc(函数库)
因为其它的tools就可以由这三个创建出来了.
2. 当所有的基本Toolchain工具准备好了,就可以chroot.
3. 在Chroot后的虚拟根/环境下, 用toolchain中的工具生成出最后的LFS系统.
---一个说明:
为什么要创建/tools这个link
初始的Toolchain工具创建在/mnt/lfs/tools目录下.
同时为了将来chroot后, 工具中的Interpreter信息仍然指向正确,使用了一个小技巧.
在host system中的/目录下创建一个名为tools的link, 指向/tools --> /mnt/lfs/tools
这个作用打个比方来说就是,当我们在使用host system的时候,我们可以使用/tools/bin/ld找到ld程序,
将来chroot后,/tools/bin/ld还是能找到这个ld.
否则我们在使用host system的时候,使用/mnt/lfs/tools/bin/ld来找到ld,
换句话说生成的程序包含/mnt/lfs这样的信息,将来chroot之后,可就不太好了.
----符号说明:
(为了行文方便)
bin-0 -----> host system的binutils
ld-0 -----> host system 的ld
bin-1 -----> 第一遍编译出的binutils
ld-1 -----> bin-1中的ld
ld-a -----> 第一次调正后的ld
bin-2 -----> 第二遍编译的binutils
ld-2 -----> bin-2中的ld
ld-b -----> 第二次调正后的ld
bin-3 -----> 第三遍编译生成的binutils
ld-3 -----> bin-3中的ld
gcc-0, gcc-1, gcc-2, gcc-3分别表示host system中的gcc, 和Toolchain中的两遍gcc和最后LFS系统的gcc.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10617731/viewspace-961573/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10617731/viewspace-961573/