LFS612 安装实录附带全过程的详细命令.docx

上传人:b****8 文档编号:29986949 上传时间:2023-08-04 格式:DOCX 页数:42 大小:32.03KB
下载 相关 举报
LFS612 安装实录附带全过程的详细命令.docx_第1页
第1页 / 共42页
LFS612 安装实录附带全过程的详细命令.docx_第2页
第2页 / 共42页
LFS612 安装实录附带全过程的详细命令.docx_第3页
第3页 / 共42页
LFS612 安装实录附带全过程的详细命令.docx_第4页
第4页 / 共42页
LFS612 安装实录附带全过程的详细命令.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

LFS612 安装实录附带全过程的详细命令.docx

《LFS612 安装实录附带全过程的详细命令.docx》由会员分享,可在线阅读,更多相关《LFS612 安装实录附带全过程的详细命令.docx(42页珍藏版)》请在冰豆网上搜索。

LFS612 安装实录附带全过程的详细命令.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1