转 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即可,然后下一步
虚拟磁盘类型选用IDE,然后下一步
接着选择创建新虚拟磁盘,然后下一步
最大磁盘大小默认8G即可,然后选择将虚拟磁盘存储为单个文件,然后下一步
保持默认,直接下一步
选择完成
接着就可以看见myLFS的主界面了,然后选择编辑虚拟机设置
在CD/DVD(IDE)的位置那,选择使用ISO映像文件,点击浏览,把lfslivecd-x86-6.3-r2145.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)
回到虚拟网络编辑器界面,点击“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>
进入了这个界面
然后通过上下移动选中Device Drivers->Networking device support->Ethernet (10 or 100Mbit)加入AMD PCnet32 PCI support的支持,编译成模块即可(下上选中AMD PCnet32 PCI support,然后敲击键盘的“m”键即可),结果如图
然后回去选中Device Drivers->Sound->Advanced Linux Sound Architecture
敲击键盘“m”键,即可出现子选项,然后选中PCI devices加入(Creative) Ensoniq AudioPCI 1371/1373的支持,编译成模块即可(下上选中(Creative) Ensoniq AudioPCI 1371/1373,然后敲击键盘的“m”键即可),结果如图
然后回去选中File Systems->XFS filesystem support加入XFS的支持,可以采用编译到内核来避免未用initrd脚本来加载模块而导致启动失败(下上选中XFS filesystem support,然后敲击键盘的“y”键即可),结果如图
可以保存退出了,也就是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>
进入如下界面
然后输入
<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>
启动系统如下图
用户名是root,密码是自己之前定义的
至此,一个初级的LFS就已经完成,接下来是LFS的进阶,往其中添加更多的功能,包括ssh,wget,gui,qt等,可以继续关注我的下一篇教程。最后,特别鸣谢“孙海勇(冲天飞豹)”【原版作者】的文章,我也是照着他的教程初次实现LFS的,并同时通过做过的一些经验对之前的教程进行一些微调,希望能帮助更多的人初步踏入LFS~~