LFS详细搭建指南——适合初学者使用 (转)

转 http://blog.csdn.net/u012333520/article/details/50533002



LFS对初识Linux的人而言是一个非常不错的训练教材,流程虽说复杂,但也简单,只是单纯按照开发步骤执行即可。倘若能真正理解开发过程中的每一个步骤,那么Linux对你而言只不过是个“玩具”罢了,接下来是详细的开发步骤,每一步骤都有相应的代码以及必要的解释,有时会有截图加以辅助,适合初学者使用。


环境准备

首先是开发环境的准备,这里使用的是VMware 10.0.1有汉化版的,下载链接我就不提供了,网上一大堆,安装完后还需要序列号,这个网上也有,可以自行搜索。其实其他版本的VMware也是可以的,不过VMware10.0以上的版本才提供代码复制黏贴功能(该功能对往后的开发有极大的好处),若是VMware10.0以下的版本的话,其实也可以通过ssh链接来实现复制黏贴功能,不过有些复杂,具体实现可以看我的另一篇文章《LFS附加版——利用XShell和WinSCP辅助开发》;

对于LFS所选用的系统,这里选用的是lfslivecd-x86-6.3-r2145,下载链接如下:http://ftp.osuosl.org/pub/lfs-livecd/lfslivecd-x86-6.3-r2145.iso

首先了解一下VMWare其中一个使用技巧——快照:快照是一种可以很方便保存虚拟机当前工作状态的一种工具,其按钮位于工具栏里虚拟机按键的子按键里,点击即可为当前工作状态进行保存。在管理快照方面VMware也是尽可能更人性化,只要双击相应快照名称即可恢复到之前保存的工作状态。对于本次开发而言,快照能有效防止因中途出现某些错误而得重头做起的悲剧。不过,快照宜少不宜多,至于什么时候需要快照,凭感觉就行~

另外,虚拟机还有挂起功能,挂起的图标跟暂停一样,很容易辨识,有了挂起,在开发过程中可以随时暂停做其他事~

还有一点需要注意,虽然代码可以复制黏贴,但最好还是逐行复制黏贴,一来便于了解工作流程,二来出错时才知道哪里出错了。

新建虚拟机

点击创建新的虚拟机,选择自定义(高级)
新建

保持默认,点击下一步
自定义(高级)

选择稍后安装操作系统,选择下一步
稍后安装操作系统

客户机操作系统选择Linux,版本选择其他 Linux2.6.x 内核,选择下一步
版本

命名虚拟机,虚拟机名称自己定,位置的话最好放在一个至少有20G空间的磁盘下的一个新建文档里,文档名最好就是虚拟机的名称。比如我虚拟机名称为myLFS,文件位置就在F:\myLFS,然后下一步
虚拟机命名

接着处理器配置上,处理器的数量和每个处理器的核心数量自定,也不能说越多越好,但多点速度或许会快点,比如我就分配了一个处理器以及2个核心,当然一个处理器一个核心也是够用的,然后下一步
处理器配置

接着是内存的大小,一般默认推荐内存即可,不过如果想速度更快点的话可以选择最大推荐内存,不过前提是电脑的内存得够用以及后面的相关操作的数值得记得做出相应修改,我保持了默认大小,然后下一步
内存配置

网络连接选择使用网络地址转换(NAT),然后下一步
网络连接

SCSI控制器选择默认的LSI Logic即可,然后下一步
SCSI控制器

虚拟磁盘类型选用IDE,然后下一步
虚拟磁盘类型

接着选择创建新虚拟磁盘,然后下一步
磁盘

最大磁盘大小默认8G即可,然后选择将虚拟磁盘存储为单个文件,然后下一步
磁盘容量

保持默认,直接下一步
磁盘文件

选择完成
完成

接着就可以看见myLFS的主界面了,然后选择编辑虚拟机设置
主界面

CD/DVD(IDE)的位置那,选择使用ISO映像文件,点击浏览,把lfslivecd-x86-6.3-r2145.iso的位置添加进去,然后确定退出后,点击开启此虚拟机即可
ISO

系统初始化

把鼠标移到窗口里并点击一下使焦点位于虚拟机中,按下回车即可
初始化

接下来选择系统时间,一般选择Asia/Shanghai
时间设置

然后选择Localtime
时间设置

接下来语言设置,推荐使用English,USA(UTF-8),接着都按回车即可
语言设置

磁盘分区

输入代码(这时就可以使用复制黏贴功能了,主要利用“Ctrl+C”和“Ctrl+V”,在文章中将代码“Ctrl+C”复制,然后选中虚拟机(记得不要把鼠标点进LFS系统里面),然后“Ctrl+V”即可实现把代码黏贴进去)

<code class="hljs  has-numbering">cfdisk /dev/hda</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

正常情况:
正常

出错情况:
出错
遇到这种情况有两种解决方法,第一种解决方法是输入如下代码:

<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> /dev
ls | grep hd</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

这样可以查找到可以用的磁盘名称,这是由于系统分配磁盘时不一定用hda作为名称,有可能是hdd或其他名称的,只要把名称找到并修改成相应的代码即可进入下一步,不过这样做的话后面的全部hda都得记住改成相应的hdX,否则会出错;
第二种解决方法是直接把myLFS删掉重头开始重新建立,我更倾向于这种因为后面不一定会记得当初所分配的磁盘名叫什么了,也有碍于代码的复制黏贴

然后通过上下左右键回车选中New –> Primary –> size填512 –> Beginning 获得如下hda1,即为交换分区
交换分区

然后向下选中第二行,执行 New –> Primary –> size默认回车即可 –> Beginning获得如下hda2,即为根分区
根分区

然后选择Write –> Quit 退出即可



然后进行磁盘分区格式化

<code class="hljs avrasm has-numbering">mkswap /dev/hda1
mkfs<span class="hljs-preprocessor">.xfs</span> /dev/hda2</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

开始制作LFS



创建LFS的“创作基地”

<code class="hljs bash has-numbering"><span class="hljs-keyword">export</span> LFS=/mnt/lfs
mkdir -pv <span class="hljs-variable">$LFS</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

相关知识点

export LFS=/mnt/lfs这条命令的作用是为了后面引用“创作基地”的绝对路径方便而设置LFS这样的环境变量。



加载/dev/hda2到“创作基地”

<code class="hljs bash has-numbering">mount /dev/hda2 <span class="hljs-variable">$LFS</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



创建必要的目录并设置属性
创建源代码编译用目录

<code class="hljs perl has-numbering"><span class="hljs-keyword">mkdir</span> -v <span class="hljs-variable">$LFS</span>/sources
<span class="hljs-keyword">chmod</span> -v a+wt <span class="hljs-variable">$LFS</span>/sources</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

相关知识点

chmod a+wt是将目录或文件的属性设置为1777,这样任何人都可以对其进行读写。



创建工具链目录

<code class="hljs lasso has-numbering">mkdir <span class="hljs-attribute">-v</span> <span class="hljs-variable">$LFS</span>/tools
ln <span class="hljs-attribute">-sv</span> <span class="hljs-variable">$LFS</span>/tools <span class="hljs-subst">/</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

注意

ln -sv $LFS/tools执行后应该会输出
‘/tools’ -> ‘/mnt/lfs/tools’
表示正确。

相关知识点  

上面这两句就建立了神奇的工具链目录(是工具链目录不是工具链),这样的创建方式是为了在创建工具链和使用工具链创建目标系统的时候对于工具链的位置都是/tools,这样可保证工具链的正常使用



创建lfs用户

<code class="hljs lasso has-numbering">groupadd lfs
useradd <span class="hljs-attribute">-s</span> /bin/bash <span class="hljs-attribute">-g</span> lfs <span class="hljs-attribute">-m</span> <span class="hljs-attribute">-k</span> /dev/<span class="hljs-built_in">null</span> lfs</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



设置lfs密码,设置为空就行了,也就是输入密码的时候直接回车就成

<code class="hljs  has-numbering">passwd lfs</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



将tools和sources目录的用户改为lfs,以便后面使用lfs来操作这两个目录

<code class="hljs perl has-numbering"><span class="hljs-keyword">chown</span> -v lfs <span class="hljs-variable">$LFS</span>/tools
<span class="hljs-keyword">chown</span> -v lfs <span class="hljs-variable">$LFS</span>/sources</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



登陆到lfs用户

<code class="hljs  has-numbering">su - lfs</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这时候你会发现命令行提示符已经由#改为了$

相关知识点

其实如果不使用lfs用root也是能完成工具链的,不过需要对root的环境变量进行修改,还要防止因为输入错误而导致覆盖主系统下的文件,所以LFS手册中制作工具链部分就是为了解决这种意外的发生而用lfs用户来建立工具链



建立lfs用户的环境

<code class="hljs bash has-numbering">cat > ~/.bash_profile << <span class="hljs-string">"EOF"</span>
<span class="hljs-keyword">exec</span> env -i HOME=<span class="hljs-variable">$HOME</span> TERM=<span class="hljs-variable">$TERM</span> PS1=<span class="hljs-string">'\u:\w\$ '</span> /bin/bash
EOF
cat > ~/.bashrc << <span class="hljs-string">"EOF"</span>
<span class="hljs-keyword">set</span> +h
umask <span class="hljs-number">022</span>
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
<span class="hljs-keyword">export</span> LFS LC_ALL PATH
EOF
<span class="hljs-built_in">source</span> ~/.bash_profile</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul>

相关知识点

这里利用了bash的环境变量的设置文件将lfs的环境设置为符合编译工具链要求的最少的环境参数
这里面最重要的就是PATH这个参数,目的是为了能够利用工具链里面的工具制作工具链:首先查找/tools/bin下是否有需要的命令,如果没有再到/bin和/usr/bin下找,然后用/bin或/usr/bin下面的命令来帮助生成需要的命令并放在/tools/bin下,这样此消彼涨,最终可完成一个自给自足的工具链。



进入LFS包编译目录

<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> <span class="hljs-variable">$LFS</span>/sources</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



Binutils-2.17 - Pass 1

<code class="hljs avrasm has-numbering">tar xvf /lfs-sources/binutils-<span class="hljs-number">2.17</span><span class="hljs-preprocessor">.tar</span><span class="hljs-preprocessor">.bz</span>2
cd binutils-<span class="hljs-number">2.17</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

相关知识点

大家可以注意到后面所有的解包命令均使用tar xvf来完成,而不管文件的压缩方式是bz2还是gz,这是因为较新的tar程序都具有自动识别后缀名并自动调用相应的解压缩工具的能力,所以可以不需要指定压缩方式,但对于早期的tar命令则可能不具备这个功能因此需要你根据包的压缩方式来指定,如bz2使用j,gz使用z,对应上面的binutils则是tar xvjf /lfs-sources/binutils-2.17.tar.bz2
因LFS的LiveCD中提供的tar版本比较新,后面制作的tar版本也比较新,因此支持自动识别的能力,同时为了使文章的解压命令看起来比较统一方便维护(同样对于想制作成脚本的朋友也会比较方便)因此后面统一使用tar xvf来解压

接着我们需要建立一个目录,因为binutils建议使用一个空目录来编译,所以

<code class="hljs lasso has-numbering">mkdir <span class="hljs-attribute">-v</span> <span class="hljs-built_in">..</span>/binutils<span class="hljs-attribute">-build</span>
cd <span class="hljs-built_in">..</span>/binutils<span class="hljs-attribute">-build</span>
CC<span class="hljs-subst">=</span><span class="hljs-string">"gcc -B/usr/bin/"</span> <span class="hljs-built_in">..</span>/binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-nls</span> <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-werror</span>
make
make install
make <span class="hljs-attribute">-C</span> ld clean
make <span class="hljs-attribute">-C</span> ld LIB_PATH<span class="hljs-subst">=</span>/tools/lib
cp <span class="hljs-attribute">-v</span> ld/ld<span class="hljs-attribute">-new</span> /tools/bin
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> binutils<span class="hljs-attribute">-build</span>
rm <span class="hljs-attribute">-rf</span> binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul>



GCC-4.1.2 - Pass 1

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
mkdir <span class="hljs-attribute">-v</span> gcc<span class="hljs-attribute">-build</span>
cd gcc<span class="hljs-attribute">-build</span>
CC<span class="hljs-subst">=</span><span class="hljs-string">"gcc -B/usr/bin/"</span> <span class="hljs-built_in">..</span>/gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-local</span><span class="hljs-attribute">-prefix</span><span class="hljs-subst">=</span>/tools <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-nls</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-shared</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-languages</span><span class="hljs-subst">=</span>c
make bootstrap
make install
ln <span class="hljs-attribute">-vs</span> gcc /tools/bin/cc
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> gcc<span class="hljs-attribute">-build</span>
rm <span class="hljs-attribute">-rf</span> gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>

注意

CC=”gcc -B/usr/bin/” ../gcc-4.1.2/configure –prefix=/tools –with-local-prefix=/tools –disable-nls –enable-shared –enable-languages=c
这是完整的一行代码,不可分成两行输入



Linux-2.6.22.5 API Headers

<code class="hljs avrasm has-numbering">tar xvf /lfs-sources/linux-<span class="hljs-number">2.6</span><span class="hljs-number">.22</span><span class="hljs-number">.5</span><span class="hljs-preprocessor">.tar</span><span class="hljs-preprocessor">.bz</span>2
cd linux-<span class="hljs-number">2.6</span><span class="hljs-number">.22</span><span class="hljs-number">.5</span>
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
<span class="hljs-keyword">cp</span> -rv dest/include<span class="hljs-comment">/* /tools/include
cd ..
rm -rf linux-2.6.22.5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>



Glibc-2.5.1

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/glibc<span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd glibc<span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span>
mkdir <span class="hljs-attribute">-v</span> <span class="hljs-built_in">..</span>/glibc<span class="hljs-attribute">-build</span>
cd <span class="hljs-built_in">..</span>/glibc<span class="hljs-attribute">-build</span>
<span class="hljs-built_in">..</span>/glibc<span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>disable<span class="hljs-attribute">-profile</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-add</span><span class="hljs-attribute">-ons</span> <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>enable<span class="hljs-attribute">-kernel</span><span class="hljs-subst">=</span><span class="hljs-number">2.6</span><span class="hljs-number">.0</span> <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-binutils</span><span class="hljs-subst">=</span>/tools/bin <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>without<span class="hljs-attribute">-gd</span> <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-headers</span><span class="hljs-subst">=</span>/tools/include <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>without<span class="hljs-attribute">-selinux</span>
make
mkdir <span class="hljs-attribute">-v</span> /tools/etc
touch /tools/etc/ld<span class="hljs-built_in">.</span>so<span class="hljs-built_in">.</span>conf
make install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> glibc<span class="hljs-attribute">-build</span>
rm <span class="hljs-attribute">-rf</span> glibc<span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li></ul>

相关知识点

这里的参数–enable-kernel=2.6.0,只是为了说明kernel的大版本,所以不需要根据实际的kernel版本来改,即使是用linux-2.6.15也一样只写2.6.0就可以了



调整工具链

<code class="hljs coffeescript has-numbering">mv -v <span class="hljs-regexp">/tools/bin/</span>{ld,ld-old}
mv -v <span class="hljs-regexp">/tools/</span>$(gcc -dumpmachine)<span class="hljs-regexp">/bin/</span>{ld,ld-old}
mv -v <span class="hljs-regexp">/tools/bin/</span>{ld-<span class="hljs-keyword">new</span>,ld}
ln -sv <span class="hljs-regexp">/tools/bin/ld /tools/</span>$(gcc -dumpmachine)/bin/ld
gcc -dumpspecs | sed <span class="hljs-string">'s@^/lib/ld-linux.so.2@/tools&@g'</span> > `<span class="javascript">dirname $(gcc -print-libgcc-file-name)</span>`/specs
GCC_INCLUDEDIR=`<span class="javascript">dirname $(gcc -print-libgcc-file-name)</span>`/include
find ${GCC_INCLUDEDIR}/* -maxdepth <span class="hljs-number">0</span> -xtype d -exec rm -rvf <span class="hljs-string">'{}'</span> \;
rm -vf `<span class="javascript">grep -l <span class="hljs-string">"DO NOT EDIT THIS FILE"</span> ${GCC_INCLUDEDIR}<span class="hljs-comment">/*</span></span>`
unset GCC_INCLUDEDIR</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>

相关知识点

工具链的调整方法有好几种,而且不同版本GCC的specs可能会有不同,但实际上都是把specs文件中的/lib/ld-linux.so.2替换成了/tools/lib/ld-linux.so.2,所以即使有些文章在调整工具链上的命令和LFS手册上的不一样也不用太奇怪,当然也可以直接用gcc-dumpspecs导出后手工直接编辑specs文件



测试工具链的调整

<code class="hljs bash has-numbering"><span class="hljs-built_in">echo</span> <span class="hljs-string">'main(){}'</span> > dummy.c
cc dummy.c
readelf <span class="hljs-operator">-l</span> a.out | grep <span class="hljs-string">'tools'</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

注意

如果输出大致如下 [Requesting program interpreter: /tools/lib/ld-linux.so.2]
则表示调整成功,因为所有的库已经连接到了/tools/lib下。

删除测试

<code class="hljs avrasm has-numbering">rm -rf a<span class="hljs-preprocessor">.out</span> dummy<span class="hljs-preprocessor">.c</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



测试工具安装(Tcl-8.4.15,Expect-5.43.0,DejaGNU-1.4.4)

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/tcl8<span class="hljs-number">.4</span><span class="hljs-number">.15</span><span class="hljs-attribute">-src</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd tcl8<span class="hljs-number">.4</span><span class="hljs-number">.15</span>/unix
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools
make
make install
make install<span class="hljs-attribute">-private</span><span class="hljs-attribute">-headers</span>
ln <span class="hljs-attribute">-sv</span> tclsh8<span class="hljs-number">.4</span> /tools/bin/tclsh
cd <span class="hljs-variable">$LFS</span>/sources
tar xvf /lfs<span class="hljs-attribute">-sources</span>/expect<span class="hljs-subst">-</span><span class="hljs-number">5.43</span><span class="hljs-number">.0</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd expect<span class="hljs-subst">-</span><span class="hljs-number">5.43</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> /lfs<span class="hljs-attribute">-sources</span>/expect<span class="hljs-subst">-</span><span class="hljs-number">5.43</span><span class="hljs-number">.0</span><span class="hljs-attribute">-spawn</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
cp configure{,<span class="hljs-built_in">.</span>bak}
sed <span class="hljs-string">'s:/usr/local/bin:/bin:'</span> configure<span class="hljs-built_in">.</span>bak <span class="hljs-subst">></span> configure
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-tcl</span><span class="hljs-subst">=</span>/tools/lib <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-tclinclude</span><span class="hljs-subst">=</span>/tools/include <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-x</span><span class="hljs-subst">=</span>no
make
make SCRIPTS<span class="hljs-subst">=</span><span class="hljs-string">""</span> install
cd <span class="hljs-variable">$LFS</span>/sources
tar xvf /lfs<span class="hljs-attribute">-sources</span>/dejagnu<span class="hljs-subst">-</span><span class="hljs-number">1.4</span><span class="hljs-number">.4</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd dejagnu<span class="hljs-subst">-</span><span class="hljs-number">1.4</span><span class="hljs-number">.4</span>
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools
make install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> tcl8<span class="hljs-number">.4</span><span class="hljs-number">.15</span>
rm <span class="hljs-attribute">-rf</span> expect<span class="hljs-subst">-</span><span class="hljs-number">5.43</span>
rm <span class="hljs-attribute">-rf</span> dejagnu<span class="hljs-subst">-</span><span class="hljs-number">1.4</span><span class="hljs-number">.4</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li></ul>



GCC-4.1.2 - Pass 2

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span>
cp <span class="hljs-attribute">-v</span> gcc/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>{,<span class="hljs-built_in">.</span>orig}
sed <span class="hljs-string">'s@\./fixinc\.sh@-c true@'</span> gcc/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span><span class="hljs-built_in">.</span>orig <span class="hljs-subst">></span> gcc/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
cp <span class="hljs-attribute">-v</span> gcc/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>{,<span class="hljs-built_in">.</span>tmp}
sed <span class="hljs-string">'s/^XCFLAGS =$/& -fomit-frame-pointer/'</span> gcc/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span><span class="hljs-built_in">.</span>tmp <span class="hljs-subst">></span> gcc/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> /lfs<span class="hljs-attribute">-sources</span>/gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span><span class="hljs-attribute">-specs</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
mkdir <span class="hljs-attribute">-v</span> <span class="hljs-built_in">..</span>/gcc<span class="hljs-attribute">-build</span>
cd <span class="hljs-built_in">..</span>/gcc<span class="hljs-attribute">-build</span>
<span class="hljs-built_in">..</span>/gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-local</span><span class="hljs-attribute">-prefix</span><span class="hljs-subst">=</span>/tools <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>enable<span class="hljs-attribute">-clocale</span><span class="hljs-subst">=</span>gnu <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-shared</span> <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>enable<span class="hljs-attribute">-threads</span><span class="hljs-subst">=</span>posix <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-__cxa_atexit</span> <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>enable<span class="hljs-attribute">-languages</span><span class="hljs-subst">=</span>c,c<span class="hljs-subst">++</span> <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-libstdcxx</span><span class="hljs-attribute">-pch</span>
make
make install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> gcc<span class="hljs-attribute">-build</span>
rm <span class="hljs-attribute">-rf</span> gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li></ul>



再次测试工具链的调整

<code class="hljs bash has-numbering"><span class="hljs-built_in">echo</span> <span class="hljs-string">'main(){}'</span> > dummy.c
cc dummy.c
readelf <span class="hljs-operator">-l</span> a.out | grep <span class="hljs-string">'tools'</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

注意

如果输出大致如下 [Requesting program interpreter: /tools/lib/ld-linux.so.2]
则表示调整成功,因为所有的库已经连接到了/tools/lib下。

删除测试

<code class="hljs avrasm has-numbering">rm -rf a<span class="hljs-preprocessor">.out</span> dummy<span class="hljs-preprocessor">.c</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



Binutils-2.17 - Pass 2

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
mkdir <span class="hljs-attribute">-v</span> binutils<span class="hljs-attribute">-build</span>
cd binutils<span class="hljs-attribute">-build</span>
<span class="hljs-built_in">..</span>/binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-nls</span> <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-lib</span><span class="hljs-attribute">-path</span><span class="hljs-subst">=</span>/tools/lib
make
make install
make <span class="hljs-attribute">-C</span> ld clean
make <span class="hljs-attribute">-C</span> ld LIB_PATH<span class="hljs-subst">=</span>/usr/lib:/lib
cp <span class="hljs-attribute">-v</span> ld/ld<span class="hljs-attribute">-new</span> /tools/bin
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> binutils<span class="hljs-attribute">-build</span>
rm <span class="hljs-attribute">-rf</span> binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul>



Ncurses-5.6

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/ncurses<span class="hljs-subst">-</span><span class="hljs-number">5.6</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd ncurses<span class="hljs-subst">-</span><span class="hljs-number">5.6</span>
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-shared</span> <span class="hljs-subst">--</span>without<span class="hljs-attribute">-debug</span> <span class="hljs-subst">--</span>without<span class="hljs-attribute">-ada</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-overwrite</span>
make
make install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> ncurses<span class="hljs-subst">-</span><span class="hljs-number">5.6</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Bash-3.2

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/bash<span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd bash<span class="hljs-subst">-</span><span class="hljs-number">3.2</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> /lfs<span class="hljs-attribute">-sources</span>/bash<span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-attribute">-fixes</span><span class="hljs-subst">-</span><span class="hljs-number">5.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">--</span>without<span class="hljs-attribute">-bash</span><span class="hljs-attribute">-malloc</span>
make
make install
ln <span class="hljs-attribute">-vs</span> bash /tools/bin/sh
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> bash<span class="hljs-subst">-</span><span class="hljs-number">3.2</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>



Bzip2-1.0.4

<code class="hljs bash has-numbering">tar xvf /lfs-sources/bzip2-<span class="hljs-number">1.0</span>.<span class="hljs-number">4</span>.tar.gz
<span class="hljs-built_in">cd</span> bzip2-<span class="hljs-number">1.0</span>.<span class="hljs-number">4</span>
make
make PREFIX=/tools install
<span class="hljs-built_in">cd</span> ..
rm -rf bzip2-<span class="hljs-number">1.0</span>.<span class="hljs-number">4</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>



Coreutils-6.9

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span>
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools
make
make install
cp <span class="hljs-attribute">-v</span> src/su /tools/bin/su<span class="hljs-attribute">-tools</span>
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>



Diffutils-2.8.1

<code class="hljs bash has-numbering">tar xvf /lfs-sources/diffutils-<span class="hljs-number">2.8</span>.<span class="hljs-number">1</span>.tar.gz
<span class="hljs-built_in">cd</span> diffutils-<span class="hljs-number">2.8</span>.<span class="hljs-number">1</span>
./configure --prefix=/tools
make
make install
<span class="hljs-built_in">cd</span> ..
rm -rf diffutils-<span class="hljs-number">2.8</span>.<span class="hljs-number">1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Findutils-4.2.31

<code class="hljs bash has-numbering">tar xvf /lfs-sources/findutils-<span class="hljs-number">4.2</span>.<span class="hljs-number">31</span>.tar.gz
<span class="hljs-built_in">cd</span> findutils-<span class="hljs-number">4.2</span>.<span class="hljs-number">31</span>
./configure --prefix=/tools
make
make install
<span class="hljs-built_in">cd</span> ..
rm -rf findutils-<span class="hljs-number">4.2</span>.<span class="hljs-number">31</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Gawk-3.1.5

<code class="hljs avrasm has-numbering">tar xvf /lfs-sources/gawk-<span class="hljs-number">3.1</span><span class="hljs-number">.5</span><span class="hljs-preprocessor">.tar</span><span class="hljs-preprocessor">.bz</span>2
cd gawk-<span class="hljs-number">3.1</span><span class="hljs-number">.5</span>
./configure --prefix=/tools
cat >> config<span class="hljs-preprocessor">.h</span> << <span class="hljs-string">"EOF"</span>
<span class="hljs-preprocessor">#define HAVE_LANGINFO_CODESET 1</span>
<span class="hljs-preprocessor">#define HAVE_LC_MESSAGES 1</span>
EOF
make
make install
cd ..
rm -rf gawk-<span class="hljs-number">3.1</span><span class="hljs-number">.5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul>



Gettext-0.16.1

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/gettext<span class="hljs-subst">-</span><span class="hljs-number">0.16</span><span class="hljs-number">.1</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd gettext<span class="hljs-subst">-</span><span class="hljs-number">0.16</span><span class="hljs-number">.1</span>
cd gettext<span class="hljs-attribute">-tools</span>
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-shared</span>
make <span class="hljs-attribute">-C</span> gnulib<span class="hljs-attribute">-lib</span>
make <span class="hljs-attribute">-C</span> src msgfmt
cp <span class="hljs-attribute">-v</span> src/msgfmt /tools/bin
cd <span class="hljs-variable">$LFS</span>/sources
rm <span class="hljs-attribute">-rf</span> gettext<span class="hljs-subst">-</span><span class="hljs-number">0.16</span><span class="hljs-number">.1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>



Grep-2.5.1a

<code class="hljs livecodeserver has-numbering">tar xvf /lfs-sources/grep-<span class="hljs-number">2.5</span><span class="hljs-number">.1</span><span class="hljs-operator">a</span>.tar.bz2
cd grep-<span class="hljs-number">2.5</span><span class="hljs-number">.1</span><span class="hljs-operator">a</span>
./configure <span class="hljs-comment">--prefix=/tools --disable-perl-regexp</span>
make
make install
cd ..
rm -rf grep-<span class="hljs-number">2.5</span><span class="hljs-number">.1</span><span class="hljs-operator">a</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Gzip-1.3.12

<code class="hljs bash has-numbering">tar xvf /lfs-sources/gzip-<span class="hljs-number">1.3</span>.<span class="hljs-number">12</span>.tar.gz
<span class="hljs-built_in">cd</span> gzip-<span class="hljs-number">1.3</span>.<span class="hljs-number">12</span>
./configure --prefix=/tools
make
make install
<span class="hljs-built_in">cd</span> ..
rm -rf gzip-<span class="hljs-number">1.3</span>.<span class="hljs-number">12</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Make-3.81

<code class="hljs go has-numbering">tar xvf /lfs-sources/<span class="hljs-built_in">make</span><span class="hljs-number">-3.81</span>.tar.bz2
cd <span class="hljs-built_in">make</span><span class="hljs-number">-3.81</span>
./configure --prefix=/tools
<span class="hljs-built_in">make</span>
<span class="hljs-built_in">make</span> install
cd ..
rm -rf <span class="hljs-built_in">make</span><span class="hljs-number">-3.81</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Patch-2.5.4

<code class="hljs glsl has-numbering">tar xvf /lfs-sources/<span class="hljs-keyword">patch</span>-<span class="hljs-number">2.5</span><span class="hljs-number">.4</span>.tar.gz
cd <span class="hljs-keyword">patch</span>-<span class="hljs-number">2.5</span><span class="hljs-number">.4</span>
./configure --prefix=/tools
make
make install
cd ..
rm -rf <span class="hljs-keyword">patch</span>-<span class="hljs-number">2.5</span><span class="hljs-number">.4</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Perl-5.8.8

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/perl<span class="hljs-subst">-</span><span class="hljs-number">5.8</span><span class="hljs-number">.8</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd perl<span class="hljs-subst">-</span><span class="hljs-number">5.8</span><span class="hljs-number">.8</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> /lfs<span class="hljs-attribute">-sources</span>/perl<span class="hljs-subst">-</span><span class="hljs-number">5.8</span><span class="hljs-number">.8</span><span class="hljs-attribute">-libc</span><span class="hljs-subst">-</span><span class="hljs-number">2.</span>patch
<span class="hljs-built_in">.</span>/configure<span class="hljs-built_in">.</span>gnu <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/tools <span class="hljs-attribute">-Dstatic_ext</span><span class="hljs-subst">=</span><span class="hljs-string">'Data/Dumper Fcntl IO POSIX'</span>
make perl utilities
cp <span class="hljs-attribute">-v</span> perl pod/pod2man /tools/bin
mkdir <span class="hljs-attribute">-pv</span> /tools/lib/perl5/<span class="hljs-number">5.8</span><span class="hljs-number">.8</span>
cp <span class="hljs-attribute">-Rv</span> lib<span class="hljs-comment">/* /tools/lib/perl5/5.8.8
cd ..
rm -rf perl-5.8.8</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>



Sed-4.1.5

<code class="hljs bash has-numbering">tar xvf /lfs-sources/sed-<span class="hljs-number">4.1</span>.<span class="hljs-number">5</span>.tar.gz
<span class="hljs-built_in">cd</span> sed-<span class="hljs-number">4.1</span>.<span class="hljs-number">5</span>
./configure --prefix=/tools
make
make install
<span class="hljs-built_in">cd</span> ..
rm -rf sed-<span class="hljs-number">4.1</span>.<span class="hljs-number">5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Tar-1.18

<code class="hljs bash has-numbering">tar xvf /lfs-sources/tar-<span class="hljs-number">1.18</span>.tar.bz2
<span class="hljs-built_in">cd</span> tar-<span class="hljs-number">1.18</span>
./configure --prefix=/tools
make
make install
<span class="hljs-built_in">cd</span> ..
rm -rf tar-<span class="hljs-number">1.18</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Texinfo-4.9

<code class="hljs bash has-numbering">tar xvf /lfs-sources/texinfo-<span class="hljs-number">4.9</span>.tar.bz2
<span class="hljs-built_in">cd</span> texinfo-<span class="hljs-number">4.9</span>
./configure --prefix=/tools
make
make install
<span class="hljs-built_in">cd</span> ..
rm -rf texinfo-<span class="hljs-number">4.9</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Util-linux-2.12r

<code class="hljs lasso has-numbering">tar xvf /lfs<span class="hljs-attribute">-sources</span>/util<span class="hljs-attribute">-linux</span><span class="hljs-subst">-</span><span class="hljs-number">2.12</span>r<span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd util<span class="hljs-attribute">-linux</span><span class="hljs-subst">-</span><span class="hljs-number">2.12</span>r
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s@/usr/include@/tools/include@g'</span> configure
<span class="hljs-built_in">.</span>/configure
make <span class="hljs-attribute">-C</span> lib
make <span class="hljs-attribute">-C</span> mount mount umount
make <span class="hljs-attribute">-C</span> text<span class="hljs-attribute">-utils</span> more
cp <span class="hljs-attribute">-v</span> mount<span class="hljs-subst">/</span>{,u}mount text<span class="hljs-attribute">-utils</span>/more /tools/bin
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> util<span class="hljs-attribute">-linux</span><span class="hljs-subst">-</span><span class="hljs-number">2.12</span>r</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>



Stripping

<code class="hljs coffeescript has-numbering">strip --strip-debug <span class="hljs-regexp">/tools/lib/</span>*
strip --strip-unneeded <span class="hljs-regexp">/tools/</span>{,s}bin/*
rm -rf <span class="hljs-regexp">/tools/</span>{info,man}</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



退出lfs用户

<code class="hljs bash has-numbering"><span class="hljs-keyword">exit</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

现在你应该是处于root用户状态的,看看你的命令行提示符是不是回到了#



重新设置目录权限

<code class="hljs perl has-numbering"><span class="hljs-keyword">chown</span> -R root:root <span class="hljs-variable">$LFS</span>/tools</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



创建三个重要目录

<code class="hljs perl has-numbering"><span class="hljs-keyword">mkdir</span> -pv <span class="hljs-variable">$LFS</span>/{dev,proc,sys}</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



创建两个目标系统所必须的设备文件

<code class="hljs lasso has-numbering">mknod <span class="hljs-attribute">-m</span> <span class="hljs-number">600</span> <span class="hljs-variable">$LFS</span>/dev/console c <span class="hljs-number">5</span> <span class="hljs-number">1</span>
mknod <span class="hljs-attribute">-m</span> <span class="hljs-number">666</span> <span class="hljs-variable">$LFS</span>/dev/<span class="hljs-built_in">null</span> c <span class="hljs-number">1</span> <span class="hljs-number">3</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



利用主系统加载几个重要的文件系统

<code class="hljs lasso has-numbering">mount <span class="hljs-attribute">-v</span> <span class="hljs-subst">--</span>bind /dev <span class="hljs-variable">$LFS</span>/dev
mount <span class="hljs-attribute">-vt</span> devpts devpts <span class="hljs-variable">$LFS</span>/dev/pts
mount <span class="hljs-attribute">-vt</span> tmpfs shm <span class="hljs-variable">$LFS</span>/dev/shm
mount <span class="hljs-attribute">-vt</span> proc proc <span class="hljs-variable">$LFS</span>/proc
mount <span class="hljs-attribute">-vt</span> sysfs sysfs <span class="hljs-variable">$LFS</span>/sys</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

相关知识点

mount命令加载的分区在重新启动后就失效了,所以在这其中重新启动则需要重新加载



将lfs-sources里面所有源码包复制到$LFS/sources目录中

<code class="hljs bash has-numbering">cp <span class="hljs-operator">-a</span> /lfs-sources/* <span class="hljs-variable">$LFS</span>/sources/</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



Chroot到目标系统的目录

<code class="hljs ruby has-numbering">chroot <span class="hljs-string">"$LFS"</span> /tools/bin/env -i \
<span class="hljs-constant">HOME</span>=<span class="hljs-regexp">/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin</span><span class="hljs-symbol">:/usr/bin</span><span class="hljs-symbol">:/sbin</span><span class="hljs-symbol">:/usr/sbin</span><span class="hljs-symbol">:/tools/bin</span> \
/tools/bin/bash --login +h</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

注意

这个时候你的提示符会是“I have no name!”



建立目标系统的目录结构

<code class="hljs lasso has-numbering">mkdir <span class="hljs-attribute">-pv</span> <span class="hljs-subst">/</span>{bin,boot,etc/opt,home,lib,mnt,opt}
mkdir <span class="hljs-attribute">-pv</span> <span class="hljs-subst">/</span>{media<span class="hljs-subst">/</span>{floppy,cdrom},sbin,srv,<span class="hljs-built_in">var</span>}
install <span class="hljs-attribute">-dv</span> <span class="hljs-attribute">-m</span> <span class="hljs-number">0750</span> /root
install <span class="hljs-attribute">-dv</span> <span class="hljs-attribute">-m</span> <span class="hljs-number">1777</span> /tmp /<span class="hljs-built_in">var</span>/tmp
mkdir <span class="hljs-attribute">-pv</span> /usr<span class="hljs-subst">/</span>{,<span class="hljs-built_in">local</span><span class="hljs-subst">/</span>}{bin,include,lib,sbin,src}
mkdir <span class="hljs-attribute">-pv</span> /usr<span class="hljs-subst">/</span>{,<span class="hljs-built_in">local</span><span class="hljs-subst">/</span>}share<span class="hljs-subst">/</span>{doc,info,locale,man}
mkdir <span class="hljs-attribute">-pv</span> /usr<span class="hljs-subst">/</span>{,<span class="hljs-built_in">local</span><span class="hljs-subst">/</span>}share<span class="hljs-subst">/</span>{misc,terminfo,zoneinfo}
mkdir <span class="hljs-attribute">-pv</span> /usr<span class="hljs-subst">/</span>{,<span class="hljs-built_in">local</span><span class="hljs-subst">/</span>}share/man/man{<span class="hljs-number">1.</span><span class="hljs-number">.8</span>}
for dir <span class="hljs-keyword">in</span> /usr /usr/<span class="hljs-built_in">local</span>; <span class="hljs-keyword">do</span>
ln <span class="hljs-attribute">-sv</span> share<span class="hljs-subst">/</span>{man,doc,info} <span class="hljs-variable">$dir</span>
done
mkdir <span class="hljs-attribute">-pv</span> /<span class="hljs-built_in">var</span><span class="hljs-subst">/</span>{lock,<span class="hljs-keyword">log</span>,mail,run,spool}
mkdir <span class="hljs-attribute">-pv</span> /<span class="hljs-built_in">var</span><span class="hljs-subst">/</span>{opt,<span class="hljs-keyword">cache</span>,lib<span class="hljs-subst">/</span>{misc,locate},<span class="hljs-built_in">local</span>}</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li></ul>



创建几个必要的链接

<code class="hljs livecodeserver has-numbering"><span class="hljs-built_in">ln</span> -sv /tools/bin/{bash,cat,echo,grep,pwd,stty} /bin
<span class="hljs-built_in">ln</span> -sv /tools/bin/perl /usr/bin
<span class="hljs-built_in">ln</span> -sv /tools/lib/libgcc_s.so{,<span class="hljs-number">.1</span>} /usr/lib
<span class="hljs-built_in">ln</span> -sv /tools/lib/libstdc++.so{,<span class="hljs-number">.6</span>} /usr/lib
<span class="hljs-built_in">ln</span> -sv bash /bin/sh
touch /etc/mtab</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

相关知识点

在目标系统的编译过程中,部分编译程序会用绝对路径来寻找命令或文件



创建root及nobody用户和必要的组

<code class="hljs avrasm has-numbering">cat > /etc/passwd << <span class="hljs-string">"EOF"</span>
<span class="hljs-label">root:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">0</span>:<span class="hljs-number">0</span>:root:/root:/bin/bash
<span class="hljs-label">nobody:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">99</span>:<span class="hljs-number">99</span>:Unprivileged User:/dev/null:/bin/false
EOF
cat > /etc/group << <span class="hljs-string">"EOF"</span>
<span class="hljs-label">root:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">0</span>:
<span class="hljs-label">bin:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">1</span>:
<span class="hljs-label">sys:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">2</span>:
<span class="hljs-label">kmem:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">3</span>:
<span class="hljs-label">tty:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">4</span>:
<span class="hljs-label">tape:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">5</span>:
<span class="hljs-label">daemon:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">6</span>:
<span class="hljs-label">floppy:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">7</span>:
<span class="hljs-label">disk:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">8</span>:
<span class="hljs-label">lp:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">9</span>:
<span class="hljs-label">dialout:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">10</span>:
<span class="hljs-label">audio:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">11</span>:
<span class="hljs-label">video:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">12</span>:
<span class="hljs-label">utmp:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">13</span>:
<span class="hljs-label">usb:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">14</span>:
<span class="hljs-label">cdrom:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">15</span>:
<span class="hljs-label">mail:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">34</span>:
<span class="hljs-label">nogroup:</span><span class="hljs-built_in">x</span>:<span class="hljs-number">99</span>:
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li></ul>



重新加载bash

<code class="hljs bash has-numbering"><span class="hljs-keyword">exec</span> /tools/bin/bash --login +h</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

前面的提示符不会是“I have no name!”,而改成了”root”



创建和设置几个临时文件和日志文件

<code class="hljs lasso has-numbering">touch /<span class="hljs-built_in">var</span>/run/utmp /<span class="hljs-built_in">var</span>/<span class="hljs-keyword">log</span><span class="hljs-subst">/</span>{btmp,lastlog,wtmp}
chgrp <span class="hljs-attribute">-v</span> utmp /<span class="hljs-built_in">var</span>/run/utmp /<span class="hljs-built_in">var</span>/<span class="hljs-keyword">log</span>/lastlog
chmod <span class="hljs-attribute">-v</span> <span class="hljs-number">664</span> /<span class="hljs-built_in">var</span>/run/utmp /<span class="hljs-built_in">var</span>/<span class="hljs-keyword">log</span>/lastlog</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



进入到源码目录

<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> /sources
<span class="hljs-keyword">export</span> LFS=/sources</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



Linux-2.6.22.5

<code class="hljs ruby has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/linux-<span class="hljs-number">2.6</span>.<span class="hljs-number">22.5</span>.tar.bz2
cd linux-<span class="hljs-number">2.6</span>.<span class="hljs-number">22.5</span>
sed -i <span class="hljs-string">'/scsi/d'</span> <span class="hljs-keyword">include</span>/<span class="hljs-constant">Kbuild</span>
make mrproper
make headers_check
make <span class="hljs-constant">INSTALL_HDR_PATH</span>=dest headers_install
cp -rv dest/<span class="hljs-keyword">include</span>/* <span class="hljs-regexp">/usr/include</span>
cd ..
rm -rf linux-<span class="hljs-number">2.6</span>.<span class="hljs-number">22.5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>



Man-pages-2.63

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/man<span class="hljs-attribute">-pages</span><span class="hljs-subst">-</span><span class="hljs-number">2.63</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd man<span class="hljs-attribute">-pages</span><span class="hljs-subst">-</span><span class="hljs-number">2.63</span>
make install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> man<span class="hljs-attribute">-pages</span><span class="hljs-subst">-</span><span class="hljs-number">2.63</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



Glibc-2.5.1

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/glibc<span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd glibc<span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span>
tar <span class="hljs-attribute">-xvf</span> <span class="hljs-variable">$LFS</span>/glibc<span class="hljs-attribute">-libidn</span><span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
mv glibc<span class="hljs-attribute">-libidn</span><span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span> libidn
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'/vi_VN.TCVN/d'</span> localedata/SUPPORTED
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|'</span> scripts/test<span class="hljs-attribute">-installation</span><span class="hljs-built_in">.</span>pl
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s|@BASH@|/bin/bash|'</span> elf/ldd<span class="hljs-built_in">.</span>bash<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
mkdir <span class="hljs-attribute">-v</span> <span class="hljs-built_in">..</span>/glibc<span class="hljs-attribute">-build</span>
cd <span class="hljs-built_in">..</span>/glibc<span class="hljs-attribute">-build</span>
<span class="hljs-built_in">..</span>/glibc<span class="hljs-subst">-</span><span class="hljs-number">2.5</span><span class="hljs-number">.1</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>disable<span class="hljs-attribute">-profile</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-add</span><span class="hljs-attribute">-ons</span> <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>enable<span class="hljs-attribute">-kernel</span><span class="hljs-subst">=</span><span class="hljs-number">2.6</span><span class="hljs-number">.0</span> <span class="hljs-subst">--</span>libexecdir<span class="hljs-subst">=</span>/usr/lib/glibc
make
make <span class="hljs-attribute">-k</span> check <span class="hljs-number">2</span><span class="hljs-subst">>&</span><span class="hljs-number">1</span> <span class="hljs-subst">|</span> tee glibc<span class="hljs-attribute">-check</span><span class="hljs-attribute">-log</span>
grep Error glibc<span class="hljs-attribute">-check</span><span class="hljs-attribute">-log</span>
touch /etc/ld<span class="hljs-built_in">.</span>so<span class="hljs-built_in">.</span>conf
make install
make localedata/install<span class="hljs-attribute">-locales</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul>



建立几个重要文件

<code class="hljs avrasm has-numbering">cat > /etc/nsswitch<span class="hljs-preprocessor">.conf</span> << <span class="hljs-string">"EOF"</span>
<span class="hljs-preprocessor"># Begin /etc/nsswitch.conf</span>
<span class="hljs-label">passwd:</span> files
<span class="hljs-label">group:</span> files
<span class="hljs-label">shadow:</span> files
<span class="hljs-label">hosts:</span> files dns
<span class="hljs-label">networks:</span> files
<span class="hljs-label">protocols:</span> files
<span class="hljs-label">services:</span> files
<span class="hljs-label">ethers:</span> files
<span class="hljs-label">rpc:</span> files
<span class="hljs-preprocessor"># End /etc/nsswitch.conf</span>
EOF
<span class="hljs-keyword">cp</span> -v --remove-destination /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cat > /etc/<span class="hljs-keyword">ld</span><span class="hljs-preprocessor">.so</span><span class="hljs-preprocessor">.conf</span> << <span class="hljs-string">"EOF"</span>
/usr/local/lib
/opt/lib
EOF
cd ..
rm -rf glibc-build
rm -rf glibc-<span class="hljs-number">2.5</span><span class="hljs-number">.1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li></ul>



调整工具链

<code class="hljs lasso has-numbering">mv <span class="hljs-attribute">-v</span> /tools/bin<span class="hljs-subst">/</span>{ld,ld<span class="hljs-attribute">-old</span>}
mv <span class="hljs-attribute">-v</span> /tools<span class="hljs-subst">/</span>$(gcc <span class="hljs-attribute">-dumpmachine</span>)/bin<span class="hljs-subst">/</span>{ld,ld<span class="hljs-attribute">-old</span>}
mv <span class="hljs-attribute">-v</span> /tools/bin<span class="hljs-subst">/</span>{ld<span class="hljs-attribute">-new</span>,ld}
ln <span class="hljs-attribute">-sv</span> /tools/bin/ld /tools<span class="hljs-subst">/</span>$(gcc <span class="hljs-attribute">-dumpmachine</span>)/bin/ld</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>



调整specs文件

<code class="hljs haml has-numbering">gcc -dumpspecs | sed \
-<span class="ruby">e <span class="hljs-string">'s@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g'</span> \
</span>-<span class="ruby">e <span class="hljs-string">'/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}'</span> \
</span>-<span class="ruby">e <span class="hljs-string">'/\*cpp:/{n;s@$@ -isystem /usr/include@}'</span> > \
</span>`dirname $(gcc --print-libgcc-file-name)`/specs</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



测试工具链是否被调整成功

<code class="hljs lasso has-numbering">echo <span class="hljs-string">'main(){}'</span> <span class="hljs-subst">></span> dummy<span class="hljs-built_in">.</span>c
cc dummy<span class="hljs-built_in">.</span>c <span class="hljs-attribute">-v</span> <span class="hljs-attribute">-Wl</span>,<span class="hljs-subst">--</span>verbose <span class="hljs-subst">&></span> dummy<span class="hljs-built_in">.</span><span class="hljs-keyword">log</span>
readelf <span class="hljs-attribute">-l</span> a<span class="hljs-built_in">.</span>out <span class="hljs-subst">|</span> grep <span class="hljs-string">'/lib'</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

注意

如果显示
[Requesting program interpreter:/lib/ld-linux.so.2]
表示调整成功,动态库已经连接到了目标系统的/lib下

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> -o <span class="hljs-string">'/usr/lib.*/crt[1in].*succeeded'</span> dummy.<span class="hljs-keyword">log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
/usr/lib/crt1.o succeeded   
/usr/lib/crti.o succeeded
/usr/lib/crtn.o succeeded

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> -B1 <span class="hljs-string">'^ /usr/include'</span> dummy.<span class="hljs-keyword">log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
#include <…> search starts here:   
/usr/include

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> <span class="hljs-string">'SEARCH.*/usr/lib'</span> dummy.<span class="hljs-keyword">log</span> |sed <span class="hljs-string">'s|; |\n|g'</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
SEARCH_DIR(“/tools/i686-pc-linux-gnu/lib”)
SEARCH_DIR(“/usr/lib”)   
SEARCH_DIR(“/lib”);

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> <span class="hljs-string">"/lib/libc.so.6 "</span> dummy.<span class="hljs-keyword">log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
attempt to open /lib/libc.so.6 succeeded

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> found dummy.<span class="hljs-keyword">log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
found ld-linux.so.2 at /lib/ld-linux.so.2

如果上面均显示正常,那么表明工具链调整成功,可以删除测试文件了

<code class="hljs avrasm has-numbering">rm -v dummy<span class="hljs-preprocessor">.c</span> a<span class="hljs-preprocessor">.out</span> dummy<span class="hljs-preprocessor">.log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



Binutils-2.17

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
mkdir binutils<span class="hljs-attribute">-build</span>
cd binutils<span class="hljs-attribute">-build</span>
<span class="hljs-built_in">..</span>/binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-shared</span>
make tooldir<span class="hljs-subst">=</span>/usr</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里测试统计可能会出现个别失败

<code class="hljs lasso has-numbering">make tooldir<span class="hljs-subst">=</span>/usr install
cp <span class="hljs-attribute">-v</span> <span class="hljs-built_in">..</span>/binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span>/include/libiberty<span class="hljs-built_in">.</span>h /usr/include
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> binutils<span class="hljs-attribute">-build</span>
rm <span class="hljs-attribute">-rf</span> binutils<span class="hljs-subst">-</span><span class="hljs-number">2.17</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



GCC-4.1.2

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s/install_to_$(INSTALL_DEST) //'</span> libiberty/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s/^XCFLAGS =$/& -fomit-frame-pointer/'</span> gcc/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s@\./fixinc\.sh@-c true@'</span> gcc/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s/@have_mktemp_command@/yes/'</span> gcc/gccbug<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
mkdir <span class="hljs-attribute">-v</span> <span class="hljs-built_in">..</span>/gcc<span class="hljs-attribute">-build</span>
cd <span class="hljs-built_in">..</span>/gcc<span class="hljs-attribute">-build</span>
<span class="hljs-built_in">..</span>/gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>libexecdir<span class="hljs-subst">=</span>/usr/lib <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-shared</span> <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>enable<span class="hljs-attribute">-threads</span><span class="hljs-subst">=</span>posix <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-__cxa_atexit</span> <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>enable<span class="hljs-attribute">-clocale</span><span class="hljs-subst">=</span>gnu <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-languages</span><span class="hljs-subst">=</span>c,c<span class="hljs-subst">++</span>
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li></ul>

测试

<code class="hljs rust has-numbering">make -k <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check时间比较长,可能会有一些错误发生

<code class="hljs lasso has-numbering">make install
ln <span class="hljs-attribute">-sv</span> <span class="hljs-built_in">..</span>/usr/bin/cpp /lib
ln <span class="hljs-attribute">-sv</span> gcc /usr/bin/cc
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> gcc<span class="hljs-attribute">-build</span>
rm <span class="hljs-attribute">-rf</span> gcc<span class="hljs-subst">-</span><span class="hljs-number">4.1</span><span class="hljs-number">.2</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>



测试工具链是否正确

<code class="hljs lasso has-numbering">echo <span class="hljs-string">'main(){}'</span> <span class="hljs-subst">></span> dummy<span class="hljs-built_in">.</span>c
cc dummy<span class="hljs-built_in">.</span>c <span class="hljs-attribute">-v</span> <span class="hljs-attribute">-Wl</span>,<span class="hljs-subst">--</span>verbose <span class="hljs-subst">&></span> dummy<span class="hljs-built_in">.</span><span class="hljs-keyword">log</span>
readelf <span class="hljs-attribute">-l</span> a<span class="hljs-built_in">.</span>out <span class="hljs-subst">|</span> grep <span class="hljs-string">'lib'</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

注意

如果显示
[Requesting program interpreter:/lib/ld-linux.so.2]
表示链接位置正确,动态库已经连接到了目标系统的/lib下

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> -o <span class="hljs-string">'/usr/lib.*/crt[1in].*succeeded'</span> dummy.<span class="hljs-keyword">log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crt1.o succeeded
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crti.o succeeded
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crtn.o succeeded

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> -B3 <span class="hljs-string">'^ /usr/include'</span> dummy.<span class="hljs-keyword">log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
#include <…> search starts here:   
/usr/local/include   
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include   
/usr/include

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> <span class="hljs-string">'SEARCH.*/usr/lib'</span> dummy.<span class="hljs-keyword">log</span> |sed <span class="hljs-string">'s|; |\n|g'</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
SEARCH_DIR(“/usr/i686-pc-linux-gnu/lib”)
SEARCH_DIR(“/usr/local/lib”)   
SEARCH_DIR(“/lib”)
SEARCH_DIR(“/usr/lib”);

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> <span class="hljs-string">"/lib/libc.so.6 "</span> dummy.<span class="hljs-keyword">log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
attempt to open /lib/libc.so.6 succeeded

<code class="hljs perl has-numbering"><span class="hljs-keyword">grep</span> found dummy.<span class="hljs-keyword">log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

应该显示   
found ld-linux.so.2 at /lib/ld-linux.so.2

如果上面均显示正常,那么表明工具链正常,可以删除测试文件了

<code class="hljs avrasm has-numbering">rm -v dummy<span class="hljs-preprocessor">.c</span> a<span class="hljs-preprocessor">.out</span> dummy<span class="hljs-preprocessor">.log</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



Berkeley DB-4.5.20

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/db<span class="hljs-subst">-</span><span class="hljs-number">4.5</span><span class="hljs-number">.20</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd db<span class="hljs-subst">-</span><span class="hljs-number">4.5</span><span class="hljs-number">.20</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/db<span class="hljs-subst">-</span><span class="hljs-number">4.5</span><span class="hljs-number">.20</span><span class="hljs-attribute">-fixes</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
cd build_unix
<span class="hljs-built_in">..</span>/dist/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-compat185</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-cxx</span>
make
make docdir<span class="hljs-subst">=</span>/usr/share/doc/db<span class="hljs-subst">-</span><span class="hljs-number">4.5</span><span class="hljs-number">.20</span> install
chown <span class="hljs-attribute">-Rv</span> root:root /usr/share/doc/db<span class="hljs-subst">-</span><span class="hljs-number">4.5</span><span class="hljs-number">.20</span>
cd /sources
rm <span class="hljs-attribute">-rf</span> db<span class="hljs-subst">-</span><span class="hljs-number">4.5</span><span class="hljs-number">.20</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>



Sed-4.1.5

<code class="hljs brainfuck has-numbering"><span class="hljs-comment">tar</span> <span class="hljs-comment">xvf</span> <span class="hljs-comment">$LFS/sed</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">1</span><span class="hljs-string">.</span><span class="hljs-comment">5</span><span class="hljs-string">.</span><span class="hljs-comment">tar</span><span class="hljs-string">.</span><span class="hljs-comment">gz</span>
<span class="hljs-comment">cd</span> <span class="hljs-comment">sed</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">1</span><span class="hljs-string">.</span><span class="hljs-comment">5</span>
<span class="hljs-string">.</span><span class="hljs-comment">/configure</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">prefix=/usr</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">bindir=/bin</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">enable</span><span class="hljs-literal">-</span><span class="hljs-comment">html</span>
<span class="hljs-comment">make</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf sed-<span class="hljs-number">4.1</span>.<span class="hljs-number">5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



E2fsprogs-1.40.2

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/e2fsprogs<span class="hljs-subst">-</span><span class="hljs-number">1.40</span><span class="hljs-number">.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd e2fsprogs<span class="hljs-subst">-</span><span class="hljs-number">1.40</span><span class="hljs-number">.2</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'s@/bin/rm@/tools&@'</span> lib/blkid/test_probe<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
mkdir <span class="hljs-attribute">-v</span> build
cd build
<span class="hljs-built_in">..</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-root</span><span class="hljs-attribute">-prefix</span><span class="hljs-subst">=</span><span class="hljs-string">""</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-elf</span><span class="hljs-attribute">-shlibs</span>
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check可能会有一个错误

<code class="hljs cmake has-numbering">make <span class="hljs-keyword">install</span>
make <span class="hljs-keyword">install</span>-libs
cd ../..
rm -rf e2fsprogs-<span class="hljs-number">1.40</span>.<span class="hljs-number">2</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>



Coreutils-6.9

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span><span class="hljs-attribute">-uname</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span><span class="hljs-attribute">-suppress_uptime_kill_su</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span><span class="hljs-attribute">-i18n</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
chmod <span class="hljs-subst">+</span>x tests/sort/sort<span class="hljs-attribute">-mb</span><span class="hljs-attribute">-tests</span>
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>

测试

<code class="hljs lasso has-numbering">make NON_ROOT_USERNAME<span class="hljs-subst">=</span>nobody check<span class="hljs-attribute">-root</span>
echo <span class="hljs-string">"dummy:x:1000:nobody"</span> <span class="hljs-subst">>></span> /etc/<span class="hljs-keyword">group</span>
su<span class="hljs-attribute">-tools</span> nobody <span class="hljs-attribute">-s</span> /bin/bash <span class="hljs-attribute">-c</span> <span class="hljs-string">"make RUN_EXPENSIVE_TESTS=yes check"</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

注意

测试正常结束

删除测试用数据

<code class="hljs lasso has-numbering">sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'/dummy/d'</span> /etc/<span class="hljs-keyword">group</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>
<code class="hljs lasso has-numbering">make install
mv <span class="hljs-attribute">-v</span> /usr/bin<span class="hljs-subst">/</span>{cat,chgrp,chmod,chown,cp,<span class="hljs-built_in">date</span>,dd,df,echo} /bin
mv <span class="hljs-attribute">-v</span> /usr/bin<span class="hljs-subst">/</span>{<span class="hljs-literal">false</span>,hostname,ln,ls,mkdir,mknod,mv,pwd,readlink,rm} /bin
mv <span class="hljs-attribute">-v</span> /usr/bin<span class="hljs-subst">/</span>{rmdir,stty,sync,<span class="hljs-literal">true</span>,uname} /bin
mv <span class="hljs-attribute">-v</span> /usr/bin/chroot /usr/sbin
mv <span class="hljs-attribute">-v</span> /usr/bin<span class="hljs-subst">/</span>{head,sleep,nice} /bin
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> coreutils<span class="hljs-subst">-</span><span class="hljs-number">6.9</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>



Iana-Etc-2.20

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/iana<span class="hljs-attribute">-etc</span><span class="hljs-subst">-</span><span class="hljs-number">2.20</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd iana<span class="hljs-attribute">-etc</span><span class="hljs-subst">-</span><span class="hljs-number">2.20</span>
make
make install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> iana<span class="hljs-attribute">-etc</span><span class="hljs-subst">-</span><span class="hljs-number">2.20</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>



M4-1.4.10

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/m4-<span class="hljs-number">1.4</span>.<span class="hljs-number">10</span>.tar.bz2
<span class="hljs-built_in">cd</span> m4-<span class="hljs-number">1.4</span>.<span class="hljs-number">10</span>
./configure --prefix=/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf m4-<span class="hljs-number">1.4</span>.<span class="hljs-number">10</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Bison-2.3

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/bison-<span class="hljs-number">2.3</span>.tar.bz2
<span class="hljs-built_in">cd</span> bison-<span class="hljs-number">2.3</span>
./configure --prefix=/usr
<span class="hljs-built_in">echo</span> <span class="hljs-string">'#define YYENABLE_NLS 1'</span> >> config.h
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf bison-<span class="hljs-number">2.3</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Ncurses-5.6

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/ncurses<span class="hljs-subst">-</span><span class="hljs-number">5.6</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd ncurses<span class="hljs-subst">-</span><span class="hljs-number">5.6</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/ncurses<span class="hljs-subst">-</span><span class="hljs-number">5.6</span><span class="hljs-attribute">-coverity_fixes</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-shared</span> <span class="hljs-subst">--</span>without<span class="hljs-attribute">-debug</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-widec</span>
make
make install
chmod <span class="hljs-attribute">-v</span> <span class="hljs-number">644</span> /usr/lib/libncurses<span class="hljs-subst">++</span>w<span class="hljs-built_in">.</span>a
mv <span class="hljs-attribute">-v</span> /usr/lib/libncursesw<span class="hljs-built_in">.</span>so<span class="hljs-number">.5</span><span class="hljs-subst">*</span> /lib
ln <span class="hljs-attribute">-sfv</span> <span class="hljs-built_in">..</span><span class="hljs-subst">/</span><span class="hljs-built_in">..</span>/lib/libncursesw<span class="hljs-built_in">.</span>so<span class="hljs-number">.5</span> /usr/lib/libncursesw<span class="hljs-built_in">.</span>so
for lib <span class="hljs-keyword">in</span> curses ncurses form panel menu ; <span class="hljs-keyword">do</span> <span class="hljs-subst">\</span>
rm <span class="hljs-attribute">-vf</span> /usr/lib/lib${lib}<span class="hljs-built_in">.</span>so ; <span class="hljs-subst">\</span>
echo <span class="hljs-string">"INPUT(-l${lib}w)"</span> <span class="hljs-subst">></span>/usr/lib/lib${lib}<span class="hljs-built_in">.</span>so ; <span class="hljs-subst">\</span>
ln <span class="hljs-attribute">-sfv</span> lib${lib}w<span class="hljs-built_in">.</span>a /usr/lib/lib${lib}<span class="hljs-built_in">.</span>a ; <span class="hljs-subst">\</span>
done
ln <span class="hljs-attribute">-sfv</span> libncurses<span class="hljs-subst">++</span>w<span class="hljs-built_in">.</span>a /usr/lib/libncurses<span class="hljs-subst">++</span><span class="hljs-built_in">.</span>a
rm <span class="hljs-attribute">-vf</span> /usr/lib/libcursesw<span class="hljs-built_in">.</span>so
echo <span class="hljs-string">"INPUT(-lncursesw)"</span> <span class="hljs-subst">></span>/usr/lib/libcursesw<span class="hljs-built_in">.</span>so
ln <span class="hljs-attribute">-sfv</span> libncurses<span class="hljs-built_in">.</span>so /usr/lib/libcurses<span class="hljs-built_in">.</span>so
ln <span class="hljs-attribute">-sfv</span> libncursesw<span class="hljs-built_in">.</span>a /usr/lib/libcursesw<span class="hljs-built_in">.</span>a
ln <span class="hljs-attribute">-sfv</span> libncurses<span class="hljs-built_in">.</span>a /usr/lib/libcurses<span class="hljs-built_in">.</span>a
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> ncurses<span class="hljs-subst">-</span><span class="hljs-number">5.6</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li></ul>



Procps-3.2.7

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/procps-<span class="hljs-number">3.2</span>.<span class="hljs-number">7</span>.tar.gz
<span class="hljs-built_in">cd</span> procps-<span class="hljs-number">3.2</span>.<span class="hljs-number">7</span>
make
make install
<span class="hljs-built_in">cd</span> ..
rm -rf procps-<span class="hljs-number">3.2</span>.<span class="hljs-number">7</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>



Libtool-1.5.24

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/libtool-<span class="hljs-number">1.5</span>.<span class="hljs-number">24</span>.tar.gz
<span class="hljs-built_in">cd</span> libtool-<span class="hljs-number">1.5</span>.<span class="hljs-number">24</span>
./configure --prefix=/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf libtool-<span class="hljs-number">1.5</span>.<span class="hljs-number">24</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Perl-5.8.8

<code class="hljs haml has-numbering">tar xvf $LFS/perl-5.8.8.tar.bz2
cd perl-5.8.8
echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
./configure.gnu --prefix=/usr \
-<span class="ruby"><span class="hljs-constant">Dman1dir</span>=<span class="hljs-regexp">/usr/share</span><span class="hljs-regexp">/man/man</span>1 \
</span>-<span class="ruby"><span class="hljs-constant">Dman3dir</span>=<span class="hljs-regexp">/usr/share</span><span class="hljs-regexp">/man/man</span>3 \
</span>-<span class="ruby"><span class="hljs-constant">Dpager</span>=<span class="hljs-string">"/usr/bin/less -isR"</span>
</span>make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>

测试

<code class="hljs go has-numbering"><span class="hljs-built_in">make</span> test</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里test不会有错

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf perl-<span class="hljs-number">5.8</span>.<span class="hljs-number">8</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Readline-5.2

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/readline<span class="hljs-subst">-</span><span class="hljs-number">5.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd readline<span class="hljs-subst">-</span><span class="hljs-number">5.2</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'/MV.*old/d'</span> Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'/{OLDSUFF}/c:'</span> support/shlib<span class="hljs-attribute">-install</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/readline<span class="hljs-subst">-</span><span class="hljs-number">5.2</span><span class="hljs-attribute">-fixes</span><span class="hljs-subst">-</span><span class="hljs-number">3.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>libdir<span class="hljs-subst">=</span>/lib
make SHLIB_XLDFLAGS<span class="hljs-subst">=-</span>lncurses
make install
mv <span class="hljs-attribute">-v</span> /lib/lib{readline,history}<span class="hljs-built_in">.</span>a /usr/lib
rm <span class="hljs-attribute">-v</span> /lib/lib{readline,history}<span class="hljs-built_in">.</span>so
ln <span class="hljs-attribute">-sfv</span> <span class="hljs-built_in">..</span><span class="hljs-subst">/</span><span class="hljs-built_in">..</span>/lib/libreadline<span class="hljs-built_in">.</span>so<span class="hljs-number">.5</span> /usr/lib/libreadline<span class="hljs-built_in">.</span>so
ln <span class="hljs-attribute">-sfv</span> <span class="hljs-built_in">..</span><span class="hljs-subst">/</span><span class="hljs-built_in">..</span>/lib/libhistory<span class="hljs-built_in">.</span>so<span class="hljs-number">.5</span> /usr/lib/libhistory<span class="hljs-built_in">.</span>so
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> readline<span class="hljs-subst">-</span><span class="hljs-number">5.2</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul>



Zlib-1.2.3

<code class="hljs brainfuck has-numbering"><span class="hljs-comment">tar</span> <span class="hljs-comment">xvf</span> <span class="hljs-comment">$LFS/zlib</span><span class="hljs-literal">-</span><span class="hljs-comment">1</span><span class="hljs-string">.</span><span class="hljs-comment">2</span><span class="hljs-string">.</span><span class="hljs-comment">3</span><span class="hljs-string">.</span><span class="hljs-comment">tar</span><span class="hljs-string">.</span><span class="hljs-comment">gz</span>
<span class="hljs-comment">cd</span> <span class="hljs-comment">zlib</span><span class="hljs-literal">-</span><span class="hljs-comment">1</span><span class="hljs-string">.</span><span class="hljs-comment">2</span><span class="hljs-string">.</span><span class="hljs-comment">3</span>
<span class="hljs-string">.</span><span class="hljs-comment">/configure</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">prefix=/usr</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">shared</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">libdir=/lib</span>
<span class="hljs-comment">make</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs vbnet has-numbering">make install
rm -v /<span class="hljs-keyword">lib</span>/libz.so
ln -sfv ../../<span class="hljs-keyword">lib</span>/libz.so<span class="hljs-number">.1</span><span class="hljs-number">.2</span><span class="hljs-number">.3</span> /usr/<span class="hljs-keyword">lib</span>/libz.so
make clean
./configure --prefix=/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs lasso has-numbering">make install
chmod <span class="hljs-attribute">-v</span> <span class="hljs-number">644</span> /usr/lib/libz<span class="hljs-built_in">.</span>a
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> zlib<span class="hljs-subst">-</span><span class="hljs-number">1.2</span><span class="hljs-number">.3</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>



Autoconf-2.61

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/autoconf-<span class="hljs-number">2.61</span>.tar.bz2
<span class="hljs-built_in">cd</span> autoconf-<span class="hljs-number">2.61</span>
./configure --prefix=/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里测试时间比较长,但不会有错

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf autoconf-<span class="hljs-number">2.61</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Automake-1.10

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/automake-<span class="hljs-number">1.10</span>.tar.bz2
<span class="hljs-built_in">cd</span> automake-<span class="hljs-number">1.10</span>
./configure --prefix=/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里测试时间比较长,可能会有3个测试失败,但能顺利结束

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf automake-<span class="hljs-number">1.10</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Bash-3.2

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/bash<span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd bash<span class="hljs-subst">-</span><span class="hljs-number">3.2</span>
tar <span class="hljs-attribute">-xvf</span> <span class="hljs-variable">$LFS</span>/bash<span class="hljs-attribute">-doc</span><span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">"s|htmldir = @htmldir@|htmldir = /usr/share/doc/bash-3.2|"</span> Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/bash<span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-attribute">-fixes</span><span class="hljs-subst">-</span><span class="hljs-number">5.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>bindir<span class="hljs-subst">=</span>/bin <span class="hljs-subst">--</span>without<span class="hljs-attribute">-bash</span><span class="hljs-attribute">-malloc</span> <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-installed</span><span class="hljs-attribute">-readline</span>
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>

测试

<code class="hljs lasso has-numbering">sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s/LANG/LC_ALL/'</span> tests/intl<span class="hljs-built_in">.</span>tests
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s@tests@& </dev/tty@'</span> tests/run<span class="hljs-attribute">-test</span>
chown <span class="hljs-attribute">-Rv</span> nobody <span class="hljs-built_in">.</span><span class="hljs-subst">/</span>
su<span class="hljs-attribute">-tools</span> nobody <span class="hljs-attribute">-s</span> /bin/bash <span class="hljs-attribute">-c</span> <span class="hljs-string">"make tests"</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

注意

这里check不会有错,可能会有不少警告

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf bash-<span class="hljs-number">3.2</span>
<span class="hljs-keyword">exec</span> /bin/bash --login +h</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>



Bzip2-1.0.4

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/bzip2<span class="hljs-subst">-</span><span class="hljs-number">1.0</span><span class="hljs-number">.4</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd bzip2<span class="hljs-subst">-</span><span class="hljs-number">1.0</span><span class="hljs-number">.4</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/bzip2<span class="hljs-subst">-</span><span class="hljs-number">1.0</span><span class="hljs-number">.4</span><span class="hljs-attribute">-install_docs</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
make <span class="hljs-attribute">-f</span> Makefile<span class="hljs-attribute">-libbz2_so</span>
make clean
make
make PREFIX<span class="hljs-subst">=</span>/usr install
cp <span class="hljs-attribute">-v</span> bzip2<span class="hljs-attribute">-shared</span> /bin/bzip2
cp <span class="hljs-attribute">-av</span> libbz2<span class="hljs-built_in">.</span>so<span class="hljs-subst">*</span> /lib
ln <span class="hljs-attribute">-sv</span> <span class="hljs-built_in">..</span><span class="hljs-subst">/</span><span class="hljs-built_in">..</span>/lib/libbz2<span class="hljs-built_in">.</span>so<span class="hljs-number">.1</span><span class="hljs-number">.0</span> /usr/lib/libbz2<span class="hljs-built_in">.</span>so
rm <span class="hljs-attribute">-v</span> /usr/bin<span class="hljs-subst">/</span>{bunzip2,bzcat,bzip2}
ln <span class="hljs-attribute">-sv</span> bzip2 /bin/bunzip2
ln <span class="hljs-attribute">-sv</span> bzip2 /bin/bzcat
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> bzip2<span class="hljs-subst">-</span><span class="hljs-number">1.0</span><span class="hljs-number">.4</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li></ul>



Diffutils-2.8.1

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/diffutils<span class="hljs-subst">-</span><span class="hljs-number">2.8</span><span class="hljs-number">.1</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd diffutils<span class="hljs-subst">-</span><span class="hljs-number">2.8</span><span class="hljs-number">.1</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/diffutils<span class="hljs-subst">-</span><span class="hljs-number">2.8</span><span class="hljs-number">.1</span><span class="hljs-attribute">-i18n</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
touch man/diff<span class="hljs-number">.1</span>
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr
make
make install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> diffutils<span class="hljs-subst">-</span><span class="hljs-number">2.8</span><span class="hljs-number">.1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>



File-4.21

<code class="hljs livecodeserver has-numbering">tar xvf $LFS/<span class="hljs-built_in">file</span>-<span class="hljs-number">4.21</span>.tar.gz
cd <span class="hljs-built_in">file</span>-<span class="hljs-number">4.21</span>
./configure <span class="hljs-comment">--prefix=/usr</span>
make
make install
cd ..
rm -rf <span class="hljs-built_in">file</span>-<span class="hljs-number">4.21</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Findutils-4.2.31

<code class="hljs brainfuck has-numbering"><span class="hljs-comment">tar</span> <span class="hljs-comment">xvf</span> <span class="hljs-comment">$LFS/findutils</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">2</span><span class="hljs-string">.</span><span class="hljs-comment">31</span><span class="hljs-string">.</span><span class="hljs-comment">tar</span><span class="hljs-string">.</span><span class="hljs-comment">gz</span>
<span class="hljs-comment">cd</span> <span class="hljs-comment">findutils</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">2</span><span class="hljs-string">.</span><span class="hljs-comment">31</span>
<span class="hljs-string">.</span><span class="hljs-comment">/configure</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">prefix=/usr</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">libexecdir=/usr/lib/findutils</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">localstatedir=/var/lib/locate</span>
<span class="hljs-comment">make</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs lasso has-numbering">make install
mv <span class="hljs-attribute">-v</span> /usr/bin/find /bin
sed <span class="hljs-attribute">-i</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'s/find:=${BINDIR}/find:=\/bin/'</span> /usr/bin/updatedb
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> findutils<span class="hljs-subst">-</span><span class="hljs-number">4.2</span><span class="hljs-number">.31</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



Flex-2.5.33

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/flex-<span class="hljs-number">2.5</span>.<span class="hljs-number">33</span>.tar.bz2
<span class="hljs-built_in">cd</span> flex-<span class="hljs-number">2.5</span>.<span class="hljs-number">33</span>
./configure --prefix=/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs livecodeserver has-numbering">make install
<span class="hljs-built_in">ln</span> -sv libfl.<span class="hljs-operator">a</span> /usr/lib/libl.<span class="hljs-operator">a</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

创建一个lex的命令

<code class="hljs bash has-numbering">cat > /usr/bin/lex << <span class="hljs-string">"EOF"</span>
<span class="hljs-shebang">#!/bin/sh</span>
<span class="hljs-comment"># Begin /usr/bin/lex</span>
<span class="hljs-keyword">exec</span> /usr/bin/flex <span class="hljs-operator">-l</span> <span class="hljs-string">"<span class="hljs-variable">$@</span>"</span>
<span class="hljs-comment"># End /usr/bin/lex</span>
EOF
chmod -v <span class="hljs-number">755</span> /usr/bin/lex
<span class="hljs-built_in">cd</span> ..
rm -rf flex-<span class="hljs-number">2.5</span>.<span class="hljs-number">33</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>



GRUB-0.97

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/grub<span class="hljs-subst">-</span><span class="hljs-number">0.97</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd grub<span class="hljs-subst">-</span><span class="hljs-number">0.97</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/grub<span class="hljs-subst">-</span><span class="hljs-number">0.97</span><span class="hljs-attribute">-disk_geometry</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs lasso has-numbering">make install
mkdir <span class="hljs-attribute">-v</span> /boot/grub
cp <span class="hljs-attribute">-v</span> /usr/lib/grub/i386<span class="hljs-attribute">-pc</span>/stage{<span class="hljs-number">1</span>,<span class="hljs-number">2</span>} /boot/grub
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> grub<span class="hljs-subst">-</span><span class="hljs-number">0.97</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



Gawk-3.1.5

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/gawk<span class="hljs-subst">-</span><span class="hljs-number">3.1</span><span class="hljs-number">.5</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd gawk<span class="hljs-subst">-</span><span class="hljs-number">3.1</span><span class="hljs-number">.5</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/gawk<span class="hljs-subst">-</span><span class="hljs-number">3.1</span><span class="hljs-number">.5</span><span class="hljs-attribute">-segfault_fix</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>libexecdir<span class="hljs-subst">=</span>/usr/lib
cat <span class="hljs-subst">>></span> config<span class="hljs-built_in">.</span>h <span class="hljs-subst"><<</span> <span class="hljs-string">"EOF"</span>
<span class="hljs-variable">#define</span> HAVE_LANGINFO_CODESET <span class="hljs-number">1</span>
<span class="hljs-variable">#define</span> HAVE_LC_MESSAGES <span class="hljs-number">1</span>
EOF
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf gawk-<span class="hljs-number">3.1</span>.<span class="hljs-number">5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Gettext-0.16.1

<code class="hljs scilab has-numbering">tar xvf $LFS/<span class="hljs-built_in">gettext</span>-<span class="hljs-number">0.16</span><span class="hljs-number">.1</span>.<span class="hljs-transposed_variable">tar.</span>gz
<span class="hljs-built_in">cd</span> <span class="hljs-built_in">gettext</span>-<span class="hljs-number">0.16</span><span class="hljs-number">.1</span>
./configure --prefix=/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check的时间比较长,但不会有错

<code class="hljs scilab has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf <span class="hljs-built_in">gettext</span>-<span class="hljs-number">0.16</span><span class="hljs-number">.1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Grep-2.5.1a

