LinuxSir.cn,穿越时空的Linuxsir!

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

LFS安装中文文档(一)

[复制链接]
发表于 2002-11-10 22:18:05 | 显示全部楼层 |阅读模式
这是从网上找到的,大家共享吧!
第五章 准备LFS系统
简介

在后面的章节中我们将安装这个基本系统所需要所有软件。完成软件安装以后,你将拥有具有完全功能的Linux系统。后面的章节将讨论如何创建启动脚本、使得LFS系统可自启动和设置基本的网络配置。

本章的软件都是以静态链结方式安装。这些软件将在第六章重新安装。首先以静态连接的方式安装软件的原因是当前系统和将要创建的LFS系统使用的是不同的C库版本。若开始安装的程序使用的是老版本的C库,这些程序可能在LFS系统上工作不正常。

了解Linux的工作原理的关键是知道使用了哪些数据报及为什么用户或系统需要该软件包。在每种软件的安装指示之后都讨论了关于该软件包的内容及其功能描述。

在安装各种软件时很可能会出现很多编译告警消息,这是正常的,可以不加理会。它们仅仅是对C或C++的语法不规范的告警,这可能是因为C语法标准更新导致的原因。

在开始工作以前,确信$LFS变量被正确设定:

echo $LFS

该命令输出应该包含正确的LFS分区目录路径。
以root身份安装软件

在安装软件时最好以root用户进行。这样就会导致所有文件都属于root用户和root组。若一个软件包需要设置特殊的访问权限,则作为root用户可以对这些软件进行特定的设置。

Glibc、gcc及其他的一些软件的安装文档推荐不以root身份编译,但是我们觉得忽略推荐而以root身份编译软件是安全的。很多使用LFS系统的用户这样安装也没有发现任何问题,而且我们在编译过程中也没有遇到任何bug导致出现问题。
安装Bash
Bash安装
使用下面的命令安装Bash:

    ./configure --enable-static-link --prefix=$LFS/usr --bindir=$LFS/bin --with-curses &&
    make &&
    make install &&
    cd $LFS/bin &&
    ln -s bash sh

