• Like
Bypat博客出品-手把手教你如何建立自己的linux系统lfs速成手册
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Bypat博客出品-手把手教你如何建立自己的linux系统lfs速成手册

  • 513 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
513
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Linux LFS2006 9 11 tar xvf2006 9 112006 8 112006-03-272006-03-252006-03-242006-03-20 linux-Lib-Headers-2.6.11.2 linux-lib-headers-2.6.11.22006-03-172006-03-14LFS LFS Linux LFS VMWare Workstation 5.0 WMWare VMWare VMWare LFS LFS www.linuxsir.org LFS Bloglinuxsir http://www.linuxsir.org/bbs/showthread.php?t=244052 Blog http://youbest.cublog.cn youbest LiveCD ISO ( 6.1.1-3 ) http://ftp.osuosl.org/pub/lfs-livecd...86-6.1.1-3.iso ISO VMWare ISO VMWare Workstation 5.0 File->New->Virtual Machine... Custom Guest operating system Linux Version Other Linux 128M 256M 128M GCC3.x GCC4.0.x swap 256M swapNetwork connection Use network address translation(NAT)SCSI Adpters Buslogic Create a new virtual disk Virtual Disk Type IDE SCSI
  • 2. SCSI B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m IDE SCSI SCSI Adpters Buslogic Buslogic 4G LFS BLFS Edit virtual machine settings CD-ROM Use ISO image LiveCD ISO Start this virtual machine LiveCD Asia/Shanghai LiveCD LFS LiveCD/usr/share/LFS-BOOK-6.1.1-HTML LFS/lfs-sources LFS cfdisk 512M/dev/sda1 swap/dev/sda2
  • 3. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m mkswap /dev/sda1 mkfs.xfs /dev/sda2mkswap /dev/sda2 Xfs VMWare VMWareswapon /dev/sda1swaponswapoff free LFS “ ” export LFS=/mnt/lfs mkdir -pv $LFSexport LFS=/mnt/lfs “ ” LFS
  • 4. /dev/sda2 “ B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« ” h t t p : / / b l o g . b y p a t . c o m mount /dev/sda2 $LFS mkdir -v $LFS/sources chmod -v a+wt $LFS/sourceschmod a+wt 777 mkdir -v $LFS/tools ln -sv $LFS/tools / /tools lfs groupadd lfs useradd -s /bin/bash -g lfs -m -k /dev/null lfs lfs passwd lfs tools sources lfs lfs chown -v lfs $LFS/tools chown -v lfs $LFS/sources lfs su - lfs # $ lfs root root LFS lfs lfs cat > ~/.bash_profile << "EOF"
  • 5. exec env -i HOME=$HOME TERM=$TERM PS1=u:w$ /bin/bash B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m EOF cat > ~/.bashrc << "EOF" set +h umask 022 LFS=/mnt/lfs LC_ALL=POSIX PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL PATH EOF source ~/.bash profile bash lfs PATH /tools/bin /bin /usr/bin /bin /usr/bin /tools/bin LFS Stripping1. LiveCD VMWare F2 BIOS BOOT CD-ROM
  • 6. 2. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mexport LFS=/mnt/lfsmkdir -pv $LFSmount /dev/sda2 $LFS3.swapon /dev/sda14.ln -sv $LFS/tools /5. lfsgroupadd lfsuseradd -s /bin/bash -g lfs -m -k /dev/null lfspasswd lfschown -v lfs $LFS/toolschown -v lfs $LFS/sourcessu - lfs6. lfscat > ~/.bash_profile << "EOF"exec env -i HOME=$HOME TERM=$TERM PS1=u:w$ /bin/bashEOFcat > ~/.bashrc << "EOF"set +humask 022LFS=/mnt/lfsLC_ALL=POSIXPATH=/tools/bin:/bin:/usr/binexport LFS LC_ALL PATHEOFsource ~/.bash_profile7.exportdeclare -x HOME="/home/lfs"declare -x LC_ALL="POSIX"declare -x LFS="/mnt/lfs"declare -x OLDPWDdeclare -x PATH="/tools/bin:/bin:/usr/bin"declare -x PS1="u:w$ "declare -x PWD="/home/lfs"declare -x SHLVL="1"declare -x TERM="linux"8.cd $LFS/sources LFS cd $LFS/sourcesBinutils-2.15.94.0.2.2 - Pass 1 tar xvf /lfs-sources/binutils-2.15.94.0.2.2.tar.bz2
  • 7. cd binutils-2.15.94.0.2.2 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m tar xvf bz2 gz tar tar bz2 j gz z binutils tar xvjf /lfs-sources/binutils-2.15.94.0.2.2.tar.bz2 LFS LiveCD tar tar tar xvf GCC4 GCC4 LFS-6.1.1-3 LiveCD GCC 3.4.3 patch -Np1 -i /lfs-sources/binutils-2.15.94.0.2.2-gcc4-1.patch binutils mkdir -v ../binutils-build cd ../binutils-build ../binutils-2.15.94.0.2.2/configure --prefix=/tools --disable-nls make make install make -C ld clean make -C ld LIB_PATH=/tools/lib cd .. binutils-build binutils-build binutils binutils-2.16.1 binutils-2.15.94.0.2.2GCC-3.4.3 - Pass 1 tar xvf /lfs-sources/gcc-3.4.3.tar.bz2 mkdir -v gcc-build cd gcc-build ../gcc-3.4.3/configure --prefix=/tools --libexecdir=/tools/lib --with-local-prefix=/tools --disable-nls --enable-shared --enable-languages=c make bootstrap make install ln -vs gcc /tools/bin/cc cd .. rm -rf gcc-build rm -rf gcc-3.4.3 gcc-3.4.3
  • 8. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m gcc-3.4.4 gcc-3.4.5 gcc-3.4.3 GCC4.0.x gcc-3.4.x GCC4.0.x LFSLinux-Libc-Headers-2.6.11.2 tar xvf /lfs-sources/linux-libc-headers-2.6.11.2.tar.bz2 cd linux-libc-headers-2.6.11.2 cp -Rv include/asm-i386 /tools/include/asm cp -Rv include/linux /tools/include cd .. rm -rf linux-libc-headers-2.6.11.2Glibc-2.3.4 tar xvf /lfs-sources/glibc-2.3.4.tar.bz2 cd glibc-2.3.4 patch -Np1 -i /lfs-sources/glibc-2.3.4-fix_test-1.patch mkdir -v ../glibc-build cd ../glibc-build ../glibc-2.3.4/configure --prefix=/tools --disable-profile --enable-add-ons --enable-kernel=2.6.0 --with-binutils=/tools/bin --without-gd --with-headers=/tools/include --without-selinux make mkdir -v /tools/etc touch /tools/etc/ld.so.conf make install make localedata/install-locales cd .. rm -rf glibc-build rm -rf glibc-2.3.4glibc-2.3.4 GCC4 gcc-3.4.x glibc-2.3.6 GCC4 --enable-kernel=2.6.0 kernel kernel linux-2.6.15 2.6.0make localedata/install-locales locale locale localedef LFS localemkdir -pv /tools/lib/localelocaledef -i zh_CN -f GB18030 zh_CNlocaledef -i zh_CN -f GBK zh_CNlocaledef -i zh_CN -f UTF-8 zh_CNlocaledef -i zh_CN -f GB2312 zh_CNlocaledef -i zh_HK -f UTF-8 zh_CNlocaledef -i zh_HK -f BIG5-HKSCS zh_CNlocaledef -i zh_TW -f EUC-TW zh_CN
  • 9. localedef -i zh_TW -f UTF-8 zh_CN B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mlocaledef -i zh_TW -f BIG5 zh_CN cd binutils-build make -C ld install cd .. rm -rf binutils-build rm -rf binutils-2.15.94.0.2.2 SPECFILE=$(gcc --print-file specs) && sed s@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g $SPECFILE > tempspecfile && mv -f tempspecfile $SPECFILE && unset SPECFILE rm -vf /tools/lib/gcc/*/*/include/{pthread.h,bits/sigthread.h} binutils-build make -C ld install GCC specs specs /lib/ld-linux.so.2 /tools/lib/ld-linux.so.2 LFS specs GCC4.0.x specs specs GCC4.0.1 LFSecho main(){} > dummy.ccc dummy.creadelf -l a.out | grep : /tools[Requesting program interpreter: /tools/lib/ld-linux.so.2] /tools/librm -rf a.out dummy.c 3 make check 3Tcl-8.4.9 Expect-5.43.0 DejaGNU-1.4.4 tar xvf /lfs-sources/tcl8.4.9-src.tar.bz2 cd tcl8.4.9/unix ./configure --prefix=/tools make make install cd .. export TCLPATH=$(pwd) ln -sv tclsh8.4 /tools/bin/tclsh cd .. tar xvf /lfs-sources/expect-5.43.0.tar.bz2 cd expect-5.43 patch -Np1 -i /lfs-sources/expect-5.43.0-spawn-1.patch ./configure --prefix=/tools --with-tcl=/tools/lib --with-tclinclude=$TCLPATH --with- x=no make make SCRIPTS="" install unset TCLPATH
  • 10. cd .. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m tar xvf /lfs-sources/dejagnu-1.4.4.tar.bz2 cd dejagnu-1.4.4 ./configure --prefix=/tools make install cd .. rm -rf tcl8.4.9 rm -rf expect-5.43GCC-3.4.3 - Pass 2 tar xvf /lfs-sources/gcc-3.4.3.tar.bz2 cd gcc-3.4.3 patch -Np1 -i /lfs-sources/gcc-3.4.3-no_fixincludes-1.patch patch -Np1 -i /lfs-sources/gcc-3.4.3-specs-2.patch mkdir -v ../gcc-build cd ../gcc-build ../gcc-3.4.3/configure --prefix=/tools --libexecdir=/tools/lib --with-local-prefix=/tools --enable-clocale=gnu --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-languages=c,c++ --disable-libstdcxx-pch make make install cd .. rm -rf gcc-build rm -rf gcc-3.4.3Binutils-2.15.94.0.2.2 - Pass 2 tar xvf /lfs-sources/binutils-2.15.94.0.2.2.tar.bz2 mkdir -v binutils-build cd binutils-build ../binutils-2.15.94.0.2.2/configure --prefix=/tools --disable-nls --enable-shared --with-lib-path=/tools/lib make make install make -C ld clean make -C ld LIB_PATH=/usr/lib:/lib cd .. binutils-buildGawk-3.1.4 tar xvf /lfs-sources/gawk-3.1.4.tar.bz2 cd gawk-3.1.4 ./configure --prefix=/tools make make install
  • 11. cd .. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m rm -rf gawk-3.1.4Coreutils-5.2.1 tar xvf /lfs-sources/coreutils-5.2.1.tar.bz2 cd coreutils-5.2.1 DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/tools make make install cd .. rm -rf coreutils-5.2.1Bzip2-1.0.3 tar xvf /lfs-sources/bzip2-1.0.3.tar.bz2 cd bzip2-1.0.3 make make PREFIX=/tools install cd .. rm -rf bzip2-1.0.3Gzip-1.3.5 tar xvf /lfs-sources/gzip-1.3.5.tar.bz2 cd gzip-1.3.5 ./configure --prefix=/tools make make install cd .. rm -rf gzip-1.3.5Diffutils-2.8.1 tar xvf /lfs-sources/diffutils-2.8.1.tar.bz2 cd diffutils-2.8.1 ./configure --prefix=/tools make make install cd .. rm -rf diffutils-2.8.1Findutils-4.2.23
  • 12. tar xvf /lfs-sources/findutils-4.2.23.tar.bz2 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m cd findutils-4.2.23 ./configure --prefix=/tools make make install cd .. rm -rf findutils-4.2.23Make-3.80 tar xvf /lfs-sources/make-3.80.tar.bz2 cd make-3.80 ./configure --prefix=/tools make make install cd .. rm -rf make-3.80Grep-2.5.1a tar xvf /lfs-sources/grep-2.5.1a.tar.bz2 cd grep-2.5.1a ./configure --prefix=/tools --disable-perl-regexp make make install cd .. rm -rf grep-2.5.1aSed-4.1.4 tar xvf /lfs-sources/sed-4.1.4.tar.bz2 cd sed-4.1.4 ./configure --prefix=/tools make make install cd .. rm -rf sed-4.1.4Gettext-0.14.3 tar xvf /lfs-sources/gettext-0.14.3.tar.bz2 cd gettext-0.14.3 ./configure --prefix=/tools --disable-libasprintf --without-csharp make make install
  • 13. cd .. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m rm -rf gettext-0.14.3Ncurses-5.4 tar xvf /lfs-sources/ncurses-5.4.tar.bz2 cd ncurses-5.4 ./configure --prefix=/tools --with-shared --without-debug --without-ada --enable- overwrite make make install cd .. rm -rf ncurses-5.4Patch-2.5.4 tar xvf /lfs-sources/patch-2.5.4.tar.bz2 cd patch-2.5.4 CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/tools make make install cd .. rm -rf patch-2.5.4Tar-1.15.1 tar xvf /lfs-sources/tar-1.15.1.tar.bz2 cd tar-1.15.1 ./configure --prefix=/tools make make install cd .. rm -rf tar-1.15.1Texinfo-4.8 tar xvf /lfs-sources/texinfo-4.8.tar.bz2 cd texinfo-4.8 ./configure --prefix=/tools make make install cd .. rm -rf texinfo-4.8
  • 14. Bash-3.0 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m tar xvf /lfs-sources/bash-3.0.tar.bz2 cd bash-3.0 patch -Np1 -i /lfs-sources/bash-3.0-avoid_WCONTINUED-1.patch ./configure --prefix=/tools --without-bash-malloc make make install ln -vs bash /tools/bin/sh cd .. rm -rf bash-3.0M4-1.4.3 tar xvf /lfs-sources/m4-1.4.3.tar.bz2 cd m4-1.4.3 ./configure --prefix=/tools make make install cd .. rm -rf m4-1.4.3Bison-2.0 tar xvf /lfs-sources/bison-2.0.tar.bz2 cd bison-2.0 ./configure --prefix=/tools make make install cd .. rm -rf bison-2.0Flex-2.5.31 tar xvf /lfs-sources/flex-2.5.31.tar.bz2 cd flex-2.5.31 patch -Np1 -i /lfs-sources/flex-2.5.31-debian_fixes-3.patch touch doc/flex.1 ./configure --prefix=/tools make make install cd .. rm -rf flex-2.5.31Util-linux-2.12q
  • 15. tar xvf /lfs-sources/util-linux-2.12q.tar.bz2 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m cd util-linux-2.12q sed -i s@/usr/include@/tools/include@g configure ./configure make -C lib make -C mount mount umount make -C text-utils more cp mount/{,u}mount text-utils/more /tools/bin cd .. rm -rf util-linux-2.12q util-linux-2.12q GCC4 cfdisk util-linux-2.12rPerl-5.8.7 tar xvf /lfs-sources/perl-5.8.7.tar.bz2 cd perl-5.8.7 patch -Np1 -i /lfs-sources/perl-5.8.7-libc-1.patch ./configure.gnu --prefix=/tools -Dstatic_ext=IO Fcntl POSIX make perl utilities cp -v perl pod/pod2man /tools/bin mkdir -pv /tools/lib/perl5/5.8.7 cp -Rv lib/* /tools/lib/perl5/5.8.7 cd .. rm -rf perl-5.8.7Stripping /tools strip Strip strip --strip-debug /tools/lib/* strip --strip-unneeded /tools/{,s}bin/*info manrm -rf /tools/{info,man} lfs exit root #
  • 16. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m mkdir -pv $LFS/{proc,sys}1. LiveCD2.export LFS=/mnt/lfsmkdir -pv $LFSmount /dev/sda2 $LFS3.swapon /dev/sda1 tools mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sysLFS mount -vft tmpfs tmpfs $LFS/dev mount -vft tmpfs tmpfs $LFS/dev/shm mount -vft devpts -o gid=4,mode=620 devpts $LFS/dev/ptsmountmkdir $LFS/cdrommount /dev/cdrom $LFS/cdrom lfs-sources $LFS/sources cp -a /lfs-sources/* $LFS/sourcesChroot 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
  • 17. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m1. LiveCD2.export LFS=/mnt/lfsmkdir -pv $LFSmount /dev/sda2 $LFS3.swapon /dev/sda14.mount -vt proc proc $LFS/procmount -vt sysfs sysfs $LFS/sys5.Chrootchroot "$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 lfs root 0 root chown -R 0:0 /tools install -dv /{bin,boot,dev,etc/opt,home,lib,mnt} install -dv /{sbin,srv,usr/local,var,opt} install -dv /root -m 0750 install -dv /tmp /var/tmp -m 1777 install -dv /media/{floppy,cdrom} install -dv /usr/{bin,include,lib,sbin,share,src} ln -sv share/{man,doc,info} /usr install -dv /usr/share/{doc,info,locale,man} install -dv /usr/share/{misc,terminfo,zoneinfo} install -dv /usr/share/man/man{1,2,3,4,5,6,7,8} install -dv /usr/local/{bin,etc,include,lib,sbin,share,src} ln -sv share/{man,doc,info} /usr/local install -dv /usr/local/share/{doc,info,locale,man} install -dv /usr/local/share/{misc,terminfo,zoneinfo} install -dv /usr/local/share/man/man{1,2,3,4,5,6,7,8} install -dv /var/{lock,log,mail,run,spool} install -dv /var/{opt,cache,lib/{misc,locate},local} install -dv /opt/{bin,doc,include,info} install -dv /opt/{lib,man/man{1,2,3,4,5,6,7,8}} ln -sv /tools/bin/{bash,cat,pwd,stty} /bin
  • 18. ln -sv /tools/bin/perl /usr/bin B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mln -sv /tools/lib/libgcc_s.so{,.1} /usr/libln -sv bash /bin/shrootcat > /etc/passwd << "EOF"root:x:0:0:root:/root:/bin/bashEOFcat > /etc/group << "EOF"root:x:0:bin:x:1:sys:x:2:kmem:x:3:tty:x:4:tape:x:5:daemon:x:6:floppy:x:7:disk:x:8:lp:x:9:dialout:x:10:audio:x:11:video:x:12:utmp:x:13:usb:x:14:cdrom:x:15:EOF bash root “I have no name!”exec /tools/bin/bash --login +htouch /var/run/utmp /var/log/{btmp,lastlog,wtmp}chgrp -v utmp /var/run/utmp /var/log/lastlogchmod -v 664 /var/run/utmp /var/log/lastlog
  • 19. mknod -m 600 /dev/console c 5 1 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m mknod -m 666 /dev/null c 1 3 /dev mount -nvt tmpfs none /dev mknod -m 622 /dev/console c 5 1 mknod -m 666 /dev/null c 1 3 mknod -m 666 /dev/zero c 1 5 mknod -m 666 /dev/ptmx c 5 2 mknod -m 666 /dev/tty c 5 0 mknod -m 444 /dev/random c 1 8 mknod -m 444 /dev/urandom c 1 9 chown -v root:tty /dev/{console,ptmx,tty} ln -sv /proc/self/fd /dev/fd ln -sv /proc/self/fd/0 /dev/stdin ln -sv /proc/self/fd/1 /dev/stdout ln -sv /proc/self/fd/2 /dev/stderr ln -sv /proc/kcore /dev/core mkdir -v /dev/pts mkdir -v /dev/shm mount -vt devpts -o gid=4,mode=620 none /dev/pts mount -vt tmpfs none /dev/shm cd /sources LFS /cdrom /cdrom/lfs-sources sourcesexport LFS=/cdrom/lfs-sources sources export LFS=/sources File-4.13 Bash-3.01. LiveCD2.
  • 20. export LFS=/mnt/lfs B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mmkdir -pv $LFSmount /dev/sda2 $LFS3.swapon /dev/sda14.mount -vt proc proc $LFS/procmount -vt sysfs sysfs $LFS/sys5.Chrootchroot "$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 +h6. /devmount -nvt tmpfs none /devmknod -m 622 /dev/console c 5 1mknod -m 666 /dev/null c 1 3mknod -m 666 /dev/zero c 1 5mknod -m 666 /dev/ptmx c 5 2mknod -m 666 /dev/tty c 5 0mknod -m 444 /dev/random c 1 8mknod -m 444 /dev/urandom c 1 9chown -v root:tty /dev/{console,ptmx,tty}ln -sv /proc/self/fd /dev/fdln -sv /proc/self/fd/0 /dev/stdinln -sv /proc/self/fd/1 /dev/stdoutln -sv /proc/self/fd/2 /dev/stderrln -sv /proc/kcore /dev/coremkdir -v /dev/ptsmkdir -v /dev/shmmount -vt devpts -o gid=4,mode=620 none /dev/ptsmount -vt tmpfs none /dev/shm6.cd /sourcesexport LFS=/sourcesLinux-Libc-Headers-2.6.11.2 tar xvf $LFS/linux-libc-headers-2.6.11.2.tar.bz2 cd linux-libc-headers-2.6.11.2 cp -Rv include/asm-i386 /usr/include/asm cp -Rv include/linux /usr/include chown -Rv root:root /usr/include/{asm,linux} find /usr/include/{asm,linux} -type d -exec chmod -v 755 {} ; find /usr/include/{asm,linux} -type f -exec chmod -v 644 {} ; cd .. rm -rf linux-libc-headers-2.6.11.2Man-pages-2.01 tar xvf $LFS/man-pages-2.01.tar.bz2 cd man-pages-2.01
  • 21. make install B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m cd .. rm -rf man-pages-2.01man-pages 2.01Glibc-2.3.4 glibc-2.3.4 glibc-build tar xvf $LFS/glibc-2.3.4.tar.bz2 cd glibc-2.3.4 tar -xjvf $LFS/glibc-linuxthreads-2.3.4.tar.bz2 patch -Np1 -i $LFS/glibc-2.3.4-rtld_search_dirs-1.patch patch -Np1 -i $LFS/glibc-2.3.4-fix_test-1.patch patch -Np1 -i $LFS/glibc-2.3.4-tls_assert-1.patch mkdir -v ../glibc-build cd ../glibc-build ../glibc-2.3.4/configure --prefix=/usr --disable-profile --enable-add-ons --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc make make -k check >glibc-check-log 2>&1 grep Error glibc-check-log touch /etc/ld.so.conf make install make localedata/install-locales make -C ../glibc-2.3.4/linuxthreads/man make -C ../glibc-2.3.4/linuxthreads/man install cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf passwd: files group: files shadow: files hosts: files dns networks: files protocols: files services: files ethers: files rpc: files # End /etc/nsswitch.conf EOF cp -v --remove-destination /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cat > /etc/ld.so.conf << "EOF"
  • 22. /usr/local/lib B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m /opt/lib EOF cd .. rm -rf glibc-build rm -rf glibc-2.3.4glibc LFS cd binutils-build make -C ld INSTALL=/tools/bin/install install cd .. rm -rf binutils-build rm -rf binutils-2.15.94.0.2.2 binutilsLFS binutilstar xvf $LFS/binutils-2.15.94.0.2.2.tar.bz2mkdir binutils-buildcd binutils-build../binutils-2.15.94.0.2.2/configure --prefix=/tools --disable-nls --enable-shared --with-lib-path=/tools/libmakemake -C ld cleanmake -C ld LIB_PATH=/usr/lib:/libmake -C ld INSTALL=/tools/bin/install installcd ..rm -rf binutils-buildrm -rf binutils-2.15.94.0.2.2 specs perl -pi -e s@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g; -e s@*startfile_prefix_spec:n@$_/usr/lib/ @g; $(gcc --print-file specs)
  • 23. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mecho main(){} > dummy.ccc dummy.creadelf -l a.out | grep : /lib [Requesting program interpreter: /lib/ld-linux.so.2] /librm -v dummy.c a.outBinutils-2.15.94.0.2.2 tar xvf $LFS/binutils-2.15.94.0.2.2.tar.bz2 mkdir binutils-build cd binutils-build ../binutils-2.15.94.0.2.2/configure --prefix=/usr --enable-shared make tooldir=/usr make check check make tooldir=/usr install cp -v ../binutils-2.15.94.0.2.2/include/libiberty.h /usr/include cd .. rm -rf binutils-build rm -rf binutils-2.15.94.0.2.2GCC-3.4.3 tar xvf $LFS/gcc-3.4.3.tar.bz2 cd gcc-3.4.3 patch -Np1 -i $LFS/gcc-3.4.3-no_fixincludes-1.patch patch -Np1 -i $LFS/gcc-3.4.3-linkonce-1.patch sed -i s/install_to_$(INSTALL_DEST) // libiberty/Makefile.in mkdir -v ../gcc-build cd ../gcc-build ../gcc-3.4.3/configure --prefix=/usr --libexecdir=/usr/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++ make
  • 24. make -k check B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m check make install ln -sv ../usr/bin/cpp /lib ln -sv gcc /usr/bin/cc cd .. rm -rf gcc-build rm -rf gcc-3.4.3Coreutils-5.2.1 tar xvf $LFS/coreutils-5.2.1.tar.bz2 cd coreutils-5.2.1 patch -Np1 -i $LFS/coreutils-5.2.1-uname-2.patch patch -Np1 -i $LFS/coreutils-5.2.1-suppress_uptime_kill_su-1.patch DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr make echo "dummy1:x:1000:" >> /etc/group echo "dummy2:x:1001:dummy" >> /etc/group echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd make NON_ROOT_USERNAME=dummy check-root src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check" sed -i /dummy/d /etc/passwd /etc/group make install mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin mv -v /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,rm} /bin mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin mv -v /usr/bin/chroot /usr/sbin mv -v /usr/bin/{head,sleep} /bin cd ..
  • 25. rm -rf coreutils-5.2.1 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mZlib-1.2.3 tar xvf $LFS/zlib-1.2.3.tar.bz2 cd zlib-1.2.3 ./configure --prefix=/usr --shared --libdir=/lib make make check check make install rm -v /lib/libz.so ln -sfv ../../lib/libz.so.1.2.3 /usr/lib/libz.so make clean ./configure --prefix=/usr make make check check make install chmod -v 644 /usr/lib/libz.a cd .. rm -rf zlib-1.2.3Mktemp-1.5 tar xvf $LFS/mktemp-1.5.tar.bz2 cd mktemp-1.5
  • 26. patch -Np1 -i $LFS/mktemp-1.5-add_tempfile-2.patch B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m ./configure --prefix=/usr --with-libc make make install make install-tempfile cd .. rm -rf mktemp-1.5Iana-Etc-1.04 tar xvf $LFS/iana-etc-1.04.tar.bz2 cd iana-etc-1.04 make make install cd .. rm -rf iana-etc-1.04Findutils-4.2.23 tar xvf $LFS/findutils-4.2.23.tar.bz2 cd findutils-4.2.23 ./configure --prefix=/usr --libexecdir=/usr/lib/locate --localstatedir=/var/lib/locate make make check check make install cd .. rm -rf findutils-4.2.23Gawk-3.1.4 tar xvf $LFS/gawk-3.1.4.tar.bz2 cd gawk-3.1.4 ./configure --prefix=/usr --libexecdir=/usr/lib make
  • 27. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m make check check make install cd .. rm -rf gawk-3.1.4Ncurses-5.4 tar xvf $LFS/ncurses-5.4.tar.bz2 cd ncurses-5.4 ./configure --prefix=/usr --with-shared --without-debug make make install chmod -v 755 /usr/lib/*.5.4 chmod -v 644 /usr/lib/libncurses++.a mv -v /usr/lib/libncurses.so.5* /lib ln -sfv ../../lib/libncurses.so.5 /usr/lib/libncurses.so ln -sfv libncurses.so /usr/lib/libcurses.so cd .. rm -rf ncurses-5.4Readline-5.0 tar xvf $LFS/readline-5.0.tar.bz2 cd readline-5.0 patch -Np1 -i $LFS/readline-5.0-fixes-1.patch ./configure --prefix=/usr --libdir=/lib make SHLIB_XLDFLAGS=-lncurses make install chmod -v 755 /lib/lib{readline,history}.so* mv -v /lib/lib{readline,history}.a /usr/lib rm -v /lib/lib{readline,history}.so ln -sfv ../../lib/libreadline.so.5 /usr/lib/libreadline.so ln -sfv ../../lib/libhistory.so.5 /usr/lib/libhistory.so cd .. rm -rf readline-5.0Vim-6.3
  • 28. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m tar xvf $LFS/vim-6.3.tar.bz2 tar xvf $LFS/vim-6.3-lang.tar.gz cd vim63 echo #define SYS_VIMRC_FILE "/etc/vimrc" >> src/feature.h patch -Np1 -i $LFS/vim-6.3-security_fix-2.patch ./configure --prefix=/usr --enable-multibyte make make test test make install ln -sv vim /usr/bin/vi vim cat > /etc/vimrc << "EOF" " Begin /etc/vimrc set nocompatible set backspace=2 syntax on if (&term == "iterm") || (&term == "putty") set background=dark endif " End /etc/vimrc EOF cd .. rm -rf vim63M4-1.4.3 tar xvf $LFS/m4-1.4.3.tar.bz2 cd m4-1.4.3
  • 29. ./configure --prefix=/usr B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m make make check check make install cd .. rm -rf m4-1.4.3Bison-2.0 tar xvf $LFS/bison-2.0.tar.bz2 cd bison-2.0 ./configure --prefix=/usr make make check check make install cd .. rm -rf bison-2.0Less-382 tar xvf $LFS/less-382.tar.bz2 cd less-382 ./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc make
  • 30. make install B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m cd .. rm -rf less-382Groff-1.19.1 tar xvf $LFS/groff-1.19.1.tar.bz2 cd groff-1.19.1 PAGE=A4 ./configure --prefix=/usr make make install ln -sv soelim /usr/bin/zsoelim ln -sv eqn /usr/bin/geqn ln -sv tbl /usr/bin/gtbl cd .. rm -rf groff-1.19.1Sed-4.1.4 tar xvf $LFS/sed-4.1.4.tar.bz2 cd sed-4.1.4 sed -i s@/doc@&/sed-4.1.4@ doc/Makefile.in ./configure --prefix=/usr --bindir=/bin make make check check make install cd .. rm -rf sed-4.1.4Flex-2.5.31 tar xvf $LFS/flex-2.5.31.tar.bz2 cd flex-2.5.31 patch -Np1 -i $LFS/flex-2.5.31-debian_fixes-3.patch
  • 31. touch doc/flex.1 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m ./configure --prefix=/usr make make check check make install ln -sv libfl.a /usr/lib/libl.a lex cat > /usr/bin/lex << "EOF" #!/bin/sh # Begin /usr/bin/lex exec /usr/bin/flex -l "$@" # End /usr/bin/lex EOF chmod -v 755 /usr/bin/lex cd .. rm -rf flex-2.5.31Gettext-0.14.3 tar xvf $LFS/gettext-0.14.3.tar.bz2 cd gettext-0.14.3 ./configure --prefix=/usr make
  • 32. make check B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m check make install cd .. rm -rf gettext-0.14.3Inetutils-1.4.2 tar xvf $LFS/inetutils-1.4.2.tar.bz2 cd inetutils-1.4.2 patch -Np1 -i $LFS/inetutils-1.4.2-kernel_headers-1.patch patch -Np1 -i $LFS/inetutils-1.4.2-no_server_man_pages-1.patch ./configure --prefix=/usr --libexecdir=/usr/sbin --sysconfdir=/etc --localstatedir=/var --disable-logger --disable-syslogd --disable-whois --disable-servers make make install mv -v /usr/bin/ping /bin cd .. rm -rf inetutils-1.4.2IPRoute2-2.6.11-050330 tar xvf $LFS/iproute2-2.6.11-050330.tar.bz2 cd iproute2-2.6.11 sed -i /^TARGETS/s@arpd@@g misc/Makefile ./configure make SBINDIR=/sbin make SBINDIR=/sbin install cd .. rm -rf iproute2-2.6.11Perl-5.8.7 tar xvf $LFS/perl-5.8.7.tar.bz2 cd perl-5.8.7 ./configure.gnu --prefix=/usr -Dpager="/bin/less -isR" make
  • 33. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m echo "127.0.0.1 localhost $(hostname)" > /etc/hosts make test test make install cd .. rm -rf perl-5.8.7Texinfo-4.8 tar xvf $LFS/texinfo-4.8.tar.bz2 cd texinfo-4.8 patch -Np1 -i $LFS/texinfo-4.8-tempfile_fix-1.patch ./configure --prefix=/usr make make check check make install make TEXMF=/usr/share/texmf install-tex cd /usr/share/info rm dir for f in * do install-info $f dir 2>/dev/null done
  • 34. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m cd /sources rm -rf texinfo-4.8Autoconf-2.59 tar xvf $LFS/autoconf-2.59.tar.bz2 cd autoconf-2.59 ./configure --prefix=/usr make make check check make install cd .. rm -rf autoconf-2.59Automake-1.9.5 tar xvf $LFS/automake-1.9.5.tar.bz2 cd automake-1.9.5 ./configure --prefix=/usr make make check check 3 make install
  • 35. cd .. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m rm -rf automake-1.9.5Bash-3.0 tar xvf $LFS/bash-3.0.tar.bz2 cd bash-3.0 tar -xvf $LFS/bash-doc-3.0.tar.bz2 && sed -i "s|htmldir = @htmldir@|htmldir = /usr/share/doc/bash-3.0|" Makefile.in patch -Np1 -i $LFS/bash-3.0-fixes-3.patch patch -Np1 -i $LFS/bash-3.0-avoid_WCONTINUED-1.patch ./configure --prefix=/usr --bindir=/bin --without-bash-malloc --with-installed-readline make make check check make install cd .. rm -rf bash-3.0 /bin/bash exec /bin/bash --login +h Udev-0561. LiveCD2.export LFS=/mnt/lfsmkdir -pv $LFSmount /dev/sda2 $LFS3.swapon /dev/sda14.mount -vt proc proc $LFS/proc
  • 36. mount -vt sysfs sysfs $LFS/sys B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m5.Chrootchroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM" PS1=u:w$ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /bin/bash --login +h6. /devmount -nvt tmpfs none /devmknod -m 622 /dev/console c 5 1mknod -m 666 /dev/null c 1 3mknod -m 666 /dev/zero c 1 5mknod -m 666 /dev/ptmx c 5 2mknod -m 666 /dev/tty c 5 0mknod -m 444 /dev/random c 1 8mknod -m 444 /dev/urandom c 1 9chown -v root:tty /dev/{console,ptmx,tty}ln -sv /proc/self/fd /dev/fdln -sv /proc/self/fd/0 /dev/stdinln -sv /proc/self/fd/1 /dev/stdoutln -sv /proc/self/fd/2 /dev/stderrln -sv /proc/kcore /dev/coremkdir -v /dev/ptsmkdir -v /dev/shmmount -vt devpts -o gid=4,mode=620 none /dev/ptsmount -vt tmpfs none /dev/shm6.cd /sourcesexport LFS=/sourcesFile-4.13 tar xvf $LFS/file-4.13.tar.bz2 cd file-4.13 ./configure --prefix=/usr make make install cd .. rm -rf file-4.13Libtool-1.5.14 tar xvf $LFS/libtool-1.5.14.tar.bz2 cd libtool-1.5.14 ./configure --prefix=/usr make make check
  • 37. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m check make install cd .. rm -rf libtool-1.5.14Bzip2-1.0.3 tar xvf $LFS/bzip2-1.0.3.tar.bz2 cd bzip2-1.0.3 patch -Np1 -i $LFS/bzip2-1.0.3-install_docs-1.patch patch -Np1 -i $LFS/bzip2-1.0.3-bzgrep_security-1.patch make -f Makefile-libbz2_so make clean make make install cp -v bzip2-shared /bin/bzip2 cp -av libbz2.so* /lib ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so rm -v /usr/bin/{bunzip2,bzcat,bzip2} ln -sv bzip2 /bin/bunzip2 ln -sv bzip2 /bin/bzcat cd .. rm -rf bzip2-1.0.3Diffutils-2.8.1 tar xvf $LFS/diffutils-2.8.1.tar.bz2 cd diffutils-2.8.1 ./configure --prefix=/usr make make install cd .. rm -rf diffutils-2.8.1Kbd-1.12 tar xvf $LFS/kbd-1.12.tar.bz2 cd kbd-1.12 ./configure make make install
  • 38. cd .. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m rm -rf kbd-1.12E2fsprogs-1.37 tar xvf $LFS/e2fsprogs-1.37.tar.bz2 cd e2fsprogs-1.37 sed -i -e s/-DTEST/$(ALL_CFLAGS) &/ lib/e2p/Makefile.in mkdir -v build cd build ../configure --prefix=/usr --with-root-prefix="" --enable-elf-shlibs --disable-evms make make check check make install make install-libs cd ../.. rm -rf e2fsprogs-1.37Grep-2.5.1a tar xvf $LFS/grep-2.5.1a.tar.bz2 cd grep-2.5.1a ./configure --prefix=/usr --bindir=/bin make make check check
  • 39. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m make install cd .. rm -rf grep-2.5.1aGRUB-0.96 tar xvf $LFS/grub-0.96.tar.bz2 cd grub-0.96 ./configure --prefix=/usr make make check check “ufs2_stage1_5 is too big” make install mkdir -v /boot/grub cp -v /usr/lib/grub/i386-pc/stage{1,2} /boot/grub cd .. rm -rf grub-0.96Gzip-1.3.5 tar xvf $LFS/gzip-1.3.5.tar.bz2 cd gzip-1.3.5 patch -Np1 -i $LFS/gzip-1.3.5-security_fixes-1.patch ./configure --prefix=/usr sed -i s@"BINDIR"@/bin@g gzexe.in make make install mv -v /usr/bin/gzip /bin rm -v /usr/bin/{gunzip,zcat} ln -sv gzip /bin/gunzip ln -sv gzip /bin/zcat ln -sv gzip /bin/compress ln -sv gunzip /bin/uncompress cd .. rm -rf gzip-1.3.5
  • 40. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mHotplug-2004_09_23 tar xvf $LFS/hotplug-2004_09_23.tar.bz2 cd hotplug-2004_09_23 make install cp -v etc/hotplug/pnp.distmap /etc/hotplug rm -rfv /etc/init.d rm -fv /etc/hotplug/net.agent mkdir -v /lib/firmware cd .. rm -rf hotplug-2004_09_23Man-1.5p tar xvf $LFS/man-1.5p.tar.bz2 cd man-1.5p sed -i s@-is@&R@g configure sed -i s@MANPATH./usr/man@#&@g src/man.conf.in ./configure -confdir=/etc make make install cd .. rm -rf man-1.5pMake-3.80 tar xvf $LFS/make-3.80.tar.bz2 cd make-3.80 ./configure --prefix=/usr make make check check make install cd .. rm -rf make-3.80
  • 41. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mModule-Init-Tools-3.1 tar xvf $LFS/module-init-tools-3.1.tar.bz2 tar xvf $LFS/module-init-tools-testsuite-3.1.tar.bz2 cd module-init-tools-3.1 touch modprobe.conf.5 ./configure make check make distclean ./configure --prefix="" --enable-zlib make make install cd .. rm -rf module-init-tools-3.1Patch-2.5.4 tar xvf $LFS/patch-2.5.4.tar.bz2 cd patch-2.5.4 CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/usr make make install cd .. rm -rf patch-2.5.4Procps-3.2.5 tar xvf $LFS/procps-3.2.5.tar.bz2 cd procps-3.2.5 make make install cd .. rm -rf procps-3.2.5Psmisc-21.6 tar xvf $LFS/psmisc-21.6.tar.bz2 cd psmisc-21.6 ./configure --prefix=/usr --exec-prefix="" make make install mv -v /bin/pstree* /usr/bin ln -sv killall /bin/pidof
  • 42. cd .. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m rm -rf psmisc-21.6Shadow-4.0.9 tar xvf $LFS/shadow-4.0.9.tar.bz2 cd shadow-4.0.9 ./configure --libdir=/lib --enable-shared sed -i s/groups$(EXEEXT) // src/Makefile sed -i /groups/d man/Makefile make make install cp -v etc/{limits,login.access} /etc sed -es@#MD5_CRYPT_ENAB.no@MD5_CRYPT_ENAB yes@ -e s@/var/spool/mail@/var/mail@ etc/login.defs.linux > /etc/login.defs mv -v /usr/bin/passwd /bin mv -v /lib/libshadow.*a /usr/lib rm -v /lib/libshadow.so ln -sfv ../../lib/libshadow.so.0 /usr/lib/libshadow.so mkdir -v /etc/default pwconv grpconv passwd root root cd .. rm -rf shadow-4.0.9Sysklogd-1.4.1 tar xvf $LFS/sysklogd-1.4.1.tar.bz2 cd sysklogd-1.4.1 patch -Np1 -i $LFS/sysklogd-1.4.1-fixes-1.patch make make install syslog cat > /etc/syslog.conf << "EOF" # Begin /etc/syslog.conf auth,authpriv.* -/var/log/auth.log *.*;auth,authpriv.none -/var/log/sys.log daemon.* -/var/log/daemon.log
  • 43. kern.* -/var/log/kern.log B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m mail.* -/var/log/mail.log user.* -/var/log/user.log *.emerg * # log the bootscript output: local2.* -/var/log/boot.log # End /etc/syslog.conf EOF cd .. rm -rf sysklogd-1.4.1Sysvinit-2.86 tar xvf $LFS/sysvinit-2.86.tar.bz2 cd sysvinit-2.86 sed -i s@Sending processes@& started by init@g src/init.c make -C src make -C src install cat > /etc/inittab << "EOF" # Begin /etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/init.d/rc sysinit l0:0:wait:/etc/rc.d/init.d/rc 0 l1:S1:wait:/etc/rc.d/init.d/rc 1 l2:2:wait:/etc/rc.d/init.d/rc 2 l3:3:wait:/etc/rc.d/init.d/rc 3 l4:4:wait:/etc/rc.d/init.d/rc 4 l5:5:wait:/etc/rc.d/init.d/rc 5 l6:6:wait:/etc/rc.d/init.d/rc 6 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now su:S016:once:/sbin/sulogin 1:2345:respawn:/sbin/agetty -I 033(K tty1 9600 2:2345:respawn:/sbin/agetty -I 033(K tty2 9600 3:2345:respawn:/sbin/agetty -I 033(K tty3 9600
  • 44. 4:2345:respawn:/sbin/agetty -I 033(K tty4 9600 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m 5:2345:respawn:/sbin/agetty -I 033(K tty5 9600 6:2345:respawn:/sbin/agetty -I 033(K tty6 9600 # End /etc/inittab EOF cd .. rm -rf sysvinit-2.86Tar-1.15.1 tar xvf $LFS/tar-1.15.1.tar.bz2 cd tar-1.15.1 patch -Np1 -i $LFS/tar-1.15.1-sparse_fix-1.patch ./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin make make check check make install cd .. rm -rf tar-1.15.1Udev-056 tar xvf $LFS/udev-056.tar.bz2 cd udev-056 make udevdir=/dev make test
  • 45. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m test make DESTDIR=/ udevdir=/dev install cp -v $LFS/udev-config-4.rules /etc/udev/rules.d/25-lfs.rules /sbin/udevstart cd .. rm -rf udev-056 Stripping Again1. LiveCD2.export LFS=/mnt/lfsmkdir -pv $LFSmount /dev/sda2 $LFS3.swapon /dev/sda14.mount -vt proc proc $LFS/procmount -vt sysfs sysfs $LFS/sys5.Chrootchroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM" PS1=u:w$ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /bin/bash --login +h6. /devmount -nvt tmpfs none /dev/sbin/udevstartmkdir -v /dev/ptsmkdir -v /dev/shmmount -vt devpts -o gid=4,mode=620 none /dev/ptsmount -vt tmpfs none /dev/shm6.cd /sourcesexport LFS=/sourcesUtil-linux-2.12q tar xvf $LFS/util-linux-2.12q.tar.bz2 cd util-linux-2.12q sed -i s@etc/adjtime@var/lib/hwclock/adjtime@g hwclock/hwclock.c mkdir -p /var/lib/hwclock patch -Np1 -i $LFS/util-linux-2.12q-cramfs-1.patch patch -Np1 -i $LFS/util-linux-2.12q-umount_fix-1.patch ./configure
  • 46. make HAVE_KILL=yes HAVE_SLN=yes B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m make HAVE_KILL=yes HAVE_SLN=yes install mv /usr/bin/logger /bin cd .. rm -rf util-linux-2.12qutil-linux-2.12q GCC4 Bug util-linux-2.12r chroot logout Strip chroot chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1=u:w$ PATH=/bin:/usr/bin:/sbin:/usr/sbin /tools/bin/bash --login1. LiveCD2.export LFS=/mnt/lfsmkdir -pv $LFSmount /dev/sda2 $LFS3.swapon /dev/sda14.mount -vt proc proc $LFS/procmount -vt sysfs sysfs $LFS/sys5.Chrootchroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1=u:w$ PATH=/bin:/usr/bin:/sbin:/usr/sbin /tools/bin/bash --login6. /devmount -nvt tmpfs none /dev/sbin/udevstartmkdir -v /dev/ptsmkdir -v /dev/shmmount -vt devpts -o gid=4,mode=620 none /dev/ptsmount -vt tmpfs none /dev/shm6.cd /sourcesexport LFS=/sources
  • 47. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mStrip /tools/bin/find /{,usr/}{bin,lib,sbin} -type f -exec /tools/bin/strip --strip-debug {} ; chroot logout chroot chroot "$LFS" /usr/bin/env -i HOME=/root TERM="$TERM" PS1=u:w$ PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login1. LiveCD2.export LFS=/mnt/lfsmkdir -pv $LFSmount /dev/sda2 $LFS3.swapon /dev/sda14.mount -vt proc proc $LFS/procmount -vt sysfs sysfs $LFS/sys5.Chrootchroot "$LFS" /usr/bin/env -i HOME=/root TERM="$TERM" PS1=u:w$ PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login6. /devmount -nvt tmpfs none /dev/sbin/udevstartmkdir -v /dev/ptsmkdir -v /dev/shmmount -vt devpts -o gid=4,mode=620 none /dev/ptsmount -vt tmpfs none /dev/shm6.cd /sourcesexport LFS=/sourcesLFS-Bootscripts-3.2.1
  • 48. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o mtar xvf lfs-bootscripts-3.2.1.tar.bz2cd lfs-bootscripts-3.2.1make installcd ..rm -rf lfs-bootscripts-3.2.1 Configuring the setclock Scriptcat > /etc/sysconfig/clock << "EOF"# Begin /etc/sysconfig/clockUTC=1# End /etc/sysconfig/clockEOFbashcat > /etc/inputrc << "EOF"set horizontal-scroll-mode Offset meta-flag Onset input-meta Onset convert-meta Offset output-meta Onset bell-style none"eOd": backward-word"eOc": forward-word"e[1~": beginning-of-line"e[4~": end-of-line"e[5~": beginning-of-history"e[6~": end-of-history"e[3~": delete-char"e[2~": quoted-insert"eOH": beginning-of-line"eOF": end-of-line"e[H": beginning-of-line"e[F": end-of-lineEOFBash Shell The Bash Shell Startup Filescat > /etc/profile << "EOF"# Begin /etc/profileexport LANG=zh_CN.GB18030
  • 49. export INPUTRC=/etc/inputrc# End /etc/profileEOFecho "HOSTNAME=mylinux" > /etc/sysconfig/networkhostscat > /etc/hosts << "EOF"# Begin /etc/hosts (no network card version)127.0.0.1 mylinux localhost# End /etc/hosts (no network card version)EOFcd /etc/sysconfig/network-devices &&mkdir -v ifconfig.eth0 &&cat > ifconfig.eth0/ipv4 << "EOF"ONBOOT=yesSERVICE=ipv4-staticIP=192.168.1.1GATEWAY=192.168.1.2PREFIX=24BROADCAST=192.168.1.255EOF IP GATEWAY BROADCASTDNScat > /etc/resolv.conf << "EOF"# Begin /etc/resolv.confnameserver DNSnameserver DNS# End /etc/resolv.conf
  • 50. EOF B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m fstab cat > /etc/fstab << "EOF" # Begin /etc/fstab # file system mount-point type options dump fsck # order /dev/sda2 / xfs defaults 1 1 /dev/sda1 swap swap pri=1 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0 shm /dev/shm tmpfs defaults 0 0 # End /etc/fstab EOF Linux-2.6.11.12 cd /sources tar xvf linux-2.6.11.12.tar.bz2 cd linux-2.6.11.12 make mrproper make menuconfig VMWare5.0 loopDevice Drivers->Block devices Loopback device support Cryptoloop Support
  • 51. SCSI Device Drivers->SCSI device support->SCSI low-level driversBusLogic SCSI support initrd Device Drivers->Networking support->Ethernet (10 or 100Mbit) AMD PCnet32 PCI support
  • 52. B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m Device Drivers->Sound->Advanced Linux Sound Architecture->PCI devices (Creative)Ensoniq AudioPCI 1371/1373 Xfs File Systems->XFS support XFS initrd make make modules_install
  • 53. cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12 B y p a tSZ[¢N lèNŽ l i n u x•Dn•R N« h t t p : / / b l o g . b y p a t . c o m cp -v System.map /boot/System.map-2.6.11.12 cp -v .config /boot/config-2.6.11.12 Grub grub root (hd0,1) setup (hd0)quit grub cat > /boot/grub/menu.lst << "EOF" # Begin /boot/grub/menu.lst # By default boot the first menu entry. default 0 # Allow 30 seconds before booting the default. timeout 30 # Use prettier colors. color green/black light-green/black # The first entry is for LFS. title LFS 6.1.1 root (hd0,1) kernel /boot/lfskernel-2.6.11.12 root=/dev/sda2 EOF root menu.lst /etc mkdir -v /etc/grub ln -sv /boot/grub/menu.lst /etc/grub logout
  • 54. lfsGrub