<code class="hljs perl has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/<span class="hljs-keyword">grep</span>-<span class="hljs-number">2.5</span>.<span class="hljs-number">1</span>a.tar.bz2
cd <span class="hljs-keyword">grep</span>-<span class="hljs-number">2.5</span>.<span class="hljs-number">1</span>a
patch -Np1 -i <span class="hljs-variable">$LFS</span>/<span class="hljs-keyword">grep</span>-<span class="hljs-number">2.5</span>.<span class="hljs-number">1</span>a-redhat_fixes-<span class="hljs-number">2</span>.patch
<span class="hljs-keyword">chmod</span> +<span class="hljs-keyword">x</span> tests/fmbtest.sh
./configure --prefix=<span class="hljs-regexp">/usr --bindir=/bin</span>
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf grep-<span class="hljs-number">2.5</span>.<span class="hljs-number">1</span>a</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Groff-1.18.1.4

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/groff<span class="hljs-subst">-</span><span class="hljs-number">1.18</span><span class="hljs-number">.1</span><span class="hljs-number">.4</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd groff<span class="hljs-subst">-</span><span class="hljs-number">1.18</span><span class="hljs-number">.1</span><span class="hljs-number">.4</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/groff<span class="hljs-subst">-</span><span class="hljs-number">1.18</span><span class="hljs-number">.1</span><span class="hljs-number">.4</span><span class="hljs-attribute">-debian_fixes</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
sed <span class="hljs-attribute">-i</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'s/2010/002D/'</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'s/2212/002D/'</span> <span class="hljs-subst">\</span>
<span class="hljs-attribute">-e</span> <span class="hljs-string">'s/2018/0060/'</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'s/2019/0027/'</span> font/devutf8/R<span class="hljs-built_in">.</span>proto
PAGE<span class="hljs-subst">=</span>A4 <span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-multibyte</span>
make
make install
ln <span class="hljs-attribute">-sv</span> eqn /usr/bin/geqn
ln <span class="hljs-attribute">-sv</span> tbl /usr/bin/gtbl
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> groff<span class="hljs-subst">-</span><span class="hljs-number">1.18</span><span class="hljs-number">.1</span><span class="hljs-number">.4</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul>



Gzip-1.3.12

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/gzip-<span class="hljs-number">1.3</span>.<span class="hljs-number">12</span>.tar.gz
<span class="hljs-built_in">cd</span> gzip-<span class="hljs-number">1.3</span>.<span class="hljs-number">12</span>
./configure --prefix=/usr --bindir=/bin
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs lasso has-numbering">make install
mv <span class="hljs-attribute">-v</span> /bin<span class="hljs-subst">/</span>{gzexe,uncompress,zcmp,zdiff,zegrep} /usr/bin
mv <span class="hljs-attribute">-v</span> /bin<span class="hljs-subst">/</span>{zfgrep,zforce,zgrep,zless,zmore,znew} /usr/bin
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> gzip<span class="hljs-subst">-</span><span class="hljs-number">1.3</span><span class="hljs-number">.12</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



Inetutils-1.5

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/inetutils<span class="hljs-subst">-</span><span class="hljs-number">1.5</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd inetutils<span class="hljs-subst">-</span><span class="hljs-number">1.5</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/inetutils<span class="hljs-subst">-</span><span class="hljs-number">1.5</span><span class="hljs-attribute">-no_server_man_pages</span><span class="hljs-subst">-</span><span class="hljs-number">2.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>libexecdir<span class="hljs-subst">=</span>/usr/sbin <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>sysconfdir<span class="hljs-subst">=</span>/etc <span class="hljs-subst">--</span>localstatedir<span class="hljs-subst">=</span>/<span class="hljs-built_in">var</span> <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>disable<span class="hljs-attribute">-ifconfig</span> <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-logger</span> <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-syslogd</span> <span class="hljs-subst">\</span>
<span class="hljs-subst">--</span>disable<span class="hljs-attribute">-whois</span> <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-servers</span>
make
make install
mv <span class="hljs-attribute">-v</span> /usr/bin/ping /bin
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> inetutils<span class="hljs-subst">-</span><span class="hljs-number">1.5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul>



IPRoute2-2.6.20-070313

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/iproute2<span class="hljs-subst">-</span><span class="hljs-number">2.6</span><span class="hljs-number">.20</span><span class="hljs-subst">-</span><span class="hljs-number">070313.</span>tar<span class="hljs-built_in">.</span>gz
cd iproute<span class="hljs-subst">-</span><span class="hljs-number">2.6</span><span class="hljs-number">.20</span><span class="hljs-subst">-</span><span class="hljs-number">070313</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'/tc-bfifo.8/d'</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'/tc-pfifo.8/s/pbfifo/bfifo/'</span> Makefile
make SBINDIR<span class="hljs-subst">=</span>/sbin
make SBINDIR<span class="hljs-subst">=</span>/sbin install
mv <span class="hljs-attribute">-v</span> /sbin/arpd /usr/sbin
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> iproute<span class="hljs-subst">-</span><span class="hljs-number">2.6</span><span class="hljs-number">.20</span><span class="hljs-subst">-</span><span class="hljs-number">070313</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>



Kbd-1.12

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/kbd<span class="hljs-subst">-</span><span class="hljs-number">1.12</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd kbd<span class="hljs-subst">-</span><span class="hljs-number">1.12</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/kbd<span class="hljs-subst">-</span><span class="hljs-number">1.12</span><span class="hljs-attribute">-backspace</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/kbd<span class="hljs-subst">-</span><span class="hljs-number">1.12</span><span class="hljs-attribute">-gcc4_fixes</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>datadir<span class="hljs-subst">=</span>/lib/kbd
make
make install
mv <span class="hljs-attribute">-v</span> /usr/bin<span class="hljs-subst">/</span>{kbd_mode,openvt,setfont} /bin
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> kbd<span class="hljs-subst">-</span><span class="hljs-number">1.12</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>



Less-406

<code class="hljs cmake has-numbering">tar xvf $LFS/<span class="hljs-operator">less</span>-<span class="hljs-number">406</span>.tar.gz
cd <span class="hljs-operator">less</span>-<span class="hljs-number">406</span>
./configure --prefix=/usr --sysconfdir=/etc
make
make <span class="hljs-keyword">install</span>
cd ..
rm -rf <span class="hljs-operator">less</span>-<span class="hljs-number">406</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Make-3.81

<code class="hljs go has-numbering">tar xvf $LFS/<span class="hljs-built_in">make</span><span class="hljs-number">-3.81</span>.tar.bz2
cd <span class="hljs-built_in">make</span><span class="hljs-number">-3.81</span>
./configure --prefix=/usr
<span class="hljs-built_in">make</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs go has-numbering"><span class="hljs-built_in">make</span> install
cd ..
rm -rf <span class="hljs-built_in">make</span><span class="hljs-number">-3.81</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Man-DB-2.4.4

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/man<span class="hljs-attribute">-db</span><span class="hljs-subst">-</span><span class="hljs-number">2.4</span><span class="hljs-number">.4</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd man<span class="hljs-attribute">-db</span><span class="hljs-subst">-</span><span class="hljs-number">2.4</span><span class="hljs-number">.4</span>
mv man/de{_DE<span class="hljs-number">.88591</span>,}
mv man/es{_ES<span class="hljs-number">.88591</span>,}
mv man/it{_IT<span class="hljs-number">.88591</span>,}
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s,\*_\*,??,'</span> man/Makefile<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'\%\t/usr/man%d'</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'\%\t/usr/local/man%d'</span> src/man_db<span class="hljs-built_in">.</span>conf<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span>
cat <span class="hljs-subst">>></span> include/manconfig<span class="hljs-built_in">.</span>h<span class="hljs-built_in">.</span><span class="hljs-keyword">in</span> <span class="hljs-subst"><<</span> <span class="hljs-string">"EOF"</span>
<span class="hljs-variable">#define</span> WEB_BROWSER <span class="hljs-string">"exec /usr/bin/lynx"</span>
<span class="hljs-variable">#define</span> COL <span class="hljs-string">"/usr/bin/col"</span>
<span class="hljs-variable">#define</span> VGRIND <span class="hljs-string">"/usr/bin/vgrind"</span>
<span class="hljs-variable">#define</span> GRAP <span class="hljs-string">"/usr/bin/grap"</span>
EOF
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/man<span class="hljs-attribute">-db</span><span class="hljs-subst">-</span><span class="hljs-number">2.4</span><span class="hljs-number">.4</span><span class="hljs-attribute">-fixes</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-mb</span><span class="hljs-attribute">-groff</span> <span class="hljs-subst">--</span>disable<span class="hljs-attribute">-setuid</span>
make
make install</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li></ul>



创建一个用于转换man手册编码的脚本

<code class="hljs bash has-numbering">cat >> convert-mans << <span class="hljs-string">"EOF"</span>
<span class="hljs-comment">#!/bin/sh -e</span>
FROM=<span class="hljs-string">"<span class="hljs-variable">$1</span>"</span>
TO=<span class="hljs-string">"<span class="hljs-variable">$2</span>"</span>
shift ; shift
<span class="hljs-keyword">while</span> [ <span class="hljs-variable">$#</span> <span class="hljs-operator">-gt</span> <span class="hljs-number">0</span> ]
<span class="hljs-keyword">do</span>
   FILE=<span class="hljs-string">"<span class="hljs-variable">$1</span>"</span>
   shift
   iconv <span class="hljs-operator">-f</span> <span class="hljs-string">"<span class="hljs-variable">$FROM</span>"</span> -t <span class="hljs-string">"<span class="hljs-variable">$TO</span>"</span> <span class="hljs-string">"<span class="hljs-variable">$FILE</span>"</span> >.tmp.iconv
   mv .tmp.iconv <span class="hljs-string">"<span class="hljs-variable">$FILE</span>"</span>
<span class="hljs-keyword">done</span>
EOF
install -m755 convert-mans  /usr/bin
<span class="hljs-built_in">cd</span> ..
rm -rf man-db-<span class="hljs-number">2.4</span>.<span class="hljs-number">4</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li></ul>



Mktemp-1.5

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/mktemp<span class="hljs-subst">-</span><span class="hljs-number">1.5</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd mktemp<span class="hljs-subst">-</span><span class="hljs-number">1.5</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/mktemp<span class="hljs-subst">-</span><span class="hljs-number">1.5</span><span class="hljs-attribute">-add_tempfile</span><span class="hljs-subst">-</span><span class="hljs-number">3.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-libc</span>
make
make install
make install<span class="hljs-attribute">-tempfile</span>
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> mktemp<span class="hljs-subst">-</span><span class="hljs-number">1.5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>



Module-Init-Tools-3.2.2

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/module<span class="hljs-attribute">-init</span><span class="hljs-attribute">-tools</span><span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-number">.2</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd module<span class="hljs-attribute">-init</span><span class="hljs-attribute">-tools</span><span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-number">.2</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/module<span class="hljs-attribute">-init</span><span class="hljs-attribute">-tools</span><span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-number">.2</span><span class="hljs-attribute">-modprobe</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
<span class="hljs-built_in">.</span>/configure
make check
make distclean
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span><span class="hljs-subst">/</span> <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-zlib</span>
make
make INSTALL<span class="hljs-subst">=</span>install install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> module<span class="hljs-attribute">-init</span><span class="hljs-attribute">-tools</span><span class="hljs-subst">-</span><span class="hljs-number">3.2</span><span class="hljs-number">.2</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul>



Patch-2.5.4

<code class="hljs bash has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/patch-<span class="hljs-number">2.5</span>.<span class="hljs-number">4</span>.tar.gz
<span class="hljs-built_in">cd</span> patch-<span class="hljs-number">2.5</span>.<span class="hljs-number">4</span>
./configure --prefix=/usr
make
make install
<span class="hljs-built_in">cd</span> ..
rm -rf patch-<span class="hljs-number">2.5</span>.<span class="hljs-number">4</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



Psmisc-22.5

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/psmisc<span class="hljs-subst">-</span><span class="hljs-number">22.5</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd psmisc<span class="hljs-subst">-</span><span class="hljs-number">22.5</span>
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>exec<span class="hljs-attribute">-prefix</span><span class="hljs-subst">=</span><span class="hljs-string">""</span>
make
make install
mv <span class="hljs-attribute">-v</span> /bin/pstree<span class="hljs-subst">*</span> /usr/bin
ln <span class="hljs-attribute">-sv</span> killall /bin/pidof
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> psmisc<span class="hljs-subst">-</span><span class="hljs-number">22.5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>



Shadow-4.0.18.1

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/shadow<span class="hljs-subst">-</span><span class="hljs-number">4.0</span><span class="hljs-number">.18</span><span class="hljs-number">.1</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd shadow<span class="hljs-subst">-</span><span class="hljs-number">4.0</span><span class="hljs-number">.18</span><span class="hljs-number">.1</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/shadow<span class="hljs-subst">-</span><span class="hljs-number">4.0</span><span class="hljs-number">.18</span><span class="hljs-number">.1</span><span class="hljs-attribute">-useradd_fix</span><span class="hljs-subst">-</span><span class="hljs-number">2.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>libdir<span class="hljs-subst">=</span>/lib <span class="hljs-subst">--</span>sysconfdir<span class="hljs-subst">=</span>/etc <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-shared</span> <span class="hljs-subst">--</span>without<span class="hljs-attribute">-selinux</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s/groups$(EXEEXT) //'</span> src/Makefile
find man <span class="hljs-attribute">-name</span> Makefile <span class="hljs-attribute">-exec</span> sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s/groups\.1 / /'</span> {} <span class="hljs-subst">\</span>;
sed <span class="hljs-attribute">-i</span> <span class="hljs-attribute">-e</span> <span class="hljs-string">'s@#MD5_CRYPT_ENAB.no@MD5_CRYPT_ENAB yes@'</span> <span class="hljs-subst">\</span>
<span class="hljs-attribute">-e</span> <span class="hljs-string">'s@/var/spool/mail@/var/mail@'</span> etc/login<span class="hljs-built_in">.</span>defs
make
make install
mv <span class="hljs-attribute">-v</span> /usr/bin/passwd /bin
mv <span class="hljs-attribute">-v</span> /lib/libshadow<span class="hljs-built_in">.</span><span class="hljs-subst">*</span>a /usr/lib
rm <span class="hljs-attribute">-v</span> /lib/libshadow<span class="hljs-built_in">.</span>so
ln <span class="hljs-attribute">-sfv</span> <span class="hljs-built_in">..</span><span class="hljs-subst">/</span><span class="hljs-built_in">..</span>/lib/libshadow<span class="hljs-built_in">.</span>so<span class="hljs-number">.0</span> /usr/lib/libshadow<span class="hljs-built_in">.</span>so</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul>

配置增加用户的默认设置

<code class="hljs lasso has-numbering">pwconv
grpconv
useradd <span class="hljs-attribute">-D</span> <span class="hljs-attribute">-b</span> /home
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s/yes/no/'</span> /etc/default/useradd</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

设置root用户密码

<code class="hljs  has-numbering">passwd root</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

一定要设置root的密码,否则重新启动后无法登陆

<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> ..
rm -rf shadow-<span class="hljs-number">4.0</span>.<span class="hljs-number">18.1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



Sysklogd-1.4.1

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/sysklogd<span class="hljs-subst">-</span><span class="hljs-number">1.4</span><span class="hljs-number">.1</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd sysklogd<span class="hljs-subst">-</span><span class="hljs-number">1.4</span><span class="hljs-number">.1</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/sysklogd<span class="hljs-subst">-</span><span class="hljs-number">1.4</span><span class="hljs-number">.1</span><span class="hljs-attribute">-fixes</span><span class="hljs-subst">-</span><span class="hljs-number">2.</span>patch
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/sysklogd<span class="hljs-subst">-</span><span class="hljs-number">1.4</span><span class="hljs-number">.1</span><span class="hljs-subst">-</span><span class="hljs-number">8</span>bit<span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
make
make install</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

设置syslog的配置文件

<code class="hljs livecodeserver has-numbering">cat > /etc/syslog.conf << <span class="hljs-string">"EOF"</span>
<span class="hljs-comment"># Begin /etc/syslog.conf</span>
auth,authpriv.* -/var/<span class="hljs-built_in">log</span>/auth.<span class="hljs-built_in">log</span>
*.*;auth,authpriv.<span class="hljs-constant">none</span> -/var/<span class="hljs-built_in">log</span>/sys.<span class="hljs-built_in">log</span>
daemon.* -/var/<span class="hljs-built_in">log</span>/daemon.<span class="hljs-built_in">log</span>
kern.* -/var/<span class="hljs-built_in">log</span>/kern.<span class="hljs-built_in">log</span>
mail.* -/var/<span class="hljs-built_in">log</span>/mail.<span class="hljs-built_in">log</span>
user.* -/var/<span class="hljs-built_in">log</span>/user.<span class="hljs-built_in">log</span>
*.emerg *
<span class="hljs-comment"># End /etc/syslog.conf</span>
<span class="hljs-constant">EOF</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul>
<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> ..
rm -rf sysklogd-<span class="hljs-number">1.4</span>.<span class="hljs-number">1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



Sysvinit-2.86

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/sysvinit<span class="hljs-subst">-</span><span class="hljs-number">2.86</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd sysvinit<span class="hljs-subst">-</span><span class="hljs-number">2.86</span>
sed <span class="hljs-attribute">-i</span> <span class="hljs-string">'s@Sending processes@& configured via /etc/inittab@g'</span> src/init<span class="hljs-built_in">.</span>c
make <span class="hljs-attribute">-C</span> src
make <span class="hljs-attribute">-C</span> src install</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

设置启动配置文件

<code class="hljs ruby has-numbering">cat > <span class="hljs-regexp">/etc/inittab</span> << <span class="hljs-string">"EOF"</span>
<span class="hljs-comment"># Begin /etc/inittab</span>
<span class="hljs-symbol">id:</span><span class="hljs-number">3</span><span class="hljs-symbol">:initdefault</span><span class="hljs-symbol">:</span>
<span class="hljs-symbol">si:</span><span class="hljs-symbol">:sysinit</span><span class="hljs-symbol">:/etc/rc</span>.d/init.d/rc sysinit
<span class="hljs-symbol">l0:</span><span class="hljs-number">0</span><span class="hljs-symbol">:wait</span><span class="hljs-symbol">:/etc/rc</span>.d/init.d/rc <span class="hljs-number">0</span>
<span class="hljs-symbol">l1:</span><span class="hljs-constant">S1</span><span class="hljs-symbol">:wait</span><span class="hljs-symbol">:/etc/rc</span>.d/init.d/rc <span class="hljs-number">1</span>
<span class="hljs-symbol">l2:</span><span class="hljs-number">2</span><span class="hljs-symbol">:wait</span><span class="hljs-symbol">:/etc/rc</span>.d/init.d/rc <span class="hljs-number">2</span>
<span class="hljs-symbol">l3:</span><span class="hljs-number">3</span><span class="hljs-symbol">:wait</span><span class="hljs-symbol">:/etc/rc</span>.d/init.d/rc <span class="hljs-number">3</span>
<span class="hljs-symbol">l4:</span><span class="hljs-number">4</span><span class="hljs-symbol">:wait</span><span class="hljs-symbol">:/etc/rc</span>.d/init.d/rc <span class="hljs-number">4</span>
<span class="hljs-symbol">l5:</span><span class="hljs-number">5</span><span class="hljs-symbol">:wait</span><span class="hljs-symbol">:/etc/rc</span>.d/init.d/rc <span class="hljs-number">5</span>
<span class="hljs-symbol">l6:</span><span class="hljs-number">6</span><span class="hljs-symbol">:wait</span><span class="hljs-symbol">:/etc/rc</span>.d/init.d/rc <span class="hljs-number">6</span>
<span class="hljs-symbol">ca:</span><span class="hljs-number">12345</span><span class="hljs-symbol">:ctrlaltdel</span><span class="hljs-symbol">:/sbin/shutdown</span> -t1 -a -r now
<span class="hljs-symbol">su:</span><span class="hljs-constant">S016</span><span class="hljs-symbol">:once</span><span class="hljs-symbol">:/sbin/sulogin</span>
<span class="hljs-number">1</span><span class="hljs-symbol">:</span><span class="hljs-number">2345</span><span class="hljs-symbol">:respawn</span><span class="hljs-symbol">:/sbin/agetty</span> tty1 <span class="hljs-number">9600</span>
<span class="hljs-number">2</span><span class="hljs-symbol">:</span><span class="hljs-number">2345</span><span class="hljs-symbol">:respawn</span><span class="hljs-symbol">:/sbin/agetty</span> tty2 <span class="hljs-number">9600</span>
<span class="hljs-number">3</span><span class="hljs-symbol">:</span><span class="hljs-number">2345</span><span class="hljs-symbol">:respawn</span><span class="hljs-symbol">:/sbin/agetty</span> tty3 <span class="hljs-number">9600</span>
<span class="hljs-number">4</span><span class="hljs-symbol">:</span><span class="hljs-number">2345</span><span class="hljs-symbol">:respawn</span><span class="hljs-symbol">:/sbin/agetty</span> tty4 <span class="hljs-number">9600</span>
<span class="hljs-number">5</span><span class="hljs-symbol">:</span><span class="hljs-number">2345</span><span class="hljs-symbol">:respawn</span><span class="hljs-symbol">:/sbin/agetty</span> tty5 <span class="hljs-number">9600</span>
<span class="hljs-number">6</span><span class="hljs-symbol">:</span><span class="hljs-number">2345</span><span class="hljs-symbol">:respawn</span><span class="hljs-symbol">:/sbin/agetty</span> tty6 <span class="hljs-number">9600</span>
<span class="hljs-comment"># End /etc/inittab</span>
<span class="hljs-constant">EOF</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li></ul>
<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> ..
rm -rf sysvinit-<span class="hljs-number">2.86</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



Tar-1.18

<code class="hljs brainfuck has-numbering"><span class="hljs-comment">tar</span> <span class="hljs-comment">xvf</span> <span class="hljs-comment">$LFS/tar</span><span class="hljs-literal">-</span><span class="hljs-comment">1</span><span class="hljs-string">.</span><span class="hljs-comment">18</span><span class="hljs-string">.</span><span class="hljs-comment">tar</span><span class="hljs-string">.</span><span class="hljs-comment">bz2</span>
<span class="hljs-comment">cd</span> <span class="hljs-comment">tar</span><span class="hljs-literal">-</span><span class="hljs-comment">1</span><span class="hljs-string">.</span><span class="hljs-comment">18</span>
<span class="hljs-string">.</span><span class="hljs-comment">/configure</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">prefix=/usr</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">bindir=/bin</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">libexecdir=/usr/sbin</span>
<span class="hljs-comment">make</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check可以通过

<code class="hljs bash has-numbering">make install
<span class="hljs-built_in">cd</span> ..
rm -rf tar-<span class="hljs-number">1.18</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>



Texinfo-4.9

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/texinfo<span class="hljs-subst">-</span><span class="hljs-number">4.9</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd texinfo<span class="hljs-subst">-</span><span class="hljs-number">4.9</span>
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/texinfo<span class="hljs-subst">-</span><span class="hljs-number">4.9</span><span class="hljs-attribute">-multibyte</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/texinfo<span class="hljs-subst">-</span><span class="hljs-number">4.9</span><span class="hljs-attribute">-tempfile_fix</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

测试

<code class="hljs rust has-numbering">make <span class="hljs-keyword">check</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里check不会有错

<code class="hljs bash has-numbering">make install
make TEXMF=/usr/share/texmf install-tex
<span class="hljs-built_in">cd</span> /usr/share/info
rm dir
<span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> *
<span class="hljs-keyword">do</span> install-info <span class="hljs-variable">$f</span> dir <span class="hljs-number">2</span>>/dev/null
<span class="hljs-keyword">done</span>
<span class="hljs-built_in">cd</span> /sources
rm -rf texinfo-<span class="hljs-number">4.9</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>



Udev-113

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/udev<span class="hljs-subst">-</span><span class="hljs-number">113.</span>tar<span class="hljs-built_in">.</span>bz2
cd udev<span class="hljs-subst">-</span><span class="hljs-number">113</span>
tar <span class="hljs-attribute">-xvf</span> <span class="hljs-variable">$LFS</span>/udev<span class="hljs-attribute">-config</span><span class="hljs-subst">-</span><span class="hljs-number">6.3</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
install <span class="hljs-attribute">-dv</span> /lib<span class="hljs-subst">/</span>{firmware,udev/devices<span class="hljs-subst">/</span>{pts,shm}}
mknod <span class="hljs-attribute">-m0666</span> /lib/udev/devices/<span class="hljs-built_in">null</span> c <span class="hljs-number">1</span> <span class="hljs-number">3</span>
ln <span class="hljs-attribute">-sv</span> /proc/<span class="hljs-built_in">self</span>/fd /lib/udev/devices/fd
ln <span class="hljs-attribute">-sv</span> /proc/<span class="hljs-built_in">self</span>/fd/<span class="hljs-number">0</span> /lib/udev/devices/stdin
ln <span class="hljs-attribute">-sv</span> /proc/<span class="hljs-built_in">self</span>/fd/<span class="hljs-number">1</span> /lib/udev/devices/stdout
ln <span class="hljs-attribute">-sv</span> /proc/<span class="hljs-built_in">self</span>/fd/<span class="hljs-number">2</span> /lib/udev/devices/stderr
ln <span class="hljs-attribute">-sv</span> /proc/kcore /lib/udev/devices/core
make EXTRAS<span class="hljs-subst">=</span><span class="hljs-string">"`echo extras/*/`"</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul>

测试

<code class="hljs go has-numbering"><span class="hljs-built_in">make</span> test</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里test可能有错误,不必理会

<code class="hljs cmake has-numbering">make DESTDIR=/ EXTRAS=<span class="hljs-string">"`echo extras/*/`"</span> <span class="hljs-keyword">install</span>
cp -v etc/udev/rules.d/[<span class="hljs-number">0</span>-<span class="hljs-number">9</span>]* /etc/udev/rules.d/
cd udev-config-<span class="hljs-number">6.3</span>
make <span class="hljs-keyword">install</span>
make <span class="hljs-keyword">install</span>-doc
make <span class="hljs-keyword">install</span>-extra-doc
cd ..
<span class="hljs-keyword">install</span> -m644 -v docs/writing_udev_rules/index.html \
/usr/share/doc/udev-<span class="hljs-number">113</span>/index.html
cd ..
rm -rf udev-<span class="hljs-number">113</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul>



Util-linux-2.12r

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/util<span class="hljs-attribute">-linux</span><span class="hljs-subst">-</span><span class="hljs-number">2.12</span>r<span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd util<span class="hljs-attribute">-linux</span><span class="hljs-subst">-</span><span class="hljs-number">2.12</span>r
sed <span class="hljs-attribute">-e</span> <span class="hljs-string">'s@etc/adjtime@var/lib/hwclock/adjtime@g'</span> <span class="hljs-subst">\</span>
<span class="hljs-attribute">-i</span> $(grep <span class="hljs-attribute">-rl</span> <span class="hljs-string">'/etc/adjtime'</span> <span class="hljs-built_in">.</span>)
mkdir <span class="hljs-attribute">-pv</span> /<span class="hljs-built_in">var</span>/lib/hwclock
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/util<span class="hljs-attribute">-linux</span><span class="hljs-subst">-</span><span class="hljs-number">2.12</span>r<span class="hljs-attribute">-cramfs</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/util<span class="hljs-attribute">-linux</span><span class="hljs-subst">-</span><span class="hljs-number">2.12</span>r<span class="hljs-attribute">-lseek</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
<span class="hljs-built_in">.</span>/configure
make HAVE_KILL<span class="hljs-subst">=</span>yes HAVE_SLN<span class="hljs-subst">=</span>yes
make HAVE_KILL<span class="hljs-subst">=</span>yes HAVE_SLN<span class="hljs-subst">=</span>yes install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> util<span class="hljs-attribute">-linux</span><span class="hljs-subst">-</span><span class="hljs-number">2.12</span>r</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul>



Vim-7.1

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/vim<span class="hljs-subst">-</span><span class="hljs-number">7.1</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
tar xvf <span class="hljs-variable">$LFS</span>/vim<span class="hljs-subst">-</span><span class="hljs-number">7.1</span><span class="hljs-attribute">-lang</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>gz
cd vim71
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/vim<span class="hljs-subst">-</span><span class="hljs-number">7.1</span><span class="hljs-attribute">-fixes</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
patch <span class="hljs-attribute">-Np1</span> <span class="hljs-attribute">-i</span> <span class="hljs-variable">$LFS</span>/vim<span class="hljs-subst">-</span><span class="hljs-number">7.1</span><span class="hljs-attribute">-mandir</span><span class="hljs-subst">-</span><span class="hljs-number">1.</span>patch
echo <span class="hljs-string">'#define SYS_VIMRC_FILE "/etc/vimrc"'</span> <span class="hljs-subst">>></span> src/feature<span class="hljs-built_in">.</span>h
<span class="hljs-built_in">.</span>/configure <span class="hljs-subst">--</span>prefix<span class="hljs-subst">=</span>/usr <span class="hljs-subst">--</span>enable<span class="hljs-attribute">-multibyte</span>
make</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>

测试

<code class="hljs go has-numbering"><span class="hljs-built_in">make</span> test</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

注意

这里test可能会有个别错误

<code class="hljs livecodeserver has-numbering">make install
<span class="hljs-built_in">ln</span> -sv vim /usr/bin/vi
<span class="hljs-keyword">for</span> L <span class="hljs-operator">in</span> <span class="hljs-string">""</span> fr <span class="hljs-keyword">it</span> pl ru; <span class="hljs-built_in">do</span>
<span class="hljs-built_in">ln</span> -sv vim<span class="hljs-number">.1</span> /usr/share/man/$L/man1/vi<span class="hljs-number">.1</span>
done
<span class="hljs-built_in">ln</span> -sv ../vim/vim71/doc /usr/share/doc/vim-<span class="hljs-number">7.1</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

建立vim的默认配置文件

<code class="hljs 1c has-numbering">cat > /etc/vimrc << <span class="hljs-string">"EOF"</span>
<span class="hljs-string">" Begin /etc/vimrc</span>
set nocompatible
set backspace=<span class="hljs-number">2</span>
syntax on
if (&term == <span class="hljs-string">"iterm"</span>) <span class="hljs-string">|| (&term == "</span>putty<span class="hljs-string">")</span>
set background=dark
endif
<span class="hljs-string">" End /etc/vimrc</span>
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>
<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> ..
rm -rf vim71</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



退出chroot环境

<code class="hljs  has-numbering">logout</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



为Strip而进入chroot环境

<code class="hljs ruby has-numbering">chroot <span class="hljs-variable">$LFS</span> /tools/bin/env -i \
<span class="hljs-constant">HOME</span>=<span class="hljs-regexp">/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin</span><span class="hljs-symbol">:/usr/bin</span><span class="hljs-symbol">:/sbin</span><span class="hljs-symbol">:/usr/sbin</span> \
/tools/bin/bash --login</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>



Strip

<code class="hljs mel has-numbering">/tools/bin/find /{,usr/}{bin,lib,sbin} -type f \
-<span class="hljs-keyword">exec</span> /tools/bin/<span class="hljs-keyword">strip</span> --<span class="hljs-keyword">strip</span>-debug <span class="hljs-string">'{}'</span> <span class="hljs-string">';'</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>



退出chroot环境

<code class="hljs  has-numbering">logout</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



为最后的设置进入chroot环境

<code class="hljs ruby has-numbering">chroot <span class="hljs-string">"$LFS"</span> /usr/bin/env -i \
<span class="hljs-constant">HOME</span>=<span class="hljs-regexp">/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin</span><span class="hljs-symbol">:/usr/bin</span><span class="hljs-symbol">:/sbin</span><span class="hljs-symbol">:/usr/sbin</span> \
/bin/bash --login
cd /sources
export <span class="hljs-constant">LFS</span>=<span class="hljs-regexp">/sources</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>



LFS-Bootscripts-6.3

<code class="hljs lasso has-numbering">tar xvf <span class="hljs-variable">$LFS</span>/lfs<span class="hljs-attribute">-bootscripts</span><span class="hljs-subst">-</span><span class="hljs-number">6.3</span><span class="hljs-built_in">.</span>tar<span class="hljs-built_in">.</span>bz2
cd lfs<span class="hljs-attribute">-bootscripts</span><span class="hljs-subst">-</span><span class="hljs-number">6.3</span>
make install
cd <span class="hljs-built_in">..</span>
rm <span class="hljs-attribute">-rf</span> lfs<span class="hljs-attribute">-bootscripts</span><span class="hljs-subst">-</span><span class="hljs-number">6.3</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



时间设置

<code class="hljs vala has-numbering">cat > /etc/sysconfig/clock << <span class="hljs-string">"EOF"</span>
<span class="hljs-preprocessor"># Begin /etc/sysconfig/clock</span>
UTC=<span class="hljs-number">1</span>
<span class="hljs-preprocessor"># End /etc/sysconfig/clock</span>
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



设置bash下的键盘功能键设置

<code class="hljs lasso has-numbering">cat <span class="hljs-subst">></span> /etc/inputrc <span class="hljs-subst"><<</span> <span class="hljs-string">"EOF"</span>
<span class="hljs-built_in">set</span> horizontal<span class="hljs-attribute">-scroll</span><span class="hljs-attribute">-mode</span> Off
<span class="hljs-built_in">set</span> meta<span class="hljs-attribute">-flag</span> <span class="hljs-keyword">On</span>
<span class="hljs-built_in">set</span> input<span class="hljs-attribute">-meta</span> <span class="hljs-keyword">On</span>
<span class="hljs-built_in">set</span> convert<span class="hljs-attribute">-meta</span> Off
<span class="hljs-built_in">set</span> output<span class="hljs-attribute">-meta</span> <span class="hljs-keyword">On</span>
<span class="hljs-built_in">set</span> bell<span class="hljs-attribute">-style</span> <span class="hljs-literal">none</span>
<span class="hljs-string">"\eOd"</span>: backward<span class="hljs-attribute">-word</span>
<span class="hljs-string">"\eOc"</span>: forward<span class="hljs-attribute">-word</span>
<span class="hljs-string">"\e[1~"</span>: beginning<span class="hljs-attribute">-of</span><span class="hljs-attribute">-line</span>
<span class="hljs-string">"\e[4~"</span>: end<span class="hljs-attribute">-of</span><span class="hljs-attribute">-line</span>
<span class="hljs-string">"\e[5~"</span>: beginning<span class="hljs-attribute">-of</span><span class="hljs-attribute">-history</span>
<span class="hljs-string">"\e[6~"</span>: end<span class="hljs-attribute">-of</span><span class="hljs-attribute">-history</span>
<span class="hljs-string">"\e[3~"</span>: delete<span class="hljs-attribute">-char</span>
<span class="hljs-string">"\e[2~"</span>: quoted<span class="hljs-attribute">-insert</span>
<span class="hljs-string">"\eOH"</span>: beginning<span class="hljs-attribute">-of</span><span class="hljs-attribute">-line</span>
<span class="hljs-string">"\eOF"</span>: end<span class="hljs-attribute">-of</span><span class="hljs-attribute">-line</span>
<span class="hljs-string">"\e[H"</span>: beginning<span class="hljs-attribute">-of</span><span class="hljs-attribute">-line</span>
<span class="hljs-string">"\e[F"</span>: end<span class="hljs-attribute">-of</span><span class="hljs-attribute">-line</span>
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul>



设置Bash Shell启动文件

<code class="hljs bash has-numbering">cat > /etc/profile << <span class="hljs-string">"EOF"</span>
<span class="hljs-comment"># Begin /etc/profile</span>
<span class="hljs-keyword">export</span> LANG=en_US.UTF-<span class="hljs-number">8</span>
<span class="hljs-keyword">export</span> INPUTRC=/etc/inputrc
alias ls=<span class="hljs-string">"ls --color"</span>
<span class="hljs-keyword">export</span> PS1=<span class="hljs-string">'\u:\w\$ '</span>
<span class="hljs-comment"># End /etc/profile</span>
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>



设置本地网络名

<code class="hljs bash has-numbering"><span class="hljs-built_in">echo</span> <span class="hljs-string">"HOSTNAME=mylinux"</span> > /etc/sysconfig/network</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>



设置hosts文件

<code class="hljs vala has-numbering">cat > /etc/hosts << <span class="hljs-string">"EOF"</span>
<span class="hljs-preprocessor"># Begin /etc/hosts (no network card version)</span>
<span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span> mylinux localhost
<span class="hljs-preprocessor"># End /etc/hosts (no network card version)</span>
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>



设置网络的静态地址
注意

IP、GATEWAY、BROADCAST的地址根据自己的实际情况设置
对于地址值的查看,点击虚拟机菜单栏中的“编辑”–> “虚拟网络编辑器” –> 选中NAT模式(如图)
虚拟网络编辑器
点击底下的“NAT设置”,如图可以获得GATEWAY(网关IP)
网关IP
回到虚拟网络编辑器界面,点击“DHCP设置”,如图
DHCP设置
可以看到开始IP地址和结束IP地址,前三位是一样的,最后一位是128和254,证明我可以选择的IP地址是XX.XX.XX.128——XX.XX.XX.254,中间任意选一个都可以,比如选择XX.XX.XX.129,这个就是IP地址了
而BROADCAST(广播地址)在上面也有,然后把这三个地址分别填写到下方的代码中

<code class="hljs handlebars has-numbering"><span class="xml"><span class="hljs-tag"><span class="hljs-attribute">cd</span> /<span class="hljs-attribute">etc</span>/<span class="hljs-attribute">sysconfig</span>/<span class="hljs-attribute">network-devices</span>
<span class="hljs-attribute">mkdir</span> <span class="hljs-attribute">-v</span> <span class="hljs-attribute">ifconfig.eth0</span>
<span class="hljs-attribute">cat</span> ></span> ifconfig.eth0/ipv4 <span class="hljs-tag"><< "<span class="hljs-attribute">EOF</span>"
<span class="hljs-attribute">ONBOOT</span>=<span class="hljs-value">yes</span>
<span class="hljs-attribute">SERVICE</span>=<span class="hljs-value">ipv4-static</span>
<span class="hljs-attribute">IP</span>=<span class="hljs-value">192.168.1.1</span>
<span class="hljs-attribute">GATEWAY</span>=<span class="hljs-value">192.168.1.2</span>
<span class="hljs-attribute">PREFIX</span>=<span class="hljs-value">24</span>
<span class="hljs-attribute">BROADCAST</span>=<span class="hljs-value">192.168.1.255</span>
<span class="hljs-attribute">EOF</span></span></span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>



设置DNS
注意

DNS设置成跟主机一样即可,常用的有114.114.114.114

<code class="hljs vala has-numbering">cat > /etc/resolv.conf << <span class="hljs-string">"EOF"</span>
<span class="hljs-preprocessor"># Begin /etc/resolv.conf</span>
nameserver <span class="hljs-number">114.114</span><span class="hljs-number">.114</span><span class="hljs-number">.114</span>
nameserver <span class="hljs-number">114.114</span><span class="hljs-number">.114</span><span class="hljs-number">.114</span>
<span class="hljs-preprocessor"># End /etc/resolv.conf</span>
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>



建立fstab文件

<code class="hljs vala has-numbering">cat > /etc/fstab << <span class="hljs-string">"EOF"</span>
<span class="hljs-preprocessor"># Begin /etc/fstab</span>
<span class="hljs-preprocessor"># file system  mount-point  type   options         dump  fsck</span>
<span class="hljs-preprocessor">#                                                        order</span>
/dev/hda2       /            xfs  defaults        <span class="hljs-number">1</span>     <span class="hljs-number">1</span>
/dev/hda1       swap         swap   pri=<span class="hljs-number">1</span>           <span class="hljs-number">0</span>     <span class="hljs-number">0</span>
proc              /proc        proc   defaults        <span class="hljs-number">0</span>     <span class="hljs-number">0</span>
sysfs             /sys         sysfs  defaults        <span class="hljs-number">0</span>     <span class="hljs-number">0</span>
devpts          /dev/pts     devpts gid=<span class="hljs-number">4</span>,mode=<span class="hljs-number">620</span>  <span class="hljs-number">0</span>     <span class="hljs-number">0</span>
shm              /dev/shm     tmpfs  defaults        <span class="hljs-number">0</span>     <span class="hljs-number">0</span>
<span class="hljs-preprocessor"># End /etc/fstab</span>
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul>

注意

这里的磁盘名以及文件系统名需要根据实际情况修改,不过照着教程做的话不用做出修改



安装内核Linux-2.6.22.5

<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> /sources
tar xvf <span class="hljs-variable">$LFS</span>/linux-<span class="hljs-number">2.6</span>.<span class="hljs-number">22.5</span>.tar.bz2
<span class="hljs-built_in">cd</span> linux-<span class="hljs-number">2.6</span>.<span class="hljs-number">22.5</span>
make mrproper
make menuconfig</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

进入了这个界面
01

然后通过上下移动选中Device Drivers->Networking device support->Ethernet (10 or 100Mbit)加入AMD PCnet32 PCI support的支持,编译成模块即可(下上选中AMD PCnet32 PCI support,然后敲击键盘的“m”键即可),结果如图
02

然后回去选中Device Drivers->Sound->Advanced Linux Sound Architecture
03

敲击键盘“m”键,即可出现子选项,然后选中PCI devices加入(Creative) Ensoniq AudioPCI 1371/1373的支持,编译成模块即可(下上选中(Creative) Ensoniq AudioPCI 1371/1373,然后敲击键盘的“m”键即可),结果如图
04

然后回去选中File Systems->XFS filesystem support加入XFS的支持,可以采用编译到内核来避免未用initrd脚本来加载模块而导致启动失败(下上选中XFS filesystem support,然后敲击键盘的“y”键即可),结果如图
05

可以保存退出了,也就是Exit
选择“yes”
然后继续代码执行

<code class="hljs avrasm has-numbering">make
make modules_install
<span class="hljs-keyword">cp</span> -v arch/i386/boot/bzImage /boot/lfskernel-<span class="hljs-number">2.6</span><span class="hljs-number">.22</span><span class="hljs-number">.5</span>
<span class="hljs-keyword">cp</span> -v System<span class="hljs-preprocessor">.map</span> /boot/System<span class="hljs-preprocessor">.map</span>-<span class="hljs-number">2.6</span><span class="hljs-number">.22</span><span class="hljs-number">.5</span>
<span class="hljs-keyword">cp</span> -v <span class="hljs-preprocessor">.config</span> /boot/config-<span class="hljs-number">2.6</span><span class="hljs-number">.22</span><span class="hljs-number">.5</span>
install -d /usr/share/doc/linux-<span class="hljs-number">2.6</span><span class="hljs-number">.22</span><span class="hljs-number">.5</span>
<span class="hljs-keyword">cp</span> -r Documentation<span class="hljs-comment">/* /usr/share/doc/linux-2.6.22.5</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>



安装Grub

<code class="hljs  has-numbering">grub</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

进入如下界面
grub

然后输入

<code class="hljs erlang has-numbering"><span class="hljs-function"><span class="hljs-title">root</span> <span class="hljs-params">(hd0,<span class="hljs-number">1</span>)</span>
<span class="hljs-title">setup</span> <span class="hljs-params">(hd0)</span>
<span class="hljs-title">quit</span></span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

设置grub启动菜单

<code class="hljs vala has-numbering">cat > /boot/grub/menu.lst << <span class="hljs-string">"EOF"</span>
<span class="hljs-preprocessor"># Begin /boot/grub/menu.lst</span>
<span class="hljs-preprocessor"># By default boot the first menu entry.</span>
<span class="hljs-keyword">default</span> <span class="hljs-number">0</span>
<span class="hljs-preprocessor"># Allow 30 seconds before booting the default.</span>
timeout <span class="hljs-number">30</span>
<span class="hljs-preprocessor"># Use prettier colors.</span>
color green/black light-green/black
<span class="hljs-preprocessor"># The first entry is for LFS.</span>
title<span class="hljs-constant"> LFS </span><span class="hljs-number">6.3</span>
root (hd0,<span class="hljs-number">1</span>)
kernel /boot/lfskernel-<span class="hljs-number">2.6</span><span class="hljs-number">.22</span><span class="hljs-number">.5</span> root=/dev/hda2
EOF</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li></ul>

注意

这里root后面的磁盘分区需要根据实际情况调整,不过照着教程做的话不用做出修改

将menu.lst连接到/etc目录下

<code class="hljs lasso has-numbering">mkdir <span class="hljs-attribute">-v</span> /etc/grub
ln <span class="hljs-attribute">-sv</span> /boot/grub/menu<span class="hljs-built_in">.</span>lst /etc/grub</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>

退出制作环境

<code class="hljs  has-numbering">logout</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

现在已经完成了lfs的安装,可以重新启动来运行我们自己的系统

<code class="hljs  has-numbering">reboot</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

启动系统如下图
myLFS

用户名是root,密码是自己之前定义的
登陆

至此,一个初级的LFS就已经完成,接下来是LFS的进阶,往其中添加更多的功能,包括ssh,wget,gui,qt等,可以继续关注我的下一篇教程。最后,特别鸣谢“孙海勇(冲天飞豹)”【原版作者】的文章,我也是照着他的教程初次实现LFS的,并同时通过做过的一些经验对之前的教程进行一些微调,希望能帮助更多的人初步踏入LFS~~


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很早以前就听说过 LFS,不过一直没有什么时间和精力去尝试它,这一次因为上课任务的需要,才开始接 触它。安装 LFS 是我们这门课程当中的一个实验,可能对于高手们来说这不过是小菜一碟,但对于大一 的上课前从来没有接触过 Linux 的学生们来说,应该还是一项非常艰难的任务。不过最终结果是令人满意 的!很多学生最终完成了实验,并且还有一些学生在课后利用业余时间合作整理(翻译)了 LFS 6.4 的中 文手册。 关于初学者如何学习 LFS 的问题,我觉得金步国先生在 LFS 6.2 手册前的一段“题外话”说的非常好,就直 接贴过来了,希望对后来人有用: 大部分 LFSer 都认为学习 LFS 需要有熟练使用 Linux 的基础,并且大部分听说过 LFS 的人都有一个印象:那是高手的玩具,不是我等菜鸟玩得了的......我不完全赞同,我认 为基础如何并非关键,契而不舍的精神和强烈的求知欲才更加重要。想想自己接触 Linux 一 个月左右的时候就有了和 Gerard 一样的想法,因为在学习 RedHat / Fedora / Debian 甚至是 Gentoo 的时候,我感觉到自己并不是在学习 Linux 而是在学习这些发行版各自的专有特性, 他们把 Linux 本来的面貌层层包裹起来,让我不能深入理解背后的机制。并且这些版本各自 有自己的优点和缺点,不能完全满足我的要求。其实那时候我的 Linux 水平仅仅限于会在控 制台上敲几个 ls 之类的命令,从未编译过软件,连 make 都没听说过呢。但是我迫切想知道 如何定制一个完全适合自己的 Linux 系统,问了好多 Linuxer ,把 Google 搜了个底朝天,也 未能得到完整性的答案,唯一让我印象深刻的就是能够容纳在一张软盘上的 babyLinux ,但 是它显然太简单,不能满足我的要求。一直郁闷了很久,好不容易机缘巧合,Qoo 兄弟叫我 来 LinuxSir.Org 论坛的 LFS 版看看,当时论坛上只有一份不完整的 LFS 6.0 中文版,看完序言 后,我激动的跳了起来,欢呼不已!这就是我梦寐以求的东西啊!于是在尚未安装过 LFS 的 情况下,静下心来花了十多天时间先完整的翻译了 LFS 6.1 ,又花了5-6天时间,一行命令一 行命令地完成了 LFS 的全过程。在学习 LFS 的20天里,我对 Linux 的理解发生了质的飞跃。 大约没有人赞同学习 Linux 可以从 LFS 开始,这确实有一定的道理,但是 LFS 教给你的都是 真正的 Linux "基础知识",并且这些知识可以为将来的进一步学习打下绝对扎实的基础。所 以我要用自己的亲身经历鼓励那些刚刚接触 Linux 的新生牛犊勇敢的从 LFS 开始:没有基础 不要紧,缺什么补什么!当你

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值