如果Make install命令输出以下面的内容结束:

    install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir'
    usage: install-info [--version] [--help] [--debug] [--maxwidth=nnn]
    [--section regexp title] [--infodir=xxx] [--align=nnn]
    [--calign=nnn] [--quiet] [--menuentry=xxx]
    [--info-dir=xxx]
    [--keep-old] [--description=xxx] [--test]
    [--remove] [--] filename
    make[1]: *** [install] Error 1
    make[1]: Leaving directory `/mnt/lfs/usr/src/bash-2.04/doc'
    make: [install] Error 2 (ignored)

则说明你可能是在Debian系统上构建LFS系统,而且你的Debian发布中的texinfo软件是老版本的。make install的错误并不是严重错误。在第六章重新编译动态连接方式的Bash时info已经被安装,因此这里可以忽略这些错误。但是却需要手工重新运行最后两个命令(cd $LFS/bin &&和ln -s bash sh),因为make install出现了错误而导致后面两个命令没有执行。
 楼主| 发表于 2002-11-10 22:21:07 | 显示全部楼层

LFS安装中文说明文档(二)

命令解释

--enable-static-link:该配置选项指示bash以静态链结方式编译。

--prefix=$LFS/usr:该配置选项将把Bash的所有文件安装在$LFS/usr目录下,在用户chroot以后,$LFS/usr就会变为/usr目录。

--bindir=$LFS/bin:该配置选项安装可执行程序在目录$LFS/bin中。这是因为bash程序应该安装在/bin,而不是/usr/bin。这样做的一个原因是/usr可能是一个独立于系统主分区的分区,在分区被加载以前一个用户会需要bash环境(例如没有bash环境启动脚本将无法执行)。

--with-curses:该参数指定bash链结curses库,而不是使用即将消失的termcap库。

ln -s bash sh:该命令创建名为sh的符号连接指向bash。大多数脚本都通过sh(在脚本第一行定义#!/bin/sh来调用sh)来运行的特定的脚本。

每条命令后的&&使得该命令后的命令只有在该命令正确执行结束的情况下才会继续执行。因为每条命令都只有在前一条命令正确执行的情况下才能执行。
内容

Bash软件包包包含bash shell程序
描述

Bash是一个"Bourne-Again SHell",在作为命令解释器得到了广泛的应用。Bash是一个从标准输入(一般是键盘)读取命令,用户在键盘上输入某些命令,Bash将读取输入加以解析然后执行该程序。
Binutils软件包
安装

使用下面的命令安装Binutils软件包:

./configure --prefix=$LFS/usr --disable-nls &&
make -e LDFLAGS=-all-static tooldir=$LFS/usr &&
make -e tooldir=$LFS/usr install
命令解释

make -e:参数-e指示make命令环境变量要优先于Makefile文件中定义的变量。这对于以静态链结方式编译Binutils是必须的。

LDFLAGS=-all-static:设置变量LDFLAGS的值为-all-static。、,使得binutils以静态方式链结。

tooldir=$LFS/usr:通常tooldir(binutils软件包的可执行程序存放目录)被设置为$(exec_prefix)/$(target_alias),使用变量代换以后一般为/usr/i686-pc-linux-gnu。但是由于我们仅仅创建自己的系统,因此在$LFS/usr中不需要这些特殊的目标目录。这只有在系统进行交叉编译(例如在Intel体系结构上编译程序,却在Apple的PowerPC机器执行)时才会有用。
内容

Binutils软件包包含如下工具程序:

gasp, gprof, ld, as, ar, nm, objcopy, objdump, ranlib, readelf, size, strings, strip, c++filt及 addr2line。
描述

gasp:编译器的宏预处理器。

gprof:显示调用段描述数据。

ld:链结多个对象文件和存档文件,重新定位数据,链结符号引用。常常是编译程序的最后一步被调用。

as:主要用于汇编gcc编译器的输出以供ld使用。

ar:创建、修改和读取存档文件。一个存档文件是一个包含多个其他文件的单个文件,其结构保证了可以从中得到原始的被包含文件。

nm:列出目标文件中的符号。

objcopy:拷贝一个目标文件中的内容到另外一个。objcopy使用GNU的BFD库来读写目标文件。它可以以一种不同于源目标文件的格式来写入目的目标文件。

objdump:显示关于一个或多个目标文件的信息。其参数控制显示哪些信息。这些信息对处理编译工具相关工作的程序员来说是非常有用的,而对于那些仅仅编译程序的程序员来说则没有太大用处。

ranlib:对存档文件的内容生成索引,并将其存放在存档文件中。索引列出是类型为可重定向目标文件的存档成员定义的每个符号。

readelf:显示关于elf格式的二进制文件的相关信息。

size:列出作为参数指定的每个目标文件的块(section)大小和整个大小。默认情况下每个目标文件或每个存档文件中的一个模块输出一行。

strings:对参数中指定的每个文件,strings打印文件中包含的长度至少为连续四个字符的可打印字符串(或者参数中指定的数字)。默认情况下其仅仅输出目标文件的初使和缓加载部分的字符串,对于其他类型的文件,其打印文件所有的内容。
strings主要用于决定非文本文件的内容。

strip:丢弃目标文件中的所有或特定的符号。目标文件列表可能包括存档文件(archives)。至少一个对象文件必须给出。strip修改参数中指定的文件,而不是将修改过的版本写入其他名字的文件中。

c++filt:C++语言提供了函数重载的功能,也就是能编写多个具有同样名字的函数(但是每个函数的参数是不同的)。所有的C++函数名被编码到较低级别的汇编标号当中。而c++filt程序则进行相反的匹配。它解码低级的标号到用户级的符号名,从而使得链接器能保持这些重载的函数,防止冲突。

addr2line:将程序地址转译成文件名和行号。给定一个地址和一个可执行程序,它通过使用可执行程序中的调试信息来计算哪个文件名和行号和给定的地址关联。
Bzip2软件包
安装

使用下面命令来安装软件包Bzip2:

sed s/"\$(CC) \$(CFLAGS) -o"/"\$(CC) \$(CFLAGS) \$(LDFLAGS) -o"/ Makefile | make -f - LDFLAGS=-static &&
make PREFIX=$LFS/usr install &&
cd $LFS/usr/bin &&
mv bzcat bunzip2 bzip2 bzip2recover $LFS/bin
命令解释

sed:该命令搜索Makefile文件中的字符串"$(CC) $(CFLAGS) -o"使用$(CC) $(CFLAGS) $(LDFLAGS) -o"来替代。这样使得更容易的以静态方式链结bzip2。

...Makefile | make -f -:Makefile十sed的最后一个参数,表示这个文件被搜索和替换。sed通常是发送修改过的文本到标准输出(常常为console)中。使用上面的命令sed的输出将被管道定向到make程序。通常make程序启动时常常试图寻找类似Makefile的文件,但是这里要使用修改过的Makefile文件内容,因此需要指示make使用修改过的文件内容。"-f -"参数就是指示make从不是Makefile的其他文件中读取make命令,这里-表示标准输入。另外一个实现方式是将sed的输出定向到一个文件中,然后指示make从该文件中读取。

LDFLAGS=-static:这是第二种静态链结软件包的方法。这也是最常见的方法。-all-static方式仅仅用于binutils和gettxt软件包,而不用于其他的软件包编译中。
内容

Bzip2软件包包含下列工具程序:
bzip2, bunzip2, bzcat和bzip2recover
 楼主| 发表于 2002-11-10 22:26:07 | 显示全部楼层

LFS安装中文文档(三)

描述

Bzip2:使用Burrows-Wheeler块排列文本压缩算法和霍夫曼编码来压缩文件。压缩比要大于gzip工具使用的基于LZ77/LZ78的压缩算法,接近PPM统计压缩算法族的压缩比。

Bunzip2:解压使用bzip2压缩的文件。

bzcat:(等同于bzip2 -dc)解压缩所有指定的文件到标准输出。

bzip2recover:从被破坏的bzip2文件中回复数据。
Diffutils软件包
安装Diffutils

使用下面命令安装Diffutils

    export CPPFLAGS=-Dre_max_failures=re_max_failures2 &&
    ./configure --prefix=$LFS/usr &&
    unset CPPFLAGS &&
    make LDFLAGS=-static &&
    make install

命令解释

CPPFLAGS=-Dre_max_failures=re_max_failures2: 变量CPPFLAGS是被cpp(C预处理器)使用的。该变量指示预处理器替换re_max_failures的每个实例为e_max_failures2。这个软件包在某些平台上进行拟稿静态链接方式的编译是可能出现错误(和使用的Glibc版本有关)。定义这个变量能修补这个错误。
内容


Diffutils包含下列程序:
描述

cmp and diff:这两个命令都是比较两个文件,并打印输出其不同之处。

diff3:比较三个文件的不同。

sdiff:合并两个文件并以交互方式输出结果。
Fileutils软件包
安装

使用下面命令安装 Fileutils软件包:

./configure --disable-nls --prefix=$LFS/usr --libexecdir=$LFS/bin --bindir=$LFS/bin &&
make LDFLAGS=-static &&
make install &&
cd $LFS/usr/bin &&
ln -s ../../bin/install
命令解释

--libexecdir=$LFS/bin: 该配置选项将设定将程序的可执行目录为$LFS/bin,而通常是设定为/usr/libexec目录,但其实在该目录中并不存放任何内容。因为为了防止创建一个空目录,而修改程序可执行目录。
内容

该软件包包含下列程序:

chgrp,chmod,chown,cp,dd,df,dir,dircolors,du,install,ln,ls,mkdir,mkfifo,mknod,mv,rm,rmdir,sync,touch和vdir。
描述

chgrp:修改指定的文件的属组,属组可以使用组名和组ID来指定。

chmod:修改指定文件的访问权限,访问权限可以使用数字方式表示或使用修改某个特定权限的方式修改。

chown:修改指定文件的属主或属组。

cp:拷贝文件。

dd:使用用户可选择的块大小来拷贝文件(默认是从标准输入到标准输出),并在拷贝可以进行对文件进行一定的转换。

df:显示指定文件所在分区的空间情况,若没有指定文件则显示当前加载的所有文件系统的空间情况。

ls, dir和vdir:dir和vdir是带有不通默认输出格式的ls版本。这些程序按照字母顺序显列指定的文件或目录的名字。vidr默认为长格式输出(和ls -l功能相同)。

dircolors:输出设置LS_COLOR环境变量的命令。LS_COLOR变量被用来修改ls等工具软件使用的色彩方案。

du:显示参数指定的对象使用的磁盘空间(如为对象为目录则包括子目录)。

install:拷贝文件并设置它们的访问权限,在需要时还能设定其属主和属组。

ln:创建软链接或硬链接。

mkdir:创建参数指定的名字的目录。

mkfifo:创建参数指定的名字的FIFO。

mknod:创建参数指定的名字的FIFO、字符设备文件或块设备文件。

mv:将一个文件或目录从一个目录搬移到另外一个目录,或重命名文件。

rm:删除文件或目录。

rmdir:删除目录,但是目录必须为空。

shred:安全的删除一个文件,以确保其内容不可恢复。
sync:清空文件系统缓冲到磁盘中。

touch:修改制订文件的访问和修改时间,若指定文件不存在则创建空文件。
安装GCC
GCC的安装

使用下面的命令安装GCC:

    mkdir $LFS/usr/src/gccbuild &&
    cd $LFS/usr/src/gccbuild &&
    ../gcc2.95.2.1/configure prefix=/usr \
    withgxxincludedir=/usr/include/g++ \
    enablelanguages=c,c++ disablenls &&
    make e LDFLAGS=static bootstrap &&
    make prefix=$LFS/usr local_prefix=$LFS/usr/local \
    gxx_include_dir=$LFS/usr/include/g++ install &&
    cd $LFS/lib &&
    ln s ../usr/bin/cpp &&
    cd $LFS/usr/lib &&
    ln s ../bin/cpp &&
    cd $LFS/usr/bin &&
    ln s gcc cc

命令解释

--enable-languages=c,c++: 这个编译参数仅仅安装GCC中的C和C++编译器,如果需要安装其它不常用的编译器,只需要省略"--enable-languages"编译参数即可。

ln -s ../usr/bin/cpp: 创建到$LFS/lib/cpp的符号链接,因为某些程序包指定在/lib下查找cpp。

ln -s ../bin/cpp: 创建到$LFS/usr/lib/cpp的符号链接,因为某些程序包指定在/usr/lib下寻找cpp。
内容

GCC包包含编译器、预处理程序和GNU C++库。
说明

编译器

编译器的功能是将文本格式的源代码编译成计算机能够理解的格式。源代码文件编译成目标文件后,目标代码连接器就会根据这个编译器产生的一个或多个目标文件产生一个可执行文件。

预处理程序

预处理程序或称编译预处理器实现对源代码进行编译前的预处理,例如将源代码中指定的头文件包含进来。通过头文件声明引入代码是一个节省编程时间的非常好的思想。您可以仅仅通过在代码头中插入类似#include <filename>的代码,预处理器就可以将您指定的文件的全部内容插入到需要编译的源代码中。

C++ 库

C++库是C++程序所使用的,C++库包括C++程序中经常使用的函数,这样就可以保证程序员不必要在每次编写新的程序时都重新些某些特定的通用函数(如将文本输出到终端屏幕的函数)。
安装Linux内核
Linux内核的安装

我们不是要编译一个新内核,但会在完成本章的基本系统软件的安装后做这件事。由于某些软件需要内核的一些头文件,所以我们现在需要将内核归档文件解包安装以便编译那些需要内核头文件的程序包。

通过执行下面的命令可以实现内核配置文件的创建工作:

    make mrproper &&
    yes "" | make config &&
    make dep &&
    cd $LFS/usr/include &&
    cp R ../src/linux/include/linux . &&
    mkdir asm &&
    cp a ../src/linux/include/asm/* asm
命令解释

make mrproper:这条命令确保内核树(kernel tree)是绝对干净的。

yes "" | make config: 这条命令执行make config并且用缺省值回答config脚本询问用户的每一个问题(它通过简单的等效于用户敲<Enter>键以接受问题缺省的Y或N答案来实现)。这里,我们并不是在配置真正的内核,我们仅仅是为了创建一些运行make dep所必须的配置文件,然后在$LFS/usr/src/linux/include/linux目录下创建一些象version.h一类的文件,这些文件会在编译Glibc和chroot等其它程序包时需要。

make dep: make dep检查依赖并且设置依赖文件。我们不必关心依赖检查,我们真正关心的是前面提到的make dep在$LFS/usr/src/linux/include/linux目录下创建的后面会用到的一些文件。

cp -R ../src/linux/include/linux . 与 mkdir asm && cp -a ../src/linux/include/asm/* .:这些命令拷贝内核的头文件到$LFS/usr/include中,如果您想知道为什么我们不再创建这些目录的连接而是拷贝它们,请参阅内核源代码的README文件。
内容

Linux内核包包含Linux内核。
说明

Linux和每一个Linux系统的心脏,它为系统提供生命的脉搏。当打开计算机电源并且引导Linux系统时,最先载入载入的Linux软件就是内核。内核初始化系统的硬件组件,诸如:串口、并口、声卡、网卡IDE控制器、SCSI控制器等等。简而言之,内核让软件能够在硬件上得以运行。
安装Grep
 楼主| 发表于 2002-11-10 22:28:28 | 显示全部楼层

LFS安装中文文档(四)

Grep的安装

通过下面的命令安装Grep:

    export CPPFLAGS=-Dre_max_failures=re_max_failures2 &&
    ./configure --prefix=$LFS/usr --disable-nls &&
    unset CPPFLAGS &&
    make LDFLAGS=-static &&
    make install

内容

Grep包包含egrep、fgrep和grep程序。
说明

grep:打印文件中匹配扩展正则表达式样板的行。
注:egrep(expression grep)扫描文件搜索一个字符模式,并且打印包含此模式的所有行,egrep使用完全规则表达式(使用字母数字和专用字符完全集作为串值的表达式)来匹配此模式,它使用快速判断算法,但有时需要额外的空间。

fgrep:打印文件中匹配固定串列表(以新行分隔)的行,列表中的固定串必须全部匹配。fgrep与grep和egrep不同之处在于它适用于串,而不是对匹配表达式模式的搜索。

grep:打印文件中匹配基本的正则表达式模式的行。
安装Gzip
Gzip的安装

在安装Gzip以前,必须首先解压缩gzip补丁文件。

    patch -Np1 -i ../gzip-1.2.4a.patch &&
    ./configure --prefix=$LFS/usr &&
    make LDFLAGS=-static &&
    make install &&
    cp $LFS/usr/bin/gunzip $LFS/usr/bin/gzip $LFS/bin &&
    rm $LFS/usr/bin/gunzip $LFS/usr/bin/gzip

内容

Gzip包包含compress、gunzip、gzexe、gzip、uncompress、zcat、zcmp、zdiff、zforece、zgrep、zmore和znew程序。
说明

gunzip:解压缩由gzip压缩过的文件。

gzexe:将文件压缩成可以自解压的可执行文件(当然要牺牲一定的压缩性能)。

gzip:通过Lempel-Ziv编码(LZ77)压缩指定文件的大小。

zcat:可以将命令行或其标准输入中指定的一列文件解压缩并将解压缩的数据写到标准输出上。

zcmp:在压缩文件上调用cmp程序。

zdiff:在压缩文件上调用diff程序。

Zforce:强制性地为每一个gzip文件加上.gz扩展名,这样gzip就不会对它们再次进行压缩。这个程序可能在一个文件经过传输后名字被截短的情况下能够派上用场。

zgrep:在压缩文件上调用grep程序。

zmore:是一个过滤器,它允许在一个软拷贝(soft-copy)终端上每次一屏地检查已经压缩过或普通的文本文件(和more程序很相似)。

znew:将.Z (compress)格式的文件转压缩成.gz (gzip)格式。
安装Make
Make的安装

通过下面的命令安装make:

    ./configure --prefix=$LFS/usr --disable-nls &&
    make LDFLAGS=-static &&
    make install

内容

Make包包含make程序。
说明

make程序能够自动地确定一个大型程序的哪些片段需要重新编译,并且发出命令去重新编译它们。
安装Sed
Sed的安装

通过下面的命令安装Sed:

    export CPPFLAGS=-Dre_max_failures=re_max_failures2 &&
    ./configure --prefix=$LFS/usr --bindir=$LFS/bin &&
    unset CPPFLAGS &&
    make LDFLAGS=-static &&
    make install


Sed包包含sed程序
说明

sed是一个流编辑器。流编辑器用于在标准的输入流(文件或管道的输入)上完成基本的流转换。
安装Shellutils
Sh-utils的安装

在安装Sh-utils之前,必须首先将sh-utils打包文件解包:

    patch -Np1 -i ../sh-utils-2.0.patch &&
    ./configure --prefix=$LFS/usr --disable-nls &&
    make LDFLAGS=-static &&
    make install &&
    cd $LFS/usr/bin &&
    mv date echo false pwd stty $LFS/bin &&
    mv su true uname hostname $LFS/bin
 楼主| 发表于 2002-11-10 22:30:38 | 显示全部楼层

LFS安装中文文档(五)

内容

Shellutils包含basename、chroot、date、dirname、echo、env、expr、factor、false、groups、hostid、hostname、id、logname、nice、nohup、pathchk、pinky、printenv、printf、pwd、seq、sleep、stty、su、tee、test、true、tty、uname、uptime、users、who、whoami和yes程序。
说明

basename:将文件名上的目录和后缀剥去。

chroot:允许通过指定的根目录运行命令或交互式shell。

date:通过指定格式显示当前时间或设置系统日期。

dirname:从文件名上将非目录后缀剥去。

echo:显示一行文本。

env:更改系统环境,保证程序在新环境中运行。

expr:可以求解表达式的值。

factor:打印所有指定整数的素因子。

false:退出程序时将状态码标识为失败。

groups:打印用户所在的用户组。

hostid:hostid打印当前主机的数字标识符(十六进制格式) 。

hostname:设置或打印当前主机系统的主机名。

id:打印一个用户或当前用户的真实有效的UIDs和GIDs。

logname:打印当前用户的登录名。

nice:通过修改后的调度优先级运行一个程序。

nohup:以避免挂起的方式运行输出不是TTY节点的命令。

pathchk:检查文件名是否有效或可移植。

pinky:是一个可以获得一个指定用户信息的小型finger实用程序。

printenv:打印全部或者部分系统环境配置。

printf:将数据进行格式化并且打印(功能与C语言中的printf函数相同)。

pwd:打印当前工作目录的名字。

seq:是一个序列号程序,它打印一个在特定范围内以指定的增量产生的数值。

sleep:延迟指定量的时间。

stty:改变并且打印TTY终端的行设置。

su:使用替代的用户和组ID运行shell。

tee:从标准输入读取信息并且写到标准输出和文件中。

test:检查文件类型并能够进行值比较。

true:退出时将状态码标识为成功。

tty:打印连接标准输入的终端的文件名。

uname:打印系统信息。

uptime:告诉您系统已经运行了多少时间。

users:打印登录到当前主机的当前用户的用户名。

who:显示谁曾经登录过。

whoami:打印用户的有效userid。

yes:重复地输出 一个字符串知道程序被杀死。
安装Tar
Tar的安装

为了可以通过tar直接使用bzip2文件,请使用LFS的FTP站点上的tar程序包。这个包为tar增加了一个与tar的-z选项(能够用于gzip文件)用法相同的-y选项。

通过运行下面的命令解开这个程序包:

    cd src &&
    patch -i ../../gnutarpatch.txt &&
    cd ..

通过下面的命令安装Tar:


    ./configure prefix=$LFS/usr disablenls libexecdir=$LFS/usr/bin bindir=$LFS/bin &&
    make LDFLAGS=static &&
    make install
内容

tar包包含tar和rmt程序。
说明

tar:是一个用于存储和解压称为tar存档文件的文件归档程序。

rmt:是一个通过进程间通信连接操作磁带驱动器的远程堆放与存储程序。
安装Textutils
Textutils的安装

通过运行下面的命令安装Textutils:

    ./configure --prefix=$LFS/usr --disable-nls &&
    make LDFLAGS=-static &&
    make install &&
    mv $LFS/usr/bin/cat $LFS/bin

内容

Textutils包包含cat、cksum、comm、split、cut、expand、fmt、fold、head、join、md5sum、nl、od、paste、pr、ptx、sort、split、sum、tac、tail、tr、tsort、unexpand、uniq和wc程序。
 楼主| 发表于 2002-11-10 22:32:32 | 显示全部楼层

LFS安装中文文档(六)

说明

cat:连接文件或将标准输入连接到标准输出。

cksum:打印指定文件的CRC校验和及字节数。

comm:逐行地比较两个指定的文件。

csplit:通过给定的模式将拆分成多个片段并输出到文件xx01, xx02, ..., 并将每个片段的字节数输出到标准输出。

cut:将指定文件的选定部分行打印到标准输出。

expand:将文件中的<TAB>字符转换成空格并将其写到标准输出。

fmt:重新格式化指定文件内的每一个段落,并写到标准输出。

fold:将每一个指定文件(缺省是标准输入)的输入行进行打包并写到标准输出。

head:打印每一个指定文件的头xx (缺省是10)行到标准输出。

join:在一个公共字段上连接两个文件的行。

md5sum:打印或检测MD5校验和。

nl:将每个指定文件写到标准输出并且加上行号。

od:将一个指定文件的明确表述(通常是8个字节)写到标准输出。

paste:合并几个指定文件(以<TAB>键分隔)中的相同行并写到标准输出。

pr:命令对文件进行分页或分列格式化并打印。

ptx:为文件内容产生一个序列(PERMUTE:某些资料译成交换式)索引。

sort:分类或/和合并文件并写到标准输出。

split:将一个输入文件分成固定大小的块并将它们写到PREFIXaa、PREFIXab、……等文件中。

sum:打印指定文件的校验和和块数。

tac:按照行号的倒序将指定的文件写到标准输出。

tail:打印每一个指定文件的最后xx (缺省为10)行到标准输出。

tr:通过替换(翻译、紧缩)或删除被选定字符的方式将标准输入复制到标准输出。

tsort:在标准输出上产生一个完全排序的项目清单,它们指定文件中项目的偏序是一致的。

unexpand:将每一个文件中的空格转换成制表符并写到标准输出。

uniq:将文件或标准输入中相邻重复的行删除然后写到文件或标准输出。

wc:显示指定文件的行、字和字符计数。如果指定多个文件,则会同时显示所有文件的总行数。
安装Mawk
Mawk的安装
通过下面的命令安装Mawk:

    ./configure &&
    sed \
      /"\$(CC) \$(CFLAGS) -o"/"\$(CC) \$(CFLAGS) \$(LDFLAGS) -o"/ \
      akefile | make -f - LDFLAGS=-static &&
    make BINDIR=$LFS/usr/bin \
      ANDIR=$LFS/usr/share/man/man1 install

内容

Mawk包包含mawk程序。
说明

mawk:是AWK(模式扫描与处理语言)编程语言的解释器。AWK语言对于数据文件的操作、文本的存取与处理以及算法的原型化和实验等来说很有用。
安装Texinfo
Texinfo的安装

通过下面的命令安装Texinfo:

    ./configure --prefix=$LFS/usr --disable-nls &&
    make LDFLAGS=-static &&
    make install

内容

Texinfo包包含info、install-info、makeinfo、texi2dvi和texindex程序。
说明

info:程序读取Info文档(通常在/usr/doc/info目录下)。Info文档类似于man(ual)页,同仅仅解释程序的选项的man相比,info试图解释一些更深入的知识。

install-info:程序更新info的条目。当运行info程序时,应该为其提供一个可用的主题列表。install-info就是用来维护主题列表的程序,如果info文件被手工删除了,那么也一定要在索引文件中删除相应的主题。install-info程序就是为了这个目的而设计的。当填加info文档时,这个程序同样可用。

makeinfo:程序将Texinfo源文档翻译成不同的格式,可用的格式包括:info文件,纯文本和HTML。

texi2dvi:程序打印Texinfo文档。

texindex:程序用于分类Texinfo索引文件。
安装Patch
Patch的安装

使用下面的命令通过Make安装:


    ./configure --prefix=$LFS/usr &&
    make LDFLAGS=-static &&
    make install

内容

Patch包包含patch程序。
说明

patch程序根据补丁(patch)文件修改一个文件。补丁文件通常是使用diff程序建立的一个列表,这个列表包含如何修改原始文件的一些指令。由于节省时间和空间,Patch经常用于源代码的修补。可以想象一个有1MB的程序包,这个程序包的下一个版本仅仅改变了前面一个版本的两个文件的内容,这个新版本可以完全以一个1MB 的新版本进行发布或者以一个仅仅有1KB的补丁文件进行发布。这个补丁文件可以对第一个版本的进行更新,更新后的版本就和第二个版本完全一致了。因此,如果已经下载了第一个版本,那么为了下一个版本而进行的大数据量下载工作就可以有效地避免。
创建passwd和group文件
 楼主| 发表于 2002-11-10 22:35:17 | 显示全部楼层

LFS安装中文文档(七)

为了让root用户和用户组能够通过系统认证并登录到系统,在/etc/passwd和/etc/group文件中必须为其设置入口。除了根用户组外,另外一些组也是推荐并是某些包所要求的。有下面列出GID的用户组不是任何标准的一部分。除了根用户组以外,LSB仅仅推荐将bin组的GID定义为GID 1。其它用户组名和GID可以由用户任意选择。一般来说,写得较好的程序包并不是依赖GID的数值而是采用用户组名。因为这样一来,一个组有什么样的GID对程序并没有任何影响。由于对用户组没有定义任何标准,所以我也没有遵从被Debian、RedHat和任何其它版本所采用的惯例。这里所填加的组是MAKEDEV脚本(它是/dev下创建设备文件的脚本)里所提到的。

通过下面的命令创建一个新的$LFS/etc/passwd文件:

    echo "root:x:0:0:root:/root:/bin/bash" > $LFS/etc/passwd

通过下面的命令创建一个新的$LFS/etc/group文件:

    cat > $LFS/etc/group << "EOF"
    root:x:0:
    bin:x:1:
    sys:x:2:
    kmem:x:3:
    tty:x:4:
    tape:x:5:
    daemon:x:6:
    floppy:x:7:
    disk:x:8:
    lp:x:9:
    dialout:x:10:
    audio:x:11:
    EOF

拷贝旧的NSS库文件

如果你的当前Linux系统运行的是glibc-2.0,你需要将NSS库文件拷贝到LFS分区。某些静态链接的程序仍然依赖于NSS库,尤其是那些需要查找用户名、用户ID和组ID的程序更是这样。您可以通过采用简单地执行这些库的方法来检查您当前的Linux系统运行的是哪个版本的C库,方法如下:

    /lib/libc.so.6

执行结果的第一行会会告诉您发布的版本。接下来的行包含有趣的信息,如果您当前的系统中已经安装了Glibc-2.0.x,请通过下面的命令拷贝NSS库
cp -av /lib/libnss* $LFS/lib

加载$LFS/proc文件系统

为了某些程序能够正常地运行,必须安装proc文件系统并且保证虚拟根环境下是可以访问的。安装 proc两次或者两次以上并不会有什么问题,因为它是有内核本身维护的虚拟文件系统。
通过下面的命令在$LFS/proc下安装proc文件系统:

    mount proc $LFS/proc -t proc

第八章 建立可启动的LFS系统
绪言
通过这一章将使定制的LFS可以引导启动。在这一章里,将为新的LFS系统建立一个新的核心,并将其添加到LILO中,以使我们能够通过选择LILO提示符来启动LFS系统
安装核心
内核是Linux系统的心脏。可以使用来旧系统的内核,但是我们一般倾向于通过最新的源程序来生成我们新的核心. 建立一个核心的工作也就是一个配置和编译的工作。配置一个核心并不是很复杂,如果不习惯本书的方法,可以通过阅读README文件以找出其他的选项。执行以下命令以建立一个核心:


    cd /usr/src/linux &&
    make mrproper &&
    make menuconfig &&
    make dep &&
    make bzImage &&
    make modules &&
    make modules_install &&
    cp arch/i386/boot/bzImage /boot/lfskernel &&
    cp System.map /boot

注:路径arch/i386/boot/bzImage是跟编译平台相关的。
使LFS系统可以启动
为了能从LFS系统启动,我们需要更新我们的启动加载器,这里假设用户使用的是lilo启动加载器。

我们不在chroot环境下运行lilo程序,因为这样可能产生系统MBR不可用的致命副作用,这时候用户将不的不使用启动软盘来引导系统(旧系统或LFS系统)。
首先退出chroot环境,并拷贝lfskernel文件到旧系统:

    logout
    cp $LFS/boot/lfskernel /boot

下一步就是在/et/lilo.confc中添加关于LFS的内容,使得在启动时能选择LFS系统:

    cat >> /etc/lilo.conf << "EOF"
    image=/boot/lfskernel
    label=lfs
    root=<partition>
    read-only
    EOF

这里的partition必须是LFS所在分区。然后通过运行下面命令来更新启动加载器:

    /sbin/lilo -v

最后一步是同步旧系统的lilo配置和LFS系统:

    cp /etc/lilo.conf $LFS/etc &&
    cp <kernel images> $LFS/boot

为了察看使用了哪个系统的内核镜象文件,只需要察看/etc/lilo.conf文件寻找包含“image=”内容的行。若旧系统内核文件不是存放在/boot目录下,则确保更新$LFS/etc/lilo.conf中的相应路径。

一旦启动进入了LFS系统,可以运行/sbin/lilo来在MBR中安装最新版本的lilo。
重启系统
现在我们已安装好所有的软件,启动脚本也已经被建立,现在你可以重启你的计算机了。但是首先我们需要退出chroot系统并卸载LFS分区:

    umount $LFS/proc &&
    umount $LFS

然后使用下面的命令重起系统:

    /sbin/shutdown -r now
在LILO提示符,确保输入LFS,以确保进入LFS系统而不是旧系统。第一次引导会出现syslogd和klogd报告的几个错误。这是因为我们还没有配置网络的原因。下一章我们将讨论如何配置网络所以不要担心。

当你完成本书下一章的内容后,你的LFS系统已经可以替你做你想做的任何事了。
 楼主| 发表于 2002-11-10 23:10:55 | 显示全部楼层

OH

总共有十章,以上的是第五和第八章吧,可能我搞乱了
请原谅
发表于 2002-11-11 00:15:26 | 显示全部楼层
版本老了点,我们最近想做的就是最新版本的LFS  BOOK的翻译,还有CLFS,呵呵,欢迎大家支持啊!
发表于 2002-11-11 01:58:56 | 显示全部楼层
这个是去年的CVS了, 但是写此文的前辈确实令人佩服.
很多地方说的很详细.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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