LFS安装过程

回复 收藏
本帖最后由 coffee 于 2015-4-2 10:53 编辑

PS:LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。LFS的意义在于让使用者理解编译参数的作用,理解补丁的作用,理解LFS附带的脚本的工作过程,从而达到脱离LFS、独立制作并完善发行版的目的。
LFS 6.6中文手册(在线版)http://www.ha97.com/book/lfs-book-6.6/  
lfslivecd-x86-6.3-r2145.iso 下载地址 http://www.linuxfromscratch.org/livecd/download.html   


13.png 14.png 15.png 16.png 17.png 20.png 24.png 1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png 11.png 12.png 13.png 14.png 15.png 16.png 17.png 19.png 20.png 24.png 25.png 26.png 27.png 28.png 29.png 30.png 31.png 32.png 33.png 34.png
2014-11-05 20:03 举报
已邀请:
0

coffee

赞同来自:

本帖最后由 coffee 于 2014-11-5 20:28 编辑

  1. mkswap /dev/sda1               #格式化为交换分区
  2. mkfs.ext3 /dev/sda2            #格式化为ext3
  3. export LFS=/mnt/lfs            #设置全局变量,后面多次用到
  4. mkdir -pv $LFS                 #创建目录~~~
  5. mount /dev/sda2 $LFS           #挂载
  6. swapon -v /dev/sda1            #启用交换分区
  7. mkdir -v $LFS/sources          #~~~
  8. chmod -v a+wt $LFS/sources     #将目录或文件的属性设置为1777,这样任何人都可以对其进行读写
  9. mkdir -v $LFS/tools            #~~~
  10. ln -sv $LFS/tools /            #建一个软链接,方便访问。


  11. groupadd lfs      #创建 lfs 用户组
  12. useradd -s /bin/bash -g lfs -m -k /dev/null lfs   #创建 lfs 用户
  13. passwd lfs          #设置lfs密码,密码为空


  14. chown -v lfs $LFS/tools    #将tools目录的用户改为lfs
  15. chown -v lfs $LFS/sources  #同理

  16. su - lfs              #切换用户


0

oszhang

赞同来自:

没了?手把手教你那是入门 ,建议换种方式,网络安装。
0

coffee

赞同来自:

本帖最后由 coffee 于 2014-11-15 21:28 编辑
  1. #建立lfs用户的环境

  2. cat > ~/.bash_profile << "EOF"                                                #创建.bash_profile 文件
  3. exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
  4. EOF




  5. cat > ~/.bashrc << "EOF"                #创建.bashrc 文件
  6. set +h
  7. umask 022
  8. LFS=/mnt/lfs
  9. LC_ALL=POSIX
  10. PATH=/tools/bin:/bin:/usr/bin
  11. export LFS LC_ALL PATH
  12. EOF


  13. source ~/.bash_profile          #配置.bash_profile                    

  14. cd $LFS/sources                                        #切换到安装目录

  15. #注意源码解压安装以后,记得删除以防后面出现不必要的错误
  16. #install Binutils-2.17

  17. tar xvf /lfs-sources/binutils-2.17.tar.bz2
  18. cd binutils-2.17
  19. mkdir -v ../binutils-build
  20. cd ../binutils-build
  21. CC="gcc -B/usr/bin/" ../binutils-2.17/configure \
  22.     --prefix=/tools --disable-nls --disable-werror
  23. make
  24. make install
  25. make -C ld clean
  26. make -C ld LIB_PATH=/tools/lib
  27. cp -v ld/ld-new /tools/bin
  28. cd ..
  29. rm -rf binutils-build
  30. rm -rf binutils-2.17


  31. #install GCC-4.1.2  第一遍安装,编译安装的时间比较长。

  32. tar xvf /lfs-sources/gcc-4.1.2.tar.bz2
  33. mkdir -v gcc-build
  34. cd gcc-build
  35. CC="gcc -B/usr/bin/" ../gcc-4.1.2/configure --prefix=/tools \
  36.     --with-local-prefix=/tools --disable-nls --enable-shared \
  37.     --enable-languages=c
  38. make bootstrap
  39. make install
  40. ln -vs gcc /tools/bin/cc
  41. cd ..
  42. rm -rf gcc-build
  43. rm -rf gcc-4.1.2


  44. #install Linux-2.6.22.5

  45. tar xvf /lfs-sources/linux-2.6.22.5.tar.bz2
  46. cd linux-2.6.22.5
  47. make mrproper
  48. make headers_check
  49. make INSTALL_HDR_PATH=dest headers_install
  50. cp -rv dest/include/* /tools/include
  51. cd ..
  52. rm -rf linux-2.6.22.5


  53. #install Glibc-2.5.1

  54. tar xvf /lfs-sources/glibc-2.5.1.tar.bz2
  55. cd glibc-2.5.1
  56. mkdir -v ../glibc-build
  57. cd ../glibc-build
  58. ../glibc-2.5.1/configure --prefix=/tools \
  59.     --disable-profile --enable-add-ons \
  60.     --enable-kernel=2.6.0 --with-binutils=/tools/bin \
  61.     --without-gd --with-headers=/tools/include \
  62.     --without-selinux
  63. make
  64. mkdir -v /tools/etc
  65. touch /tools/etc/ld.so.conf
  66. make install
  67. cd ..
  68. rm -rf glibc-build
  69. rm -rf glibc-2.5.1


  70. #注意到这里需要调整一下工具链。
  71. mv -v /tools/bin/{ld,ld-old}
  72. mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
  73. mv -v /tools/bin/{ld-new,ld}
  74. ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld
  75. gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g' \
  76.   > `dirname $(gcc -print-libgcc-file-name)`/specs
  77. GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include &&
  78. find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &&
  79. rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &&
  80. unset GCC_INCLUDEDIR


  81. #测试刚才调整后的工具链

  82. echo 'main(){}' > dummy.c
  83. cc dummy.c
  84. readelf -l a.out | grep 'tools'
  85. #结果如图:35.png
  86. rm -v a.out dummy.c


  87. #这里本该是安装测试工具的就是这三个包Tcl-8.4.15 Expect-5.43.0 DejaGNU-1.4.4
  88. #但是我没装,check需要耐心等待。。。。。统一说明一下,后面的make check没装测试工具就没做

  89. #install GCC-4.1.2 第二遍安装,编译时间较长

  90. tar xvf /lfs-sources/gcc-4.1.2.tar.bz2    #这里说明一下,tar xvf 它会自动识别是.bz2包还是.gz包,从而调用不同的解压工具。
  91. cd gcc-4.1.2
  92. cp -v gcc/Makefile.in{,.orig}
  93. sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
  94. cp -v gcc/Makefile.in{,.tmp}
  95. sed 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp > gcc/Makefile.in
  96. patch -Np1 -i /lfs-sources/gcc-4.1.2-specs-1.patch
  97. mkdir -v ../gcc-build
  98. cd ../gcc-build
  99. ../gcc-4.1.2/configure --prefix=/tools \
  100. --with-local-prefix=/tools --enable-clocale=gnu \
  101. --enable-shared --enable-threads=posix \
  102. --cxa_atexit --enable-languages=c,c++ \
  103. --disable-libstdcxx-pch
  104. make
  105. #make -k check           #check的时间太长
  106. make install
  107. cd ..
  108. rm -rf gcc-build
  109. rm -rf gcc-4.1.2


  110. # 再次测试工具链的调整,以确保刚刚编译的gcc正确工作
  111. echo 'main(){}' > dummy.c
  112. cc dummy.c
  113. readelf -l a.out | grep 'tools'
  114. #结果如图:35.png
  115. rm -v a.out dummy.c


  116. #install Binutils-2.17

  117. tar xvf /lfs-sources/binutils-2.17.tar.bz2
  118. mkdir -v binutils-build
  119. cd binutils-build
  120. ../binutils-2.17/configure --prefix=/tools --disable-nls --with-lib-path=/tools/lib
  121. make
  122. make install
  123. make -C ld clean
  124. make -C ld LIB_PATH=/usr/lib:/lib
  125. cp -v ld/ld-new /tools/bin
  126. cd ..
  127. rm -rf binutils-build
  128. rm -rf binutils-2.17


  129. #install Ncurses-5.6

  130. tar xvf /lfs-sources/ncurses-5.6.tar.gz
  131. cd ncurses-5.6
  132. ./configure --prefix=/tools --with-shared --without-debug --without-ada --enable-overwrite
  133. make
  134. make install
  135. cd ..
  136. rm -rf ncurses-5.6


  137. #install Bash-3.2

  138. tar xvf /lfs-sources/bash-3.2.tar.gz
  139. cd bash-3.2
  140. patch -Np1 -i /lfs-sources/bash-3.2-fixes-5.patch
  141. ./configure --prefix=/tools --without-bash-malloc
  142. make
  143. make install
  144. ln -vs bash /tools/bin/sh
  145. cd ..
  146. rm -rf bash-3.2


  147. #install Bzip2-1.0.4

  148. tar xvf /lfs-sources/bzip2-1.0.4.tar.gz
  149. cd bzip2-1.0.4
  150. make
  151. make PREFIX=/tools install
  152. cd ..
  153. rm -rf bzip2-1.0.4


  154. #install Coreutils-6.9

  155. tar xvf /lfs-sources/coreutils-6.9.tar.bz2
  156. cd coreutils-6.9
  157. ./configure --prefix=/tools
  158. make
  159. make install
  160. cp -v src/su /tools/bin/su-tools
  161. cd ..
  162. rm -rf coreutils-6.9


  163. #install Diffutils-2.8.1

  164. tar xvf /lfs-sources/diffutils-2.8.1.tar.gz
  165. cd diffutils-2.8.1
  166. ./configure --prefix=/tools
  167. make
  168. make install
  169. cd ..
  170. rm -rf diffutils-2.8.1


  171. #install Findutils-4.2.31

  172. tar xvf /lfs-sources/findutils-4.2.31.tar.gz
  173. cd findutils-4.2.31
  174. ./configure --prefix=/tools
  175. make
  176. make install
  177. cd ..
  178. rm -rf findutils-4.2.31


  179. #install Gawk-3.1.5

  180. tar xvf /lfs-sources/gawk-3.1.5.tar.bz2
  181. cd gawk-3.1.5
  182. ./configure --prefix=/tools
  183. cat >> config.h << "EOF"
  184. #define HAVE_LANGINFO_CODESET 1
  185. #define HAVE_LC_MESSAGES 1
  186. EOF
  187. make
  188. make install
  189. cd ..
  190. rm -rf gawk-3.1.5


  191. #install Gettext-0.16.1

  192. tar xvf /lfs-sources/gettext-0.16.1.tar.gz
  193. cd gettext-0.16.1
  194. cd gettext-tools
  195. ./configure --prefix=/tools --disable-shared
  196. make -C gnulib-lib
  197. make -C src msgfmt
  198. cp -v src/msgfmt /tools/bin
  199. cd $LFS/sources
  200. rm -rf gettext-0.16.1


  201. #install Grep-2.5.1a

  202. tar xvf /lfs-sources/grep-2.5.1a.tar.bz2
  203. cd grep-2.5.1a
  204. ./configure --prefix=/tools --disable-perl-regexp
  205. make
  206. make install
  207. cd ..
  208. rm -rf grep-2.5.1a


  209. #install Gzip-1.3.12

  210. tar xvf /lfs-sources/gzip-1.3.12.tar.gz
  211. cd gzip-1.3.12
  212. ./configure --prefix=/tools
  213. make
  214. make install
  215. cd ..
  216. rm -rf gzip-1.3.12


  217. #install Make-3.81

  218. tar xvf /lfs-sources/make-3.81.tar.bz2
  219. cd make-3.81
  220. ./configure --prefix=/tools
  221. make
  222. make install
  223. cd ..
  224. rm -rf make-3.81


  225. #install Patch-2.5.4

  226. tar xvf /lfs-sources/patch-2.5.4.tar.gz
  227. cd patch-2.5.4
  228. ./configure --prefix=/tools
  229. make
  230. make install
  231. cd ..
  232. rm -rf patch-2.5.4


  233. #install Perl-5.8.8

  234. tar xvf /lfs-sources/perl-5.8.8.tar.bz2
  235. cd perl-5.8.8
  236. patch -Np1 -i /lfs-sources/perl-5.8.8-libc-2.patch
  237. ./configure.gnu --prefix=/tools -Dstatic_ext='Data/Dumper Fcntl IO POSIX'
  238. make perl utilities
  239. cp -v perl pod/pod2man /tools/bin
  240. mkdir -pv /tools/lib/perl5/5.8.8
  241. cp -Rv lib/* /tools/lib/perl5/5.8.8
  242. cd ..
  243. rm -rf perl-5.8.8


  244. #install Sed-4.1.5

  245. tar xvf /lfs-sources/sed-4.1.5.tar.gz
  246. cd sed-4.1.5
  247. ./configure --prefix=/tools
  248. make
  249. make install
  250. cd ..
  251. rm -rf sed-4.1.5


  252. #install Tar-1.18

  253. tar xvf /lfs-sources/tar-1.18.tar.bz2
  254. cd tar-1.18
  255. ./configure --prefix=/tools
  256. make
  257. make install
  258. cd ..
  259. rm -rf tar-1.18

  260. #install Texinfo-4.9

  261. tar xvf /lfs-sources/texinfo-4.9.tar.bz2
  262. cd texinfo-4.9
  263. ./configure --prefix=/tools
  264. make
  265. make install
  266. cd ..
  267. rm -rf texinfo-4.9


  268. #install Util-linux-2.12r

  269. tar xvf /lfs-sources/util-linux-2.12r.tar.bz2
  270. cd util-linux-2.12r
  271. sed -i 's@/usr/include@/tools/include@g' configure
  272. ./configure
  273. make -C lib
  274. make -C mount mount umount
  275. make -C text-utils more
  276. cp -v mount/{,u}mount text-utils/more /tools/bin
  277. cd ..
  278. rm -rf util-linux-2.12r


  279. exit        #注意这时要退出lfs用户,切换到root用户



0

coffee

赞同来自:

本帖最后由 coffee 于 2014-12-14 22:37 编辑
  1. chown -R root:root $LFS/tools        #这个时候lfs用户任务完成了,因此要改回权限


  2. mkdir -pv $LFS/{dev,proc,sys}       #创建了三个比较重要的目录   



  3. mknod -m 600 $LFS/dev/console c 5 1    #mknod 命令建立一个目录项和一个特殊文件的对应索引节点
  4. mknod -m 666 $LFS/dev/null c 1 3


  5. #这里挂载的是几个重要的文件系统
  6. mount -v --bind /dev $LFS/dev
  7. mount -vt devpts devpts $LFS/dev/pts
  8. mount -vt tmpfs shm $LFS/dev/shm
  9. mount -vt proc proc $LFS/proc
  10. mount -vt sysfs sysfs $LFS/sys


  11. #将lfs-sources里面所有源码包复制到$LFS/sources目录中,方便以后使用。
  12. cp -a /lfs-sources/* $LFS/sources/



  13. #可要可不要,这主要是为了让系统显示中文,中文补丁。
  14. cd $LFS/sources/
  15. wget http://zdbr.net.cn/download/utf8-kernel-2.6.22.5-core-1.patch.bz2
  16. wget http://zdbr.net.cn/download/utf8-kernel-2.6.22.5-fonts-1.patch.bz2
  17. bunzip2 utf8-kernel-2.6.22.5-core-1.patch.bz2
  18. bunzip2 utf8-kernel-2.6.22.5-fonts-1.patch.bz2


  19. #chroot到目标系统的目录下,以便不受主系统的影响来制作目标系统
  20. chroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /tools/bin/bash --login +h


  21. #从这里就可看出文件系统的结构
  22. mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt}
  23. mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
  24. install -dv -m 0750 /root
  25. install -dv -m 1777 /tmp /var/tmp
  26. mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
  27. mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
  28. mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
  29. mkdir -pv /usr/{,local/}share/man/man{1..8}
  30. for dir in /usr /usr/local; do
  31. ln -sv share/{man,doc,info} $dir
  32. done
  33. mkdir -pv /var/{lock,log,mail,run,spool}
  34. mkdir -pv /var/{opt,cache,lib/{misc,locate},local}



  35. # 创建几个必要的链接,因为在目标系统的编译过程中,部分编译程序会用绝对路径来寻找命令或文件
  36. ln -sv /tools/bin/{bash,cat,echo,grep,pwd,stty} /bin
  37. ln -sv /tools/bin/perl /usr/bin
  38. ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
  39. ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
  40. ln -sv bash /bin/sh
  41. touch /etc/mtab


  42. #这里就是passwd文件,创建root以及系统用户
  43. cat > /etc/passwd << "EOF"
  44. root:x:0:0:root:/root:/bin/bash
  45. nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
  46. EOF
  47. cat > /etc/group << "EOF"
  48. root:x:0:
  49. bin:x:1:
  50. sys:x:2:
  51. kmem:x:3:
  52. tty:x:4:
  53. tape:x:5:
  54. daemon:x:6:
  55. floppy:x:7:
  56. disk:x:8:
  57. lp:x:9:
  58. dialout:x:10:
  59. audio:x:11:
  60. video:x:12:
  61. utmp:x:13:
  62. usb:x:14:
  63. cdrom:x:15:
  64. mail:x:34:
  65. nogroup:x:99:
  66. EOF


  67. # 重新加载bash,以使root用户起效,这样前面的提示符就不会是“I have no name!”
  68. exec /tools/bin/bash --login +h


  69. # 创建和设置几个临时文件和日志文件。

  70. touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
  71. chgrp -v utmp /var/run/utmp /var/log/lastlog
  72. chmod -v 664 /var/run/utmp /var/log/lastlog


  73. # 开始目标系统软件安装。进入到源码目录下
  74. cd /sources         
  75. #注意看看你刚才cp命令是否是把源码包复制到/sources目录。
  76. #如果不是就不要使用export LFS=/sources,应该定义你自己的。
  77. export LFS=/sources


  78. #install Linux-2.6.22.5

  79. tar xvf $LFS/linux-2.6.22.5.tar.bz2
  80. cd linux-2.6.22.5
  81. sed -i '/scsi/d' include/Kbuild
  82. make mrproper
  83. make headers_check
  84. make INSTALL_HDR_PATH=dest headers_install
  85. cp -rv dest/include/* /usr/include
  86. cd ..
  87. rm -rf linux-2.6.22.5


  88. #install Man-pages-2.63

  89. tar xvf $LFS/man-pages-2.63.tar.bz2
  90. cd man-pages-2.63
  91. make install
  92. cd ..
  93. rm -rf man-pages-2.63


  94. #install Glibc-2.5.1

  95. tar xvf $LFS/glibc-2.5.1.tar.bz2
  96. cd glibc-2.5.1
  97. tar -xvf $LFS/glibc-libidn-2.5.1.tar.gz
  98. mv glibc-libidn-2.5.1 libidn
  99. sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED
  100. sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|' \
  101.    scripts/test-installation.pl
  102. sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
  103. mkdir -v ../glibc-build
  104. cd ../glibc-build
  105. ../glibc-2.5.1/configure --prefix=/usr \
  106. --disable-profile --enable-add-ons \
  107. --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc
  108. make
  109. #make -k check 2>&1 | tee glibc-check-log    #安装了测试工具,才check,没有装就跳过。
  110. #grep Error glibc-check-log
  111. touch /etc/ld.so.conf
  112. make install
  113. make localedata/install-locales
  114. #注意安装glibc,可能会报错,这里忽略


  115. # 建立重要文件:
  116. #(nsswitch)name service switch configuration
  117. #nsswitch.conf文件规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息

  118. cat > /etc/nsswitch.conf << "EOF"
  119. # Begin /etc/nsswitch.conf
  120. passwd: files
  121. group: files
  122. shadow: files
  123. hosts: files dns
  124. networks: files
  125. protocols: files
  126. services: files
  127. ethers: files
  128. rpc: files
  129. # End /etc/nsswitch.conf
  130. EOF
  131. tzselect
  132. cp -v --remove-destination /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  133. cat > /etc/ld.so.conf << "EOF"    #ld.so.conf文件的作用主要是动态库搜索路径
  134. # Begin /etc/ld.so.conf
  135. /usr/local/lib
  136. /opt/lib
  137. # End /etc/ld.so.conf
  138. EOF

  139. #删除 Glibc 编译目录
  140. cd ..
  141. rm -rf glibc-build
  142. rm -rf glibc-2.5.1


  143. # 调整工具链

  144. mv -v /tools/bin/{ld,ld-old}
  145. mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
  146. mv -v /tools/bin/{ld-new,ld}
  147. ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld


  148. # 调整specs文件

  149. gcc -dumpspecs | sed \
  150. -e 's@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g' \
  151. -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
  152. -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \
  153. `dirname $(gcc --print-libgcc-file-name)`/specs





  154. #install Binutils-2.17

  155. tar xvf $LFS/binutils-2.17.tar.bz2
  156. expect -c "spawn ls"
  157. mkdir binutils-build
  158. cd binutils-build
  159. ../binutils-2.17/configure --prefix=/usr --enable-shared
  160. make tooldir=/usr

  161. #没有安装测试用的工具所以就不用测试了%%%%%
  162. #make check

  163. make tooldir=/usr install
  164. cp -v ../binutils-2.17/include/libiberty.h /usr/include
  165. cd ..
  166. rm -rf binutils-build
  167. rm -rf binutils-2.17


  168. #install GCC-4.1.2

  169. tar xvf $LFS/gcc-4.1.2.tar.bz2
  170. cd gcc-4.1.2
  171. sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
  172. sed -i 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in
  173. sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
  174. sed -i 's/@have_mktemp_command@/yes/' gcc/gccbug.in
  175. mkdir -v ../gcc-build
  176. cd ../gcc-build
  177. ../gcc-4.1.2/configure --prefix=/usr \
  178. --libexecdir=/usr/lib --enable-shared \
  179. --enable-threads=posix --cxa_atexit \
  180. --enable-clocale=gnu --enable-languages=c,c++
  181. make

  182. #同理%%%%%
  183. #make  -k check

  184. make install
  185. ln -sv ../usr/bin/cpp /lib
  186. ln -sv gcc /usr/bin/cc
  187. cd ..
  188. rm -rf gcc-build
  189. rm -rf gcc-4.1.2

  190. #isntall Berkeley DB-4.5.20

  191. tar xvf $LFS/db-4.5.20.tar.gz
  192. cd db-4.5.20
  193. patch -Np1 -i $LFS/db-4.5.20-fixes-1.patch
  194. cd build_unix
  195. ../dist/configure --prefix=/usr --enable-compat185 --enable-cxx
  196. make
  197. make docdir=/usr/share/doc/db-4.5.20 install
  198. chown -Rv root:root /usr/share/doc/db-4.5.20
  199. cd /sources
  200. rm -rf db-4.5.20


  201. #install  Sed-4.1.5

  202. tar xvf $LFS/sed-4.1.5.tar.gz
  203. cd sed-4.1.5
  204. ./configure --prefix=/usr --bindir=/bin --enable-html
  205. make

  206. #同理%%%%%
  207. #make check

  208. make install
  209. cd ..
  210. rm -rf sed-4.1.5


  211. #install E2fsprogs-1.40.2

  212. tar xvf $LFS/e2fsprogs-1.40.2.tar.gz
  213. cd e2fsprogs-1.40.2
  214. sed -i -e 's@/bin/rm@/tools&@' lib/blkid/test_probe.in
  215. mkdir -v build
  216. cd build
  217. ../configure --prefix=/usr --with-root-prefix="" \
  218. --enable-elf-shlibs
  219. make

  220. #同理%%%%%
  221. #make check

  222. make install
  223. make install-libs
  224. cd ../..
  225. rm -rf e2fsprogs-1.40.2


  226. #install Coreutils-6.9

  227. tar xvf $LFS/coreutils-6.9.tar.bz2
  228. cd coreutils-6.9
  229. patch -Np1 -i $LFS/coreutils-6.9-uname-1.patch
  230. patch -Np1 -i $LFS/coreutils-6.9-suppress_uptime_kill_su-1.patch
  231. patch -Np1 -i $LFS/coreutils-6.9-i18n-1.patch
  232. chmod +x tests/sort/sort-mb-tests
  233. ./configure --prefix=/usr
  234. make

  235. make install
  236. mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
  237. mv -v /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,readlink,rm} /bin
  238. mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
  239. mv -v /usr/bin/chroot /usr/sbin
  240. mv -v /usr/bin/{head,sleep,nice} /bin
  241. cd ..
  242. rm -rf coreutils-6.9


  243. #install Iana-Etc-2.20

  244. tar xvf $LFS/iana-etc-2.20.tar.bz2
  245. cd iana-etc-2.20
  246. make
  247. make install
  248. cd ..
  249. rm -rf iana-etc-2.20


  250. #install M4-1.4.10

  251. tar xvf $LFS/m4-1.4.10.tar.bz2
  252. cd m4-1.4.10
  253. ./configure --prefix=/usr
  254. make

  255. #同理%%%%%
  256. #make check

  257. make install
  258. cd ..
  259. rm -rf m4-1.4.10

  260. #
  261. # Bison-2.3
  262. #
  263. tar xvf $LFS/bison-2.3.tar.bz2
  264. cd bison-2.3
  265. ./configure --prefix=/usr
  266. echo '#define YYENABLE_NLS 1' >> config.h
  267. make

  268. #同理%%%%%
  269. #make check

  270. make install
  271. cd ..
  272. rm -rf bison-2.3


  273. #install Ncurses-5.6

  274. tar xvf $LFS/ncurses-5.6.tar.gz
  275. cd ncurses-5.6
  276. patch -Np1 -i $LFS/ncurses-5.6-coverity_fixes-1.patch
  277. ./configure --prefix=/usr --with-shared --without-debug --enable-widec
  278. make
  279. make install
  280. chmod -v 644 /usr/lib/libncurses++w.a
  281. mv -v /usr/lib/libncursesw.so.5* /lib
  282. ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so
  283. for lib in curses ncurses form panel menu ; do \
  284. rm -vf /usr/lib/lib${lib}.so ; \
  285. echo "INPUT(-l${lib}w)" >/usr/lib/lib${lib}.so ; \
  286. ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ; \
  287. done
  288. ln -sfv libncurses++w.a /usr/lib/libncurses++.a
  289. rm -vf /usr/lib/libcursesw.so
  290. echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so
  291. ln -sfv libncurses.so /usr/lib/libcurses.so
  292. ln -sfv libncursesw.a /usr/lib/libcursesw.a
  293. ln -sfv libncurses.a /usr/lib/libcurses.a
  294. cd ..
  295. rm -rf ncurses-5.6


  296. #install Procps-3.2.7

  297. tar xvf $LFS/procps-3.2.7.tar.gz
  298. cd procps-3.2.7
  299. make
  300. make install
  301. cd ..
  302. rm -rf procps-3.2.7


  303. #install Libtool-1.5.24

  304. tar xvf $LFS/libtool-1.5.24.tar.gz
  305. cd libtool-1.5.24
  306. ./configure --prefix=/usr
  307. make

  308. #同理%%%%%
  309. #make check

  310. make install
  311. cd ..
  312. rm -rf libtool-1.5.24


  313. #install Perl-5.8.8

  314. tar xvf $LFS/perl-5.8.8.tar.bz2
  315. cd perl-5.8.8
  316. echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
  317. ./configure.gnu --prefix=/usr \
  318.     -Dman1dir=/usr/share/man/man1 \
  319.     -Dman3dir=/usr/share/man/man3 \
  320.     -Dpager="/usr/bin/less -isR"
  321. make

  322. #同理%%%%%
  323. #make check

  324. make install
  325. cd ..
  326. rm -rf perl-5.8.8


  327. #install Readline-5.2

  328. tar xvf $LFS/readline-5.2.tar.gz
  329. cd readline-5.2
  330. sed -i '/MV.*old/d' Makefile.in
  331. sed -i '/{OLDSUFF}/c:' support/shlib-install
  332. patch -Np1 -i $LFS/readline-5.2-fixes-3.patch
  333. ./configure --prefix=/usr --libdir=/lib
  334. make SHLIB_XLDFLAGS=-lncurses
  335. make install
  336. mv -v /lib/lib{readline,history}.a /usr/lib
  337. rm -v /lib/lib{readline,history}.so
  338. ln -sfv ../../lib/libreadline.so.5 /usr/lib/libreadline.so
  339. ln -sfv ../../lib/libhistory.so.5 /usr/lib/libhistory.so
  340. cd ..
  341. rm -rf readline-5.2


  342. #install Zlib-1.2.3

  343. tar xvf $LFS/zlib-1.2.3.tar.gz
  344. cd zlib-1.2.3
  345. ./configure --prefix=/usr --shared --libdir=/lib
  346. make

  347. #%%%%%
  348. #make check

  349. make install
  350. rm -v /lib/libz.so
  351. ln -sfv ../../lib/libz.so.1.2.3 /usr/lib/libz.so
  352. make clean
  353. ./configure --prefix=/usr
  354. make

  355. #%%%%%
  356. #make check

  357. make install
  358. chmod -v 644 /usr/lib/libz.a
  359. cd ..
  360. rm -rf zlib-1.2.3

  361. #install Autoconf-2.61

  362. tar xvf $LFS/autoconf-2.61.tar.bz2
  363. cd autoconf-2.61
  364. ./configure --prefix=/usr
  365. make


  366. #make check

  367. make install
  368. cd ..
  369. rm -rf autoconf-2.61


  370. #install Automake-1.10

  371. tar xvf $LFS/automake-1.10.tar.bz2
  372. cd automake-1.10
  373. ./configure --prefix=/usr
  374. make


  375. #make check

  376. make install
  377. cd ..
  378. rm -rf automake-1.10



  379. #install Bash-3.2

  380. tar xvf $LFS/bash-3.2.tar.gz
  381. cd bash-3.2
  382. tar -xvf $LFS/bash-doc-3.2.tar.gz &&
  383. sed -i "s|htmldir = @htmldir@|htmldir = /usr/share/doc/bash-3.2|" Makefile.in
  384. patch -Np1 -i $LFS/bash-3.2-fixes-5.patch
  385. ./configure --prefix=/usr --bindir=/bin --without-bash-malloc --with-installed-readline
  386. make
  387. make install
  388. cd ..
  389. rm -rf bash-3.2


  390. # 应用 bash

  391. exec /bin/bash --login +h


  392. #install Bzip2-1.0.4

  393. tar xvf $LFS/bzip2-1.0.4.tar.gz
  394. cd bzip2-1.0.4
  395. patch -Np1 -i $LFS/bzip2-1.0.4-install_docs-1.patch
  396. make -f Makefile-libbz2_so
  397. make clean
  398. make
  399. make PREFIX=/usr install
  400. cp -v bzip2-shared /bin/bzip2
  401. cp -av libbz2.so* /lib
  402. ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
  403. rm -v /usr/bin/{bunzip2,bzcat,bzip2}
  404. ln -sv bzip2 /bin/bunzip2
  405. ln -sv bzip2 /bin/bzcat
  406. cd ..
  407. rm -rf bzip2-1.0.4


  408. # Diffutils-2.8.1

  409. tar xvf $LFS/diffutils-2.8.1.tar.gz
  410. cd diffutils-2.8.1
  411. patch -Np1 -i $LFS/diffutils-2.8.1-i18n-1.patch
  412. touch man/diff.1
  413. ./configure --prefix=/usr
  414. make
  415. make install
  416. cd ..
  417. rm -rf diffutils-2.8.1



  418. #istall File-4.21

  419. tar xvf $LFS/file-4.21.tar.gz
  420. cd file-4.21
  421. ./configure --prefix=/usr
  422. make
  423. make install
  424. cd ..
  425. rm -rf file-4.21



  426. #install Findutils-4.2.31

  427. tar xvf $LFS/findutils-4.2.31.tar.gz
  428. cd findutils-4.2.31
  429. ./configure --prefix=/usr --libexecdir=/usr/lib/findutils --localstatedir=/var/lib/locate
  430. make
  431. #make check

  432. make install
  433. mv -v /usr/bin/find /bin
  434. sed -i -e 's/find:=${BINDIR}/find:=\/bin/' /usr/bin/updatedb
  435. cd ..
  436. rm -rf findutils-4.2.31



  437. #install Flex-2.5.33

  438. tar xvf $LFS/flex-2.5.33.tar.bz2
  439. cd flex-2.5.33
  440. ./configure --prefix=/usr
  441. make


  442. #make check

  443. make install
  444. ln -sv libfl.a /usr/lib/libl.a
  445. cat > /usr/bin/lex << "EOF"
  446. #!/bin/sh
  447. # Begin /usr/bin/lex
  448. exec /usr/bin/flex -l "$@"
  449. # End /usr/bin/lex
  450. EOF
  451. chmod -v 755 /usr/bin/lex
  452. cd ..
  453. rm -rf flex-2.5.33



  454. #install GRUB-0.97

  455. tar xvf $LFS/grub-0.97.tar.gz
  456. cd grub-0.97
  457. patch -Np1 -i $LFS/grub-0.97-disk_geometry-1.patch
  458. ./configure --prefix=/usr
  459. make


  460. #make check

  461. make install
  462. mkdir -v /boot/grub
  463. cp -v /usr/lib/grub/i386-pc/stage{1,2} /boot/grub
  464. #看清楚,你系统文件类型是否是ext3
  465. cp -v /usr/lib/grub/i386-pc/e2fs_stage1_5 /boot/grub
  466. cd ..
  467. rm -rf grub-0.97

  468. #
  469. # Gawk-3.1.5
  470. #
  471. tar xvf $LFS/gawk-3.1.5.tar.bz2
  472. cd gawk-3.1.5
  473. patch -Np1 -i $LFS/gawk-3.1.5-segfault_fix-1.patch
  474. ./configure --prefix=/usr --libexecdir=/usr/lib
  475. cat >> config.h << "EOF"
  476. #define HAVE_LANGINFO_CODESET 1
  477. #define HAVE_LC_MESSAGES 1
  478. EOF
  479. make


  480. #make check

  481. make install
  482. cd ..
  483. rm -rf gawk-3.1.5


  484. #isntall Gettext-0.16.1

  485. tar xvf $LFS/gettext-0.16.1.tar.gz
  486. cd gettext-0.16.1
  487. ./configure --prefix=/usr
  488. make


  489. #make check

  490. make install
  491. cd ..
  492. rm -rf gettext-0.16.1


  493. #install Grep-2.5.1a

  494. tar xvf $LFS/grep-2.5.1a.tar.bz2
  495. cd grep-2.5.1a
  496. patch -Np1 -i $LFS/grep-2.5.1a-redhat_fixes-2.patch
  497. chmod +x tests/fmbtest.sh
  498. ./configure --prefix=/usr --bindir=/bin
  499. make


  500. #make check

  501. make install
  502. cd ..
  503. rm -rf grep-2.5.1a


  504. #install Groff-1.18.1.4

  505. tar xvf $LFS/groff-1.18.1.4.tar.gz
  506. cd groff-1.18.1.4
  507. patch -Np1 -i $LFS/groff-1.18.1.4-debian_fixes-1.patch
  508. sed -i -e 's/2010/002D/' -e 's/2212/002D/' \
  509. -e 's/2018/0060/' -e 's/2019/0027/' font/devutf8/R.proto
  510. PAGE=A4 ./configure --prefix=/usr --enable-multibyte
  511. make
  512. make install
  513. ln -sv eqn /usr/bin/geqn
  514. ln -sv tbl /usr/bin/gtbl
  515. cd ..
  516. rm -rf groff-1.18.1.4


  517. #install Gzip-1.3.12

  518. tar xvf $LFS/gzip-1.3.12.tar.gz
  519. cd gzip-1.3.12
  520. ./configure --prefix=/usr --bindir=/bin
  521. make


  522. #make check

  523. make install
  524. mv -v /bin/{gzexe,uncompress,zcmp,zdiff,zegrep} /usr/bin
  525. mv -v /bin/{zfgrep,zforce,zgrep,zless,zmore,znew} /usr/bin
  526. cd ..
  527. rm -rf gzip-1.3.12


  528. #install Inetutils-1.5

  529. tar xvf $LFS/inetutils-1.5.tar.gz
  530. cd inetutils-1.5
  531. patch -Np1 -i $LFS/inetutils-1.5-no_server_man_pages-2.patch
  532. ./configure --prefix=/usr --libexecdir=/usr/sbin \
  533. --sysconfdir=/etc --localstatedir=/var \
  534. --disable-ifconfig --disable-logger --disable-syslogd \
  535. --disable-whois --disable-servers
  536. make
  537. make install
  538. mv -v /usr/bin/ping /bin
  539. cd ..
  540. rm -rf inetutils-1.5


  541. #install IPRoute2-2.6.20-070313

  542. tar xvf $LFS/iproute2-2.6.20-070313.tar.gz
  543. cd iproute-2.6.20-070313
  544. sed -i -e '/tc-bfifo.8/d' -e '/tc-pfifo.8/s/pbfifo/bfifo/' Makefile
  545. make SBINDIR=/sbin
  546. make SBINDIR=/sbin install
  547. mv -v /sbin/arpd /usr/sbin
  548. cd ..
  549. rm -rf iproute-2.6.20-070313


  550. #install Kbd-1.12

  551. tar xvf $LFS/kbd-1.12.tar.bz2
  552. cd kbd-1.12
  553. patch -Np1 -i $LFS/kbd-1.12-backspace-1.patch
  554. patch -Np1 -i $LFS/kbd-1.12-gcc4_fixes-1.patch
  555. ./configure --datadir=/lib/kbd
  556. make
  557. make install
  558. mv -v /usr/bin/{kbd_mode,openvt,setfont} /bin
  559. cd ..
  560. rm -rf kbd-1.12



  561. #install Less-406

  562. tar xvf $LFS/less-406.tar.gz
  563. cd less-406
  564. ./configure --prefix=/usr --sysconfdir=/etc
  565. make
  566. make install
  567. cd ..
  568. rm -rf less-406


  569. #install Make-3.81

  570. tar xvf $LFS/make-3.81.tar.bz2
  571. cd make-3.81
  572. ./configure --prefix=/usr
  573. make


  574. #make check

  575. make install
  576. cd ..
  577. rm -rf make-3.81

  578. #
  579. #install Man-DB-2.4.4
  580. #
  581. tar xvf $LFS/man-db-2.4.4.tar.gz
  582. cd man-db-2.4.4
  583. mv man/de{_DE.88591,}
  584. mv man/es{_ES.88591,}
  585. mv man/it{_IT.88591,}
  586. sed -i 's,\*_\*,??,' man/Makefile.in
  587. sed -i -e '\%\t/usr/man%d' -e '\%\t/usr/local/man%d' src/man_db.conf.in
  588. cat >> include/manconfig.h.in << "EOF"
  589. #define WEB_BROWSER "exec /usr/bin/lynx"
  590. #define COL "/usr/bin/col"
  591. #define VGRIND "/usr/bin/vgrind"
  592. #define GRAP "/usr/bin/grap"
  593. EOF
  594. patch -Np1 -i $LFS/man-db-2.4.4-fixes-1.patch
  595. ./configure --prefix=/usr --enable-mb-groff --disable-setuid
  596. make
  597. make install

  598. cat >> convert-mans << "EOF"
  599. #!/bin/sh -e
  600. FROM="$1"
  601. TO="$2"
  602. shift ; shift
  603. while [ $# -gt 0 ]
  604. do
  605.    FILE="$1"
  606.    shift
  607.    iconv -f "$FROM" -t "$TO" "$FILE" >.tmp.iconv
  608.    mv .tmp.iconv "$FILE"
  609. done
  610. EOF

  611. install -m755 convert-mans  /usr/bin
  612. cd ..
  613. rm -rf man-db-2.4.4

  614. #
  615. #install Mktemp-1.5
  616. #
  617. tar xvf $LFS/mktemp-1.5.tar.gz
  618. cd mktemp-1.5
  619. patch -Np1 -i $LFS/mktemp-1.5-add_tempfile-3.patch
  620. ./configure --prefix=/usr --with-libc
  621. make
  622. make install
  623. make install-tempfile
  624. cd ..
  625. rm -rf mktemp-1.5

  626. #
  627. #install Module-Init-Tools-3.2.2
  628. #
  629. tar xvf $LFS/module-init-tools-3.2.2.tar.bz2
  630. cd module-init-tools-3.2.2
  631. patch -Np1 -i $LFS/module-init-tools-3.2.2-modprobe-1.patch
  632. ./configure
  633. make check
  634. make distclean
  635. ./configure --prefix=/ --enable-zlib
  636. make
  637. make INSTALL=install install
  638. cd ..
  639. rm -rf module-init-tools-3.2.2

  640. #
  641. #install Patch-2.5.4
  642. #
  643. tar xvf $LFS/patch-2.5.4.tar.gz
  644. cd patch-2.5.4
  645. ./configure --prefix=/usr
  646. make
  647. make install
  648. cd ..
  649. rm -rf patch-2.5.4

  650. #
  651. #install Psmisc-22.5
  652. #
  653. tar xvf $LFS/psmisc-22.5.tar.gz
  654. cd psmisc-22.5
  655. ./configure --prefix=/usr --exec-prefix=""
  656. make
  657. make install
  658. mv -v /bin/pstree* /usr/bin
  659. ln -sv killall /bin/pidof
  660. cd ..
  661. rm -rf psmisc-22.5

  662. #
  663. #install Shadow-4.0.18.1
  664. #
  665. tar xvf $LFS/shadow-4.0.18.1.tar.bz2
  666. cd shadow-4.0.18.1
  667. patch -Np1 -i $LFS/shadow-4.0.18.1-useradd_fix-2.patch
  668. ./configure --libdir=/lib --sysconfdir=/etc --enable-shared --without-selinux
  669. sed -i 's/groups$(EXEEXT) //' src/Makefile
  670. find man -name Makefile -exec sed -i 's/groups\.1 / /' {} \;
  671. sed -i -e 's@#MD5_CRYPT_ENAB.no@MD5_CRYPT_ENAB yes@' \
  672. -e 's@/var/spool/mail@/var/mail@' etc/login.defs
  673. make
  674. make install
  675. mv -v /usr/bin/passwd /bin
  676. mv -v /lib/libshadow.*a /usr/lib
  677. rm -v /lib/libshadow.so
  678. ln -sfv ../../lib/libshadow.so.0 /usr/lib/libshadow.so

  679. # 配置增加用户的默认设置
  680. pwconv
  681. grpconv
  682. useradd -D -b /home
  683. sed -i 's/yes/no/' /etc/default/useradd

  684. # 修改root用户密码
  685. passwd root

  686. cd ..
  687. rm -rf shadow-4.0.18.1

  688. #
  689. #install Sysklogd-1.4.1
  690. #
  691. tar xvf $LFS/sysklogd-1.4.1.tar.gz
  692. cd sysklogd-1.4.1
  693. patch -Np1 -i $LFS/sysklogd-1.4.1-fixes-2.patch
  694. patch -Np1 -i $LFS/sysklogd-1.4.1-8bit-1.patch
  695. make
  696. make install

  697. cat > /etc/syslog.conf << "EOF"
  698. # Begin /etc/syslog.conf
  699. auth,authpriv.* -/var/log/auth.log
  700. *.*;auth,authpriv.none -/var/log/sys.log
  701. daemon.* -/var/log/daemon.log
  702. kern.* -/var/log/kern.log
  703. mail.* -/var/log/mail.log
  704. user.* -/var/log/user.log
  705. *.emerg *
  706. # End /etc/syslog.conf
  707. EOF

  708. cd ..
  709. rm -rf sysklogd-1.4.1


  710. #install Sysvinit-2.86

  711. tar xvf $LFS/sysvinit-2.86.tar.gz
  712. cd sysvinit-2.86
  713. sed -i 's@Sending processes@& configured via /etc/inittab@g' src/init.c
  714. make -C src
  715. make -C src install

  716. cat > /etc/inittab << "EOF"   #这文件应该很熟悉吧
  717. # Begin /etc/inittab
  718. id:3:initdefault:
  719. si::sysinit:/etc/rc.d/init.d/rc sysinit
  720. l0:0:wait:/etc/rc.d/init.d/rc 0
  721. l1:S1:wait:/etc/rc.d/init.d/rc 1
  722. l2:2:wait:/etc/rc.d/init.d/rc 2
  723. l3:3:wait:/etc/rc.d/init.d/rc 3
  724. l4:4:wait:/etc/rc.d/init.d/rc 4
  725. l5:5:wait:/etc/rc.d/init.d/rc 5
  726. l6:6:wait:/etc/rc.d/init.d/rc 6
  727. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
  728. su:S016:once:/sbin/sulogin
  729. 1:2345:respawn:/sbin/agetty tty1 9600
  730. 2:2345:respawn:/sbin/agetty tty2 9600
  731. 3:2345:respawn:/sbin/agetty tty3 9600
  732. 4:2345:respawn:/sbin/agetty tty4 9600
  733. 5:2345:respawn:/sbin/agetty tty5 9600
  734. 6:2345:respawn:/sbin/agetty tty6 9600
  735. # End /etc/inittab
  736. EOF

  737. cd ..
  738. rm -rf sysvinit-2.86


  739. #install Tar-1.18

  740. tar xvf $LFS/tar-1.18.tar.bz2
  741. cd tar-1.18
  742. ./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin
  743. make


  744. #make check

  745. make install
  746. cd ..
  747. rm -rf tar-1.18



  748. #install Texinfo-4.9

  749. tar xvf $LFS/texinfo-4.9.tar.bz2
  750. cd texinfo-4.9
  751. patch -Np1 -i $LFS/texinfo-4.9-multibyte-1.patch
  752. patch -Np1 -i $LFS/texinfo-4.9-tempfile_fix-1.patch
  753. ./configure --prefix=/usr
  754. make


  755. #make check

  756. make install
  757. make TEXMF=/usr/share/texmf install-tex

  758. cd /usr/share/info
  759. rm dir
  760. for f in *
  761. do install-info $f dir 2>/dev/null
  762. done

  763. cd /sources
  764. rm -rf texinfo-4.9

  765. #
  766. #install Udev-113
  767. #
  768. tar xvf $LFS/udev-113.tar.bz2
  769. cd udev-113
  770. tar -xvf $LFS/udev-config-6.3.tar.bz2
  771. install -dv /lib/{firmware,udev/devices/{pts,shm}}
  772. mknod -m0666 /lib/udev/devices/null c 1 3
  773. ln -sv /proc/self/fd /lib/udev/devices/fd
  774. ln -sv /proc/self/fd/0 /lib/udev/devices/stdin
  775. ln -sv /proc/self/fd/1 /lib/udev/devices/stdout
  776. ln -sv /proc/self/fd/2 /lib/udev/devices/stderr
  777. ln -sv /proc/kcore /lib/udev/devices/core
  778. make EXTRAS="`echo extras/*/`"


  779. #make test

  780. make DESTDIR=/ EXTRAS="`echo extras/*/`" install
  781. cp -v etc/udev/rules.d/[0-9]* /etc/udev/rules.d/
  782. cd udev-config-6.3
  783. make install
  784. make install-doc
  785. make install-extra-doc
  786. cd ..
  787. install -m644 -v docs/writing_udev_rules/index.html \
  788. /usr/share/doc/udev-113/index.html
  789. cd ..
  790. rm -rf udev-113

  791. #
  792. #install Util-linux-2.12r
  793. #
  794. tar xvf $LFS/util-linux-2.12r.tar.bz2
  795. cd util-linux-2.12r
  796. sed -e 's@etc/adjtime@var/lib/hwclock/adjtime@g' \
  797. -i $(grep -rl '/etc/adjtime' .)
  798. mkdir -pv /var/lib/hwclock
  799. patch -Np1 -i $LFS/util-linux-2.12r-cramfs-1.patch
  800. patch -Np1 -i $LFS/util-linux-2.12r-lseek-1.patch
  801. ./configure
  802. make HAVE_KILL=yes HAVE_SLN=yes
  803. make HAVE_KILL=yes HAVE_SLN=yes install
  804. cd ..
  805. rm -rf util-linux-2.12r

  806. #
  807. #install Vim-7.1
  808. #
  809. tar xvf $LFS/vim-7.1.tar.bz2
  810. tar xvf $LFS/vim-7.1-lang.tar.gz
  811. cd vim71
  812. patch -Np1 -i $LFS/vim-7.1-fixes-1.patch
  813. patch -Np1 -i $LFS/vim-7.1-mandir-1.patch
  814. echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
  815. ./configure --prefix=/usr --enable-multibyte
  816. make


  817. #make test

  818. make install
  819. ln -sv vim /usr/bin/vi
  820. for L in "" fr it pl ru; do
  821. ln -sv vim.1 /usr/share/man/$L/man1/vi.1
  822. done
  823. ln -sv ../vim/vim71/doc /usr/share/doc/vim-7.1

  824. cat > /etc/vimrc << "EOF"
  825. " Begin /etc/vimrc
  826. set nocompatible
  827. set backspace=2
  828. syntax on
  829. if (&term == "iterm") || (&term == "putty")
  830. set background=dark
  831. endif
  832. " End /etc/vimrc
  833. EOF

  834. cd ..
  835. rm -rf vim71

  836. # 退出choroot
  837. logout

  838. # 为Strip而进入chroot环境
  839. chroot $LFS /tools/bin/env -i \
  840. HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
  841. PATH=/bin:/usr/bin:/sbin:/usr/sbin \
  842. /tools/bin/bash --login

  843. /tools/bin/find /{,usr/}{bin,lib,sbin} -type f \
  844. -exec /tools/bin/strip --strip-debug '{}' ';'

  845. # 退出chroot环境
  846. logout

  847. # 为最后的设置进入chroot环境
  848. chroot "$LFS" /usr/bin/env -i \
  849. HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
  850. PATH=/bin:/usr/bin:/sbin:/usr/sbin \
  851. /bin/bash --login
  852. cd /sources
  853. export LFS=/sources

  854. #
  855. #install  LFS-Bootscripts-6.3
  856. #
  857. tar xvf $LFS/lfs-bootscripts-6.3.tar.bz2
  858. cd lfs-bootscripts-6.3
  859. make install
  860. cd ..
  861. rm -rf lfs-bootscripts-6.3

  862. #
  863. # 时间设置(Configuring the setclock Script)
  864. #
  865. cat > /etc/sysconfig/clock << "EOF"
  866. # Begin /etc/sysconfig/clock
  867. UTC=1
  868. # End /etc/sysconfig/clock
  869. EOF

  870. #
  871. # 设置bash下的键盘功能键设置
  872. #
  873. cat > /etc/inputrc << "EOF"
  874. set horizontal-scroll-mode Off
  875. set meta-flag On
  876. set input-meta On
  877. set convert-meta Off
  878. set output-meta On
  879. set bell-style none
  880. "\eOd": backward-word
  881. "\eOc": forward-word
  882. "\e[1~": beginning-of-line
  883. "\e[4~": end-of-line
  884. "\e[5~": beginning-of-history
  885. "\e[6~": end-of-history
  886. "\e[3~": delete-char
  887. "\e[2~": quoted-insert
  888. "\eOH": beginning-of-line
  889. "\eOF": end-of-line
  890. "\e[H": beginning-of-line
  891. "\e[F": end-of-line
  892. EOF

  893. #
  894. # 设置Bash Shell启动文件(The Bash Shell Startup Files)
  895. #
  896. cat > /etc/profile << "EOF"
  897. # Begin /etc/profile
  898. export LANG=zh_CN.UTF-8
  899. export INPUTRC=/etc/inputrc
  900. alias ls="ls --color"
  901. export PS1='\u:\w\$ '
  902. # End /etc/profile
  903. EOF

  904. #
  905. # 设置本地网络名
  906. echo "HOSTNAME=linux" > /etc/sysconfig/network

  907. #
  908. # 设置hosts文件
  909. #
  910. #
  911. cat > /etc/hosts << "EOF"
  912. # Begin /etc/hosts (no network card version)
  913. 127.0.0.1 linux localhost
  914. # End /etc/hosts (no network card version)
  915. EOF

  916. #
  917. # 设置网络的静态地址
  918. #
  919. cd /etc/sysconfig/network-devices
  920. mkdir -v ifconfig.eth0
  921. cat > ifconfig.eth0/ipv4 << "EOF"
  922. ONBOOT=yes
  923. SERVICE=ipv4-static
  924. IP=192.168.0.5
  925. GATEWAY=192.168.0.1
  926. PREFIX=24
  927. BROADCAST=192.168.0.255
  928. EOF


  929. #
  930. # 设置DNS
  931. #
  932. cat > /etc/resolv.conf << "EOF"
  933. # Begin /etc/resolv.conf
  934. nameserver 8.8.8.8
  935. nameserver 8.8.4.4
  936. # End /etc/resolv.conf
  937. EOF

  938. #
  939. # 建立fstab文件 注意:这里的磁盘名以及文件系统名需要根据实际情况修改。

  940. cat > /etc/fstab << "EOF"
  941. # Begin /etc/fstab
  942. # file system  mount-point  type   options         dump  fsck
  943. #                                                        order
  944. /dev/sda2       /            ext3  defaults        1     1
  945. /dev/sda1       swap         swap   pri=1           0     0
  946. proc              /proc        proc   defaults        0     0
  947. sysfs             /sys         sysfs  defaults        0     0
  948. devpts          /dev/pts     devpts gid=4,mode=620  0     0
  949. shm              /dev/shm     tmpfs  defaults        0     0
  950. # End /etc/fstab
  951. EOF

  952. #
  953. # 安装内核Linux-2.6.22.5
  954. #
  955. cd /sources
  956. tar xvf $LFS/linux-2.6.22.5.tar.bz2
  957. cd linux-2.6.22.5

  958. #安装显示UTF-8编码文字的补丁
  959. #如果之前下载了UTF-8编码文字显示补丁,那么这里可以将这两个补丁打入内核
  960. patch -Np1 -i $LFS/utf8-kernel-2.6.22.5-core-1.patch
  961. patch -Np1 -i $LFS/utf8-kernel-2.6.22.5-fonts-1.patch

  962. #安装
  963. make mrproper
  964. #这里需要配置内核
  965. make menuconfig





0

coffee

赞同来自:

本帖最后由 coffee 于 2014-11-5 20:39 编辑

  1. 内核配置
  1. 支持SATA硬盘,驱动程序在Device Driver-->SCSI device support-->SCSI low-level drivers
  2. 支持网络则应该在Device Drivers->Networking support->Ethernet (10 or 100Mbit)加入AMD PCnet32 PCI support
  3. 支持声卡则应该在Device Drivers->Sound->Advanced Linux Sound Architecture->PCI devices加入(Creative) Ensoniq AudioPCI 1371/1373
  4. 如果之前给内核加入了显示UTF-8编码文字的补丁的话,那么这里需要加入framebuffer的支持才能使补丁生效,在Device Drivers->Graphics support中加入Support for frame buffer devices,并选择上VESA VGA graphics supports,这里将其编译到内核中
  5. 同时还需要加入framebuffer字体支持,在Device Drivers->Graphics support->Console display driver support中加入Framebuffer Console support并选择上Select compiled-in fonts,选上VGA 8x16 font这一种字体就可以了,这里将这些选择都编译到内核中




0

coffee

赞同来自:

本帖最后由 coffee 于 2014-11-5 20:46 编辑
  1. make
  2. make modules_install
  3. cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.22.5
  4. cp -v System.map /boot/System.map-2.6.22.5
  5. cp -v .config /boot/config-2.6.22.5
  6. install -d /usr/share/doc/linux-2.6.22.5
  7. cp -r Documentation/* /usr/share/doc/linux-2.6.22.5

  8. #install Grub
  9. grub
  10. root (hd0,1)
  11. setup (hd0)
  12. quit


  13. # 配置grub 菜单

  14. cat > /boot/grub/menu.lst << "EOF"
  15. # Begin /boot/grub/menu.lst
  16. # By default boot the first menu entry.
  17. default 0
  18. # Allow 30 seconds before booting the default.
  19. timeout 30
  20. # Use prettier colors.
  21. color green/black light-green/black
  22. # The first entry is for LFS.
  23. title LFS 6.3
  24. root (hd0,1)
  25. kernel /boot/lfskernel-2.6.22.5 root=/dev/sda2 vga=788
  26. EOF

  27. mkdir -v /etc/grub
  28. ln -sv /boot/grub/menu.lst /etc/grub


  29. logout #退出


  30. reboot #重启



0

coffee

赞同来自:

本帖最后由 coffee 于 2014-11-5 20:59 编辑

如图。。。。。
0

阿铭 管理员

赞同来自:

很棒的分享教程。
0

寻@轨迹

赞同来自:

真是好长啊
0

sunxueyong

赞同来自:

你好,我想问一下,如果不使用Livecd,比如制作6.3版本以上的。如何为lfs的包选择合适的宿主机系统呀?容易找到宿主机系统吗?
0

coffee

赞同来自:

sunxueyong 发表于 2015-3-23 19:45
你好,我想问一下,如果不使用Livecd,比如制作6.3版本以上的。如何为lfs的包选择合适的宿主机系统呀?容易 ...

宿主机只是提供一个编译环境,可以根据个人喜好用 Ubuntu fedora 如果你愿意centos也行。
0

sunxueyong

赞同来自:

coffee 发表于 2015-3-24 13:37
宿主机只是提供一个编译环境,可以根据个人喜好用 Ubuntu fedora 如果你愿意centos也行。

嗯,谢谢,我再试试

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: