LFS612 安装实录附带全过程的详细命令.docx
- 文档编号:29986949
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:42
- 大小:32.03KB
LFS612 安装实录附带全过程的详细命令.docx
《LFS612 安装实录附带全过程的详细命令.docx》由会员分享,可在线阅读,更多相关《LFS612 安装实录附带全过程的详细命令.docx(42页珍藏版)》请在冰豆网上搜索。
LFS612安装实录附带全过程的详细命令
版本:
LFS-Book-6.1.2,使用官方的Live-CD6.1.2
安装环境为:
VMWare-5.0-13124
虚拟机内存:
256M
虚拟机硬盘:
(IDE)2G;没采用默认的SCSI,似乎会有莫名其妙的问题
虚拟机CD-ROM:
lfs-x86-6.1-2.iso
CPU:
p-M1.6G
去掉了默认的usb和声卡设备
==================================
目前只完成到第5章,第6章尚未开始,等第6章完成了在补一贴
==================================
开机:
linuxexpert
时区(Localtime):
Asia/Shanghai
区域(Local):
C(默认)[因为没有中文]
键盘布局(Keyboard):
us
以下内容有"..."的地方是省略的一些交互操作,想玩LFS的弟兄想必都知道该怎么操作吧。
===============================================
切换到根目录,并指定LFS环境变量
#cd/
#exportLFS=/mnt/lfs
将所有空间划给hda1,并标记为可引导分区
#fdisk/dev/hda
...
在hda1上建立ext2文件系统
#mke2fs/dev/hda1
挂载新的hda1分区
#mkdir-p$LFS
#mount/dev/hda1$LFS
复制所有将要用到的源代码和补丁,并将sources目录设置为可写和sticky模式
#mkdir/mnt/cdrom
#mount/dev/cdrom/mnt/cdrom
#cp-R/mnt/cdrom/sources/$LFS/
#chmoda+wt$LFS/sources
#umount/dev/cdrom
创建$LFS/tools目录[存放临时工具链]
#mkdir$LFS/tools
在宿主系统创建$LFS/tools目录的软连接(符号链接),
注意:
是链接到宿主系统的根目录!
#ln-s$LFS/tools/
添加LFS用户
#groupaddlfs
#useradd-s/bin/bash-glfs-m-k/dev/nulllfs
#passwdlfs
...
修改$LFS/tools和$LFS/sources目录所有权
#chownlfs$LFS/tools
#chownlfs$LFS/sources
切换到lfs用户,并转到根目录
#su-lfs
$cd/
设置bash工作环境1(.bash_profile)
$cat>~/.bash_profile<<"EOF"
>execenv-iHOME=$HOMETERM=$TERMPS1='\u:
\w\$'/bin/bash
>EOF
设置bash工作环境2(.bashrc)
$cat>~/.bashrc<<"EOF"
>set+h
>umask022
>LFS=/mnt/lfs
>LC_ALL=POSIX
>PATH=/tools/bin:
/bin:
/usr/bin
>exportLFSLC_ALLPATH
>EOF
[★记住★:
/tools/-->$LFS/tools/(hda1=$LFS)]
运行.bash_profile文件,以使刚刚配置的环境生效
$source~/.bash_profile
=============================
Chapter5.构建临时编译环境[仅包含必要的工具,用于最终的LFS系统]
----------------------------------------------------------
构建这个小系统分两步进行:
第一步是构建一个新的不依赖于宿主系统的工具链(编译器、汇编器、连接器、库文件以及一些有用的软件)
第二个步骤是利用这个工具链去构建其它基本的工具
本章中编译的文件将安装在$LFS/tools目录下,
这些软件包编译出来是起临时作用的,我们不希望这些软件和即将建立的LFS系统混杂在一起。
安装完每个软件包之后,删除其源文件和编译目录,除非另有特别的指令。
=============================
Binutils-2.15.94.0.2.2-Pass1
-----------------------
解包
$mkdir$LFS/sources/binutils-pass1
$tar-xvjf$LFS/sources/binutils-2.15.94.0.2.2.tar.bz2-C$LFS/sources/binutils-pass1
解包后的文件所在目录:
$LFS/sources/binutils-pass1/binutils-2.15.94.0.2.2
但是我们要用一个另外的目录来编译它,而不是在源码目录中:
$mkdir$LFS/sources/binutils-pass1/binutils-build
$cd$LFS/sources/binutils-pass1/binutils-build
配置编译脚本[★再次提醒★:
/tools/-->$LFS/tools/(hda1=$LFS)]
$$LFS/sources/binutils-pass1/binutils-2.15.94.0.2.2/configure--prefix=/tools--disable-nls
编译和安装
$make&&makeinstall
为后面"锁定"glibc准备连接器脚本
$make-Cldclean
$make-CldLIB_PATH=/tools/lib
现在不能删除Binutils的编译目录和源码目录,我们在本章后面部份还要用到它们,所以请别动它们。
------------------------------------
GCC-3.4.3-Pass1
------------------------------------
解包
$mkdir$LFS/sources/gcc-pass1
$tar-xvjf$LFS/sources/gcc-3.4.3.tar.bz2-C$LFS/sources/gcc-pass1
解包后的文件所在目录:
$LFS/sources/gcc-pass1/gcc-3.4.3
但是我们要用一个另外的目录来编译它,而不是在源码目录中:
$mkdir$LFS/sources/gcc-pass1/gcc-build
$cd$LFS/sources/gcc-pass1/gcc-build
配置编译脚本
$$LFS/sources/gcc-pass1/gcc-3.4.3/configure--prefix=/tools--libexecdir=/tools/lib--with-local-prefix=/tools--disable-nls--enable-shared--enable-languages=c
编译
$makebootstrap
安装
$makeinstall
创建/tools/bin/cc的符号链接(软链接),因为许多程序和脚本试图运行cc而不是gcc
$ln-sgcc/tools/bin/cc
清理垃圾
$rm-fr$LFS/sources/gcc-pass1/
------------------------------------
Linux-Libc-Headers-2.6.11.2
------------------------------------
解包
$tar-xvjf$LFS/sources/linux-libc-headers-2.6.11.2.tar.bz2-C$LFS/sources/
安装步骤1(i386)
$cp-R$LFS/sources/linux-libc-headers-2.6.11.2/include/asm-i386/tools/include/asm
如果是x86_64,则需要将上述指令修改为:
$cp-R$LFS/sources/linux-libc-headers-2.6.11.2/include/asm-x86_64/tools/include/asm
安装步骤2
$cp-R$LFS/sources/linux-libc-headers-2.6.11.2/include/linux/tools/include
清理垃圾
$rm-fr$LFS/sources/linux-libc-headers-2.6.11.2/
------------------------------------
Glibc-2.3.4
------------------------------------
解包
$mkdir$LFS/sources/glibc
$tar-xvjf$LFS/sources/glibc-2.3.4.tar.bz2-C$LFS/sources/glibc
切换目录,打补丁
$cd$LFS/sources/glibc/glibc-2.3.4/
$patch-Np1-i$LFS/sources/glibc-2.3.4-fix_test-1.patch
我们要用一个另外的目录来编译它,而不是在源码目录中:
$mkdir$LFS/sources/glibc/glibc-build
$cd$LFS/sources/glibc/glibc-build
配置编译脚本
$$LFS/sources/glibc/glibc-2.3.4/configure--prefix=/tools--disable-profile--enable-add-ons--enable-kernel=2.6.0--with-binutils=/tools/bin--without-gd--with-headers=/tools/include--without-selinux
编译
$make
运行测试套件(出错不要紧)
$makecheck
安装,前两个命令用于修正缺少/tools/etc/ld.so.conf文件的警告
$mkdir/tools/etc
$touch/tools/etc/ld.so.conf
$makeinstall
安装国际化locale
$makelocaledata/install-locales
垃圾清理(要加f强制删除某些文件)
$cd~
$rm-fr$LFS/sources/glibc
------------------------------------
调整/测试工具连
------------------------------------
现在临时的C库已经安装好了,我们需要让本章随后编译的那些工具都连接到这个库上。
为了实现这一目标,我们需要调整连接器脚本和编译器的specs文件。
首先安装调整过的连接器,转到"binutils-build"目录下并运安装调整过的连接器
$cd$LFS/sources/binutils-pass1/binutils-build
$make-Cldinstall
连接器是在第一遍安装Binutils的最后调整的。
注意!
从现在开始,所有的工具都*只*连接到/tools/lib里的库文件上。
清理垃圾
$cd~
$rm-fr$LFS/sources/binutils-pass1/
修正GCCspecs文件,使它指向新的动态连接器
首先找到specs文件的位置:
$echo`gcc--print-filespecs`
我这里显示的是“/mnt/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/3.4.3/specs”
然后手动编辑specs文件,将其中的“/lib/ld-linux.so.2”替换成“/tools/lib/ld-linux.so.2”即可
$nano-w/tools/lib/gcc/i686-pc-linux-gnu/3.4.3/specs
...
若不想手动修改specs文件可在切换到主目录后依次运行下列命令:
$cd~
$SPECFILE=`gcc--print-filespecs`
$sed's@/lib/ld-linux.so.2@/tools/lib/ld-linux.so.2@g'$SPECFILE>tempspecfile
$mv-ftempspecfile$SPECFILE
$unsetSPECFILE
[注意]如果你机器上的动态连接器的名字不是ld-linux.so.2,你必须把上面的ld-linux.so.2换成你机器上的动态连接器的名字。
执行下面的命令,以避免头文件混淆
$rm-f/tools/lib/gcc/*/*/include/{pthread.h,bits/sigthread.h}
现在来检查一下新工具链的基本功能(编译和连接)是否正常:
$cd~
$echo'main(){}'>dummy.c
$ccdummy.c
$readelf-la.out|grep':
/tools'
如果一切正常,应该不会出错,而且最后一个命令的结果是:
[Requestingprograminterpreter:
/tools/lib/ld-linux.so.2]
尤其要注意tools/lib应该是我们的动态连接器的前缀。
如果你没看到上面的结果,那么就有大问题了。
在改正之前,不要继续,因为没什么意义。
大多数情况下,出错都是因为上面的specs文件没改对。
在确定一切正常后,删除测试文件:
$rmdummy.ca.out
----------------------------
Tcl-8.4.9
----------------------------
这个软件包和接下来安装的两个软件包(Expect和DejaGNU)是为了给运行GCC和Binutils的测试程序提供支持。
仅为了测试而安装三个软件包,看起来似乎有点多余,但是看到那些最重要的工具正常工作,这样比较可靠。
即使没有运行本章中测试程序(不是必需的),运行Chapter6中的测试程序也需要这些软件包。
解包
$tar-xvjf$LFS/sources/tcl-8.4.9-src.tar.bz2-C$LFS/sources/
配置
$cd$LFS/sources/tcl8.4.9/unix
$./configure--prefix=/tools
编译并安装
$make&&makeinstall
设置一个环境变量来明确指示包含tcl头文件的目录,下一个包(Expect)要使用它
$exportTCLPATH=$LFS/sources/tcl8.4.9
为tclsh创建一个必须的符号链接:
$ln-stclsh8.4/tools/bin/tclsh
[注意]暂时不要删除tcl8.4.9的源码目录,下一个软件包需要里面的头文件。
------------------------------
Expect-5.43.0
------------------------------
解包
$tar-xvjf$LFS/sources/expect-5.43.0.tar.bz2-C$LFS/sources/
切换目录,打补丁
$cd$LFS/sources/expect-5.43
$patch-Np1-i$LFS/sources/expect-5.43.0-spawn-1.patch
配置
$./configure--prefix=/tools--with-tcl=/tools/lib--with-tclinclude=$TCLPATH--with-x=no
编译并安装
$make&&makeSCRIPTS=""install
撤销TCLPATH环境变量
$unsetTCLPATH
清理垃圾
$cd~
$rm-fr$LFS/sources/expect-5.43
$rm-fr$LFS/sources/tcl8.4.9
------------------------------
DejaGNU-1.4.4
------------------------------
解包
$tar-xvjf$LFS/sources/dejagnu-1.4.4.tar.bz2-C$LFS/sources/
配置
$cd$LFS/sources/dejagnu-1.4.4
$./configure--prefix=/tools
编译并安装
$makeinstall
清理垃圾
$cd~
$rm-fr$LFS/sources/dejagnu-1.4.4
------------------------------
GCC-3.4.3-Pass2
------------------------------
运行GCC和Binutils的测试套件,先测试主系统中PTY是否设置正常:
$expect-c"spawnls"
正确的回答应当是“spawnls”
如果如果你得到“Thesystemhasnomoreptys.Askyoursystemadministratortocreatemore.”
说明主系统的PTY没设置好。
这种情况下,运行GCC和Binutils的测试套件就没什么意义了。
解包
$mkdir$LFS/sources/gcc-pass2
$tar-xvjf$LFS/sources/gcc-3.4.3.tar.bz2-C$LFS/sources/gcc-pass2
切换目录,打补丁[这两个补丁非常重要]
$cd$LFS/sources/gcc-pass2/gcc-3.4.3/
$patch-Np1-i$LFS/sources/gcc-3.4.3-no_fixincludes-1.patch
$patch-Np1-i$LFS/sources/gcc-3.4.3-specs-2.patch
我们要用一个另外的目录来编译它,而不是在源码目录中:
$mkdir$LFS/sources/gcc-pass2/gcc-build
$cd$LFS/sources/gcc-pass2/gcc-build
编译前配置
$$LFS/sources/gcc-pass2/gcc-3.4.3/configure--prefix=/tools--libexecdir=/tools/lib--with-local-prefix=/tools--enable-clocale=gnu--enable-shared--enable-threads=posix--enable-__cxa_atexit--enable-languages=c,c++--disable-libstdcxx-pch
编译
$make
测试[-k参数是让测试套件即使遇到错误也继续运行,直到完成]
$make-kcheck
查看测试结果[GCC的测试套件非常详细,基本上是肯定会出错的]
$$LFS/sources/gcc-pass2/gcc-3.4.3/contrib/test_summary|grep-A7Summ|less
如果与http:
//www.linuxfromscratch.org/lfs/...ter5/gcc-3.4.3差别不大就没问题
但是Unexpectedfailures(未料到的失败)还是尽可能越少越好
安装
$makeinstall
垃圾清理
$cd~
$rm-fr$LFS/sources/gcc-pass2
强烈建议的额外步骤:
再执行一次合理性检查
$cd~
$echo'main(){}'>dummy.c
$ccdummy.c
$readelf-la.out|grep':
/tools'
如果一切正常,应该不会出错,而且最后一个命令的结果是:
[Requestingprograminterpreter:
/tools/lib/ld-linux.so.2]
尤其要注意tools/lib应该是我们的动态连接器的前缀。
如果你没看到上面的结果,那么就有大问题了。
在改正之前,不要继续,因为没什么意义。
大多数情况下,很可能是忘了运用上面的Specs补丁。
在确定一切正常后,删除测试文件:
$rmdummy.ca.out
---------------------------------------
Binutils-2.15.94.0.2.2-Pass2
---------------------------------------
解包
$mkdir$LFS/sources/binutils-pass2
$tar-xvjf$LFS/sources/binutils-2.15.94.0.2.2.tar.bz2-C$LFS/sources/binutils-pass2
解包后的文件所在目录:
$LFS/sources/binutils-pass2/binutils-2.15.94.0.2.2
但是我们要用一个另外的目录来编译它,而不是在源码目录中:
$mkdir$LFS/sources/binutils-pass2/binutils-build
$cd$LFS/sources/binutils-pass2/binutils-build
编译前配置
$$LFS/sources/binutils-pass2/binutils-2.15.94.0.2.2/configure--prefix=/tools--disable-nls--enable-shared--with-lib-path=/tools/lib
编译和安装
$make&&makeinstall
为下一章的“再调整”阶段配置连接器
$make-Cldclean
$make-CldLIB_PATH=/usr/lib:
/lib
请不要删除Binutils的源码和编译目录,保持这些目录的现状,下一章还需要用到。
---------------------------------------
Gawk-3.1.4
---------------------------------------
解包
$tar-xvjf$LFS/sources/gawk-3.1.4.tar.bz2-C$LFS/sources/
切换目录,配置
$cd$LFS/sources/gawk-3.1.4
$./configure--prefi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LFS612 安装实录附带全过程的详细命令 安装 实录 附带 全过程 详细 命令
![提示](https://static.bdocx.com/images/bang_tan.gif)