|

楼主 |
发表于 2004-2-12 05:47:04
|
显示全部楼层
三、安装基本的系统软件
1.进入chroot(虚拟根)环境
-bash-2.05b$su
[root@localhost root]#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
2.改变所有者
I have no name!:/#chown -R 0:0 /tools
3.创建目录
I have no name!:/#mkdir -p /{bin,boot,dev/{pts,shm},etc/opt,home,lib,mnt,proc}
I have no name!:/#mkdir -p /{root,sbin,tmp,usr/local,var,opt}
I have no name!:/#for dirname in /usr /usr/local
do
mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
ln -s share/{man,doc,info} $dirname
mkdir $dirname/share/{dict,doc,info,locale,man}
mkdir $dirname/share/{nls,misc,terminfo,zoneinfo}
mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done
I have no name!:/#mkdir /var/{lock,log,mail,run,spool}
I have no name!:/#mkdir -p /var/{tmp,opt,cache,lib/misc,local}
I have no name!:/#mkdir /opt/{bin,doc,include,info}
I have no name!:/#mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}
I have no name!:/#chmod 0750 /root
I have no name!:/#chmod 1777 /tmp /var/tmp
4.加载proc和devpts文件系统
I have no name!:/#mount proc /proc -t proc
I have no name!:/#mount devpts /dev/pts -t devpts
5.创建重要的符号链接
I have no name!:/#ln -s /tools/bin/{bash,cat,pwd,stty} /bin
I have no name!:/#ln -s /tools/bin/perl /usr/bin
I have no name!:/#ln -s /tools/lib/libgcc_s.so.1 /usr/lib
I have no name!:/#ln -s bash /bin/sh
6.创建passwd和group文件
I have no name!:/#cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF
I have no name!:/#cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
EOF
I have no name!:/#exec /tools/bin/bash --login +h
7.创建设备Creating devices(Makedev-1.7)
root:/#cd sources
root:/sources#bzcat MAKEDEV-1.7.bz2 > /dev/MAKEDEV
root:/sources#chmod 754 /dev/MAKEDEV
root:/sources#cd /dev
root:/dev#./MAKEDEV -v generic-nopty
8.安装 Linux-2.4.22 headers
root:/#cd sources
root:/sources#tar jxvf linux-2.4.22.tar.bz2
root:/sources#cd linux-2.4.22
root:/sources/linux-2.4.22#make mrproper
root:/sources/linux-2.4.22#make include/linux/version.h
root:/sources/linux-2.4.22#make symlinks
root:/sources/linux-2.4.22#cp -HR include/asm /usr/include
root:/sources/linux-2.4.22#cp -R include/asm-generic /usr/include
root:/sources/linux-2.4.22#cp -R include/linux /usr/include
root:/sources/linux-2.4.22#touch /usr/include/linux/autoconf.h
9.安装Man-pages-1.60
root:/sources/linux-2.4.22#cd ..
root:/sources#tar jxvf man-pages-1.60.tar.bz2
root:/sources#cd man-pages-1.60
root:/sources/man-pages-1.60#make install
10.安装Glibc-2.3.2
root:/sources/man-pages-1.60#cd ..
root:/sources#tar jxvf glibc-2.3.2.tar.bz2
root:/sources#cd glibc-2.3.2
root:/sources/glibc-2.3.2#touch /etc/ld.so.conf
root:/sources/glibc-2.3.2#patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch
root:/sources/glibc-2.3.2#mkdir ../glibc-build
root:/sources/glibc-2.3.2#cd ../glibc-build
root:/sources/glibc-build#../glibc-2.3.2/configure --prefix=/usr \
--disable-profile --enable-add-ons \
--libexecdir=/usr/bin --with-headers=/usr/include
root:/sources/glibc-build#make
root:/sources/glibc-build#make check
root:/sources/glibc-build#make install
root:/sources/glibc-build#make localedata/install-locales
root:/sources/glibc-build#make -C ../glibc-2.3.2/linuxthreads/man
root:/sources/glibc-build#make -C ../glibc-2.3.2/linuxthreads/man install
配置Glibc
root:/sources/glibc-build#cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files
publickey: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: db files
# End /etc/nsswitch.conf
EOF
root:/sources/glibc-build#tzselect
root:/sources/glibc-build#cp --remove-destination \
/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
配置动态链接库加载程序
root:/sources/glibc-build#cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
# End /etc/ld.so.conf
EOF
11.再次调整工具链
root:/sources/glibc-build#cd ../binutils-build2
root:/sources/binutils-build2#make -C ld INSTALL=/tools/bin/install install
root:/sources/binutils-build2#cd ..
root:/sources#SPECFILE=/tools/lib/gcc-lib/*/*/specs &&
sed -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g' \
$SPECFILE > newspecfile &&
mv -f newspecfile $SPECFILE
unset SPECFILE
root:/sources#echo 'main(){}' > dummy.c
gcc dummy.c
readelf -l a.out | grep ': /lib'
测试:
[Requesting program interpreter: /lib/ld-linux.so.2]
root:/sources#rm dummy.c a.out
12.安装Binutils-2.14
root:/sources/binutils-build2#cd ..
这里我删除了binutils以前解了压的源码包和编译所建的目录。
root:/sources#tar jxvf binutils-2.14.tar.bz2
root:/sources#expect -c "spawn ls"
显示:spawn ls
root:/sources#mkdir binutils-build
root:/sources#cd binutils-build
root:/sources/binutils-build#../binutils-2.14/configure \
--prefix=/usr --enable-shared
root:/sources/binutils-build#make tooldir=/usr
root:/sources/binutils-build#make check
root:/sources/binutils-build#make tooldir=/usr install
root:/sources/binutils-build#cp ../binutils-2.14/include/libiberty.h /usr/include
13.安装GCC-3.3.1
root:/sources/binutils-build#cd ..
root:/sources#tar jxvf gcc-core*
root:/sources#tar jxvf gcc-g++*
root:/sources#tar jxvf gcc-testsuite*
root:/sources#cd gcc-3.3.1
root:/sources/gcc-3.3.1#patch -Np1 -i ../gcc-3.3.1-no_fixincludes-2.patch
root:/sources/gcc-3.3.1#patch -Np1 -i ../gcc-3.3.1-suppress-libiberty.patch
root:/sources/gcc-3.3.1#mkdir ../gcc-build
root:/sources/gcc-3.3.1#cd ../gcc-build
root:/sources/gcc-build#../gcc-3.3.1/configure --prefix=/usr \
--enable-shared --enable-threads=posix \
--enable-__cxa_atexit --enable-clocale=gnu \
--enable-languages=c,c++
root:/sources/gcc-build#make
root:/sources/gcc-build#make -k check
root:/sources/gcc-build#make install
root:/sources/gcc-build#cd ..
root:/sourcesld#ln -s ../usr/bin/cpp /lib
root:/sources#ln -s gcc /usr/bin/cc
14.安装Coreutils-5.0
root:/sources#tar jxvf coreutils-5.0.tar.bz2
root:/sources#cd coreutils
root:/sources/coreutils#patch -Np1 -i ../coreutils-5.0-uname.patch
root:/sources/coreutils#patch -Np1 -i ../coreutils-5.0-hostname-2.patch
root:/sources/coreutils#./configure --prefix=/usr
root:/sources/coreutils#make
root:/sources/coreutils#make install-root
root:/sources/coreutils#echo "dummy1:x:1000" >> /etc/group
root:/sources/coreutils#echo "dummy2:x:1001:dummy" >> /etc/group
root:/sources/coreutils#echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd
root:/sources/coreutils#make check-root
root:/sources/coreutils#su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"
root:/sources/coreutils#sed -i.bak '/dummy/d' /etc/passwd /etc/group
root:/sources/coreutils#make install
root:/sources/coreutils#mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
root:/sources/coreutils#mv /usr/bin/{dir,dircolors,du,date,echo,false,head} /bin
root:/sources/coreutils#mv /usr/bin/{install,ln,ls,mkdir,mkfifo,mknod,mv,pwd} /bin
root:/sources/coreutils#mv /usr/bin/{rm,rmdir,shred,sync,sleep,stty,su,test} /bin
root:/sources/coreutils#mv /usr/bin/{touch,true,uname,vdir} /bin
root:/sources/coreutils#mv /usr/bin/chroot /usr/sbin
root:/sources/coreutils#ln -s test /bin/[
root:/sources/coreutils#ln -s ../../bin/install /usr/bin
15.安装Zlib-1.1.4
root:/sources/coreutils#cd ..
root:/sources#tar jxvf zlib-1.1.4.tar.bz2
root:/sources#cd zlib-1.1.4
root:/sources/zlib-1.1.4#patch -Np1 -i ../zlib-1.1.4-vsnprintf.patch
root:/sources/zlib-1.1.4#./configure --prefix=/usr --shared
root:/sources/zlib-1.1.4#make
root:/sources/zlib-1.1.4#make install
root:/sources/zlib-1.1.4#make clean
root:/sources/zlib-1.1.4#./configure --prefix=/usr
root:/sources/zlib-1.1.4#make
root:/sources/zlib-1.1.4#make test
root:/sources/zlib-1.1.4#make install
root:/sources/zlib-1.1.4#mv /usr/lib/libz.so.* /lib
root:/sources/zlib-1.1.4#ln -sf ../../lib/libz.so.1 /usr/lib/libz.so
root:/sources/zlib-1.1.4#cp zlib.3 /usr/share/man/man3
16.安装Lfs-Utils-0.3
root:/sources/zlib-1.1.4#cd ..
root:/sources#tar jxvf lfs-utils-0.3.tar.bz2
root:/sources#cd lfs-utils-0.3
root:/sources/lfs-utils-0.3#make
root:/sources/lfs-utils-0.3#make install
root:/sources/lfs-utils-0.3#cp etc/{services,protocols} /etc
17.安装Findutils-4.1.20
root:/sources/lfs-utils-0.3#cd ..
root:/sources#tar jxvf findutils-4.1.20.tar.bz2
root:/sources#cd findutils-4.1.20
root:/sources/findutils-4.1.20#./configure --prefix=/usr --libexecdir=/usr/bin
root:/sources/findutils-4.1.20#make
root:/sources/findutils-4.1.20#make check
root:/sources/findutils-4.1.20#make install
18.安装Gawk-3.1.3
root:/sources/findutils-4.1.20#cd ..
root:/sources#tar jxvf gawk-3.1.3.tar.bz2
root:/sources#cd gawk-3.1.3
root:/sources/gawk-3.1.3#patch -Np1 -i ../gawk-3.1.3-libexecdir.patch
root:/sources/gawk-3.1.3#./configure --prefix=/usr --libexecdir=/usr/bin
root:/sources/gawk-3.1.3#make
root:/sources/gawk-3.1.3#make check
root:/sources/gawk-3.1.3#make install
19.安装Ncurses-5.3
root:/sources/gawk-3.1.3#cd ..
root:/sources#tar jxvf ncurses-5.3.tar.bz2
root:/sources#cd ncurses-5.3
root:/sources/ncurses-5.3#patch -Np1 -i ../ncurses-5.3-etip-2.patch
root:/sources/ncurses-5.3#patch -Np1 -i ../ncurses-5.3-vsscanf.patch
root:/sources/ncurses-5.3#./configure --prefix=/usr --with-shared \
--without-debug
root:/sources/ncurses-5.3#make
root:/sources/ncurses-5.3#make install
root:/sources/ncurses-5.3#chmod 755 /usr/lib/*.5.3
root:/sources/ncurses-5.3#chmod 644 /usr/lib/libncurses++.a
root:/sources/ncurses-5.3#mv /usr/lib/libncurses.so.5* /lib
root:/sources/ncurses-5.3#ln -sf ../../lib/libncurses.so.5 /usr/lib/libncurses.so
root:/sources/ncurses-5.3#ln -sf libncurses.so /usr/lib/libcurses.so
20.安装Vim-6.2
root:/sources/ncurses-5.3#cd ..
root:/sources#tar jxvf vim-6.2.tar.bz2
root:/sources#cd vim-6.2
root:/sources/vim-6.2#echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
root:/sources/vim-6.2#echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' >> src/feature.h
root:/sources/vim-6.2#./configure --prefix=/usr
root:/sources/vim-6.2#make
root:/sources/vim-6.2#make install
root:/sources/vim-6.2#ln -s vim /usr/bin/vi
配置 Vim
root:/sources/vim-6.2#cat > /root/.vimrc << "EOF"
" Begin /root/.vimrc
set nocompatible
set bs=2
" End /root/.vimrc
EOF
21.安装M4-1.4
root:/sources/vim-6.2#cd ..
root:/sources#tar jxvf m4-1.4.tar.bz2
root:/sources#cd m4-1.4
root:/sources/m4-1.4#./configure --prefix=/usr
root:/sources/m4-1.4#make
root:/sources/m4-1.4#make check
root:/sources/m4-1.4#make install
22.安装Bison-1.875
root:/sources/m4-1.4#cd ..
root:/sources#tar jxvf bison-1.875.tar.bz2
root:/sources#cd bison-1.875
root:/sources/bison-1.875#patch -Np1 -i ../bison-1.875-attribute.patch
root:/sources/bison-1.875#./configure --prefix=/usr
root:/sources/bison-1.875#make
root:/sources/bison-1.875#make check
root:/sources/bison-1.875#make install
23.安装Less-381
root:/sources/bison-1.875#cd ..
root:/sources#tar jxvf less-381.tar.bz2
root:/sources#cd less-381
root:/sources/less-381#./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc
root:/sources/less-381#make
root:/sources/less-381#make install
24.安装Groff-1.19
root:/sources/less-381#cd ..
root:/sources#tar jxvf groff-1.19.tar.bz2
root:/sources#cd groff-1.19
root:/sources/groff-1.19#PAGE=letter ./configure --prefix=/usr
root:/sources/groff-1.19#make
root:/sources/groff-1.19#make install
root:/sources/groff-1.19#ln -s soelim /usr/bin/zsoelim
root:/sources/groff-1.19#ln -s eqn /usr/bin/geqn
root:/sources/groff-1.19#ln -s tbl /usr/bin/gtbl
25.安装Sed-4.0.7
root:/sources/groff-1.19#cd ..
root:/sources#tar jxvf sed-4.0.7.tar.bz2
root:/sources#cd sed-4.0.7
root:/sources/sed-4.0.7#./configure --prefix=/usr --bindir=/bin
root:/sources/sed-4.0.7#make
root:/sources/sed-4.0.7#make check
root:/sources/sed-4.0.7#make install
26.安装Flex-2.5.4a
root:/sources/sed-4.0.7#cd ..
root:/sources# tar jxvf flex-2.5.4a.tar.bz2
root:/sources#cd flex-2.5.4a
root:/sources/flex-2.5.4a#make
root:/sources/flex-2.5.4a#make bigcheck
root:/sources/flex-2.5.4a#make install
root:/sources/flex-2.5.4a#ln -s libfl.a /usr/lib/libl.a
root:/sources/flex-2.5.4a#cat > /usr/bin/lex << "EOF"
#!/bin/sh
# Begin /usr/bin/lex
exec /usr/bin/flex -l "$@"
# End /usr/bin/lex
EOF
chmod 755 /usr/bin/lex
27.安装Gettext-0.12.1
root:/sources/flex-2.5.4a#cd ..
root:/sources#tar jxvf gettext-0.12.1.tar.bz2
root:/sources#cd gettext-0.12.1
root:/sources/gettext-0.12.1#./configure --prefix=/usr
root:/sources/gettext-0.12.1#make
root:/sources/gettext-0.12.1#make check
root:/sources/gettext-0.12.1#make install
28.安装Net-tools-1.60
root:/sources/gettext-0.12.1#cd ..
root:/sources#tar jxvf net-tools-1.60.tar.bz2
root:/sources#cd net-tools-1.60
root:/sources/net-tools-1.60#patch -Np1 -i ../net-tools-1.60-miitool-gcc33-1.patch
root:/sources/net-tools-1.60#yes "" | make config
root:/sources/net-tools-1.60#make
root:/sources/net-tools-1.60#make update
29.安装Inetutils-1.4.2
root:/sources/net-tools-1.60#cd ..
root:/sources#tar jxvf inetutils-1.4.2.tar.bz2
root:/sources#cd inetutils-1.4.2
root:/sources/inetutils-1.4.2#./configure --prefix=/usr --disable-syslogd \
--libexecdir=/usr/sbin --disable-logger \
--sysconfdir=/etc --localstatedir=/var \
--disable-whois --disable-servers
root:/sources/inetutils-1.4.2#make
root:/sources/inetutils-1.4.2#make install
root:/sources/inetutils-1.4.2#mv /usr/bin/ping /bin
30.安装Perl-5.8.0
root:/sources/inetutils-1.4.2#cd ..
root:/sources#tar perl-5.8.0.tar.bz2
root:/sources#cd perl-5.8.0
root:/sources/perl-5.8.0#./configure.gnu --prefix=/usr
root:/sources/perl-5.8.0#make
root:/sources/perl-5.8.0#echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
root:/sources/perl-5.8.0#make test
root:/sources/perl-5.8.0#make install
31.安装Texinfo-4.6
root:/sources/perl-5.8.0#cd ..
root:/sources#tar jxvf texinfo-4.6.tar.bz2
root:/sources#cd texinfo-4.6
root:/sources/texinfo-4.6#./configure --prefix=/usr
root:/sources/texinfo-4.6#make
root:/sources/texinfo-4.6#make check
root:/sources/texinfo-4.6#make install
root:/sources/texinfo-4.6#make TEXMF=/usr/share/texmf install-tex
32.安装Autoconf-2.57
root:/sources/texinfo-4.6#cd ..
root:/sources#tar jxvf autoconf-2.57.tar.bz2
root:/sources#cd autoconf-2.57
root:/sources/autoconf-2.57#./configure --prefix=/usr
root:/sources/autoconf-2.57#make
root:/sources/autoconf-2.57#make check
root:/sources/autoconf-2.57#make install |
|