LFS67实录.docx
《LFS67实录.docx》由会员分享,可在线阅读,更多相关《LFS67实录.docx(27页珍藏版)》请在冰豆网上搜索。
LFS67实录
前期准备:
机器:
IBMT23(512M内存,别笑我这本子真是好用的很,二手买来都5年了,就是屏坏了);
操作系统:
WINXPSP3;
虚拟机:
VMWARESERVER1.06(用它因为它占用空间和内存都很小)
软件包:
lfslivecd-x86-6.3-r2160-min.iso,用作LFS的宿主系统
ftp:
//anduin.linuxfromscratch.org/LFS-LiveCD/lfslivecd-x86-6.3-r2160-min.iso
LFSBOOK6.7,这个是说明书,没它做不了LFS
http:
//www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-6.7-HTML.tar.bz2
LFS6.7的所用到的软件包
ftp:
//anduin.linuxfromscratch.org/LFS/lfs-packages/lfs-packages-6.7.tar
主要是这三个就全活了,对了如果想远程安装还要在本机上安装PUTTY(强烈推荐,用远程安装的话可以复制粘贴BOOK里的命令,这样准确度就提高了,不会有打错字符这种低级错误,但是推荐手动输入命令,这样可以更好的理解LINUX系统.)
开始:
一.新建一个虚拟机
GUESTOS为LINUXver为:
OTHERLINUX2.6.XKERNEL,名子就叫LFS67吧,随自己喜欢.内存分大点没坏处,NETWORKCONNECTION用桥接吧(实际上我用的是NAT,因为我把网撤了,成单机了,用桥接两台机器连不上,如果在网络中,桥接是最好的选择,相当于一台独立机器),省事.以后默认就行了(其实以前的也是默认的).
好了,虚拟机建好了,把CD-ROM修改一下:
Connection为UseISOimage.这里就用上面那个ISO.
二.启动虚拟机
现在就从ISO启动了,SYSTEMCLOCK:
ASIA/SHANGHAI;其它默认就行了;因为要远程控制它,所以要给它设置成同一网络里的机器.
#net-setupeth0–>static–>后面按自己的网络设置一下就好了,比如你的机器IP是192.168.1.3,那这个就设置192.168.1.5等,DNS设置成自已当地的就可以,以后可以上网的.
再设置一下root账户,默认是空密码的,这样在远程时会连不上
#passwdroot 设置一下密码
最后启动SSHD
#/etc/rc.d/init.d/sshdstart
三.远程连接虚拟机
现在就可以用PUTTY来连接这个虚拟机了
=============正式开始建立LFS==========
现在就正式开始LFS的建立了,打开手册.现在按手册的章节来进行下面的工作
2.准备建立:
建立一个新分区–>在分区上建立文件系统–>挂载这个分区
2.2
建立2个分区.一个用于SWAP,一个用作根分区,SWAP分区一般要求是内存的2倍左右,按此要求分下就行了.
#cfdisk
2.3建立文件系统:
建立一个EXT3文件系统和一个SWAP分区
mke2fs-jv/dev/sda2
mkswap/dev/sda1
2.4挂载分区
建立一个LFS环境变量,把新分区挂载到$LFS上,并打开交换分区
exportLFS=/mnt/lfs
mkdir-pv$LFS
mount-v-text3/dev/sda2$LFS
/sbin/swapon-v/dev/sda1
3.所有包和补丁
这个我们已经准备好了,所有包共286M左右,也可以直接从网上下载,或者用WGET来抓取,这里提供了一个WGET-LIST.不过还是建议下载整合包,列表里有的包已失效或连接不上.建立一个源文件目录
mkdir-v$LFS/sources
chmod-va+wt$LFS/sources
要用整合包的话用下边的命令
cd$LFS
wget ftp:
//anduin.linuxfromscratch.org/LFS/lfs-packages/lfs-packages-6.7.tar
tar-xvflfs-packages-6.7.tar
chmod-va+wt$LFS/sources
4.最后的准备
4.2建立$LFS/tools目录,并建立一个符号连接到/tools
mkdir-v$LFS/tools
ln-sv$LFS/tools/
4.3增加LFS用户
groupaddlfs
useradd-s/bin/bash-glfs-m-k/dev/nulllfs
passwdlfs
chown-vlfs$LFS/tools
chown-vlfs$LFS/sources
su–lfs
4.4设置环境
cat>~/.bash_profile<<“EOF”
execenv-iHOME=$HOMETERM=$TERMPS1=’\u:
\w\$‘/bin/bash
EOF
cat>~/.bashrc<<“EOF”
set+h
umask022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname-m)-lfs-linux-gnu
PATH=/tools/bin:
/bin:
/usr/bin
exportLFSLC_ALLLFS_TGTPATH
EOF
source~/.bash_profile
5.构建一个临时系统
5.3一般编译的说明,这一部分非常重要
[1].把所有包和补丁都放在一个目录/mnt/lfs/sources
[2].改变到源文件目录.进入/mnt/lfs/sources
[3].针对每一个包
A.用TAR解压
B.进入解压后的目录
C.根据手册中的说明编译安装这个包
D.改变到存放包和补丁的目录
E.删除解压后源文件目录和所有建立的<包>-build目录.
5.4.Binutils-2.20.1–Pass1
mkdir-v../binutils-build
cd../binutils-build
../binutils-2.20.1/configure\
–target=$LFS_TGT–prefix=/tools\
–disable-nls–disable-werror
make
makeinstall
5.5.GCC-4.5.1–Pass1
tar-jxf../mpfr-3.0.0.tar.bz2
mv-vmpfr-3.0.0mpfr
tar-jxf../gmp-5.0.1.tar.bz2
mv-vgmp-5.0.1gmp
tar-zxf../mpc-0.8.2.tar.gz
mv-vmpc-0.8.2mpc
mkdir-v../gcc-build
cd../gcc-build
../gcc-4.5.1/configure\
–target=$LFS_TGT–prefix=/tools\
–disable-nls–disable-shared–disable-multilib\
–disable-decimal-float–disable-threads\
–disable-libmudflap–disable-libssp\
–disable-libgomp–enable-languages=c\
–with-gmp-include=$(pwd)/gmp–with-gmp-lib=$(pwd)/gmp/.libs\
–without-ppl–without-cloog
make
makeinstall
ln-vslibgcc.a`$LFS_TGT-gcc-print-libgcc-file-name|\
sed‘s/libgcc/&_eh/’`
5.6.Linux-2.6.35.4APIHeaders
makemrproper
makeheaders_check
makeINSTALL_HDR_PATH=destheaders_install
cp-rvdest/include/*/tools/include
5.7.Glibc-2.12.1
patch-Np1-i../glibc-2.12.1-gcc_fix-1.patch
patch-Np1-i../glibc-2.12.1-makefile_fix-1.patch
mkdir-v../glibc-build
cd../glibc-build
case`uname-m`in
i?
86)echo“CFLAGS+=-march=i486-mtune=native”>configparms;;
esac
../glibc-2.12.1/configure–prefix=/tools\
–host=$LFS_TGT–build=$(../glibc-2.12.1/scripts/config.guess)\
–disable-profile–enable-add-ons\
–enable-kernel=2.6.22.5–with-headers=/tools/include\
libc_cv_forced_unwind=yeslibc_cv_c_cleanup=yes
make
makeinstall
5.8.调整工具链
SPECS=`dirname$($LFS_TGT-gcc-print-libgcc-file-name)`/specs
$LFS_TGT-gcc-dumpspecs|sed\
-e ‘s@/lib\(64\)\?
/ld@/tools&@g’ \
-e“/^\*cpp:
$/{n;s,$,-isystem/tools/include,}”>$SPECS
echo“Newspecsfileis:
$SPECS”
unsetSPECS
echo‘main(){}’>dummy.c
$LFS_TGT-gcc-B/tools/libdummy.c
readelf-la.out|grep‘:
/tools’
OK出现[Requestingprograminterpreter:
/tools/lib/ld-linux.so.2]
rm-vdummy.ca.out
5.9.Binutils-2.20.1–Pass2
mkdir-v../binutils-build
cd../binutils-build
CC=”$LFS_TGT-gcc-B/tools/lib/”\
AR=$LFS_TGT-arRANLIB=$LFS_TGT-ranlib\
../binutils-2.20.1/configure–prefix=/tools\
–disable-nls–with-lib-path=/tools/lib
make
makeinstall
make-Cldclean
make-CldLIB_PATH=/usr/lib:
/lib
cp-vld/ld-new/tools/bin
5.10.GCC-4.5.1–Pass2
patch-Np1-i../gcc-4.5.1-startfiles_fix-1.patch
cp-vgcc/Makefile.in{,.orig}
sed ‘s@\./fixinc\.sh@-c true@’ gcc/Makefile.in.orig>gcc/Makefile.in
cp-vgcc/Makefile.in{,.tmp}
sed‘s/^T_CFLAGS=$/&-fomit-frame-pointer/’gcc/Makefile.in.tmp\
>gcc/Makefile.in
forfilein\
$(findgcc/config-namelinux64.h-o-namelinux.h-o-namesysv4.h)
do
cp-uv$file{,.orig}
sed-e ‘s@/lib\(64\)\?
\(32\)\?
/ld@/tools&@g’ \
-e ‘s@/usr@/tools@g’ $file.orig>$file
echo‘
#undefSTANDARD_INCLUDE_DIR
#defineSTANDARD_INCLUDE_DIR0
#defineSTANDARD_STARTFILE_PREFIX_1“”
#defineSTANDARD_STARTFILE_PREFIX_2“”‘>>$file
touch$file.orig
done
tar-jxf../mpfr-3.0.0.tar.bz2
mv-vmpfr-3.0.0mpfr
tar-jxf../gmp-5.0.1.tar.bz2
mv-vgmp-5.0.1gmp
tar-zxf../mpc-0.8.2.tar.gz
mv-vmpc-0.8.2mpc
mkdir-v../gcc-build
cd../gcc-build
CC=”$LFS_TGT-gcc-B/tools/lib/”\
AR=$LFS_TGT-arRANLIB=$LFS_TGT-ranlib\
../gcc-4.5.1/configure–prefix=/tools\
–with-local-prefix=/tools–enable-clocale=gnu\
–enable-shared–enable-threads=posix\
–enable-__cxa_atexit–enable-languages=c,c++\
–disable-libstdcxx-pch–disable-multilib\
–disable-bootstrap–disable-libgomp\
–with-gmp-include=$(pwd)/gmp–with-gmp-lib=$(pwd)/gmp/.libs\
–without-ppl–without-cloog
make
makeinstall
ln-vsgcc/tools/bin/cc
echo‘main(){}’>dummy.c
ccdummy.c
readelf-la.out|grep‘:
/tools’
OK显示[Requestingprograminterpreter:
/tools/lib/ld-linux.so.2]
rm-vdummy.ca.out
5.11.Tcl-8.5.8
cdunix
./configure–prefix=/tools
make
maketest
makeinstall
chmod-vu+w/tools/lib/libtcl8.5.so
makeinstall-private-headers
ln-svtclsh8.5/tools/bin/tclsh
5.12.Expect-5.44.1.15
patch-Np1-i../expect-5.44.1.15-no_tk-1.patch
cp-vconfigure{,.orig}
sed‘s:
/usr/local/bin:
/bin:
’configure.orig>configure
./configure–prefix=/tools–with-tcl=/tools/lib\
–with-tclinclude=/tools/include–with-tk=no
make
maketest
makeSCRIPTS=”"install
5.13.DejaGNU-1.4.4
patch-Np1-i../dejagnu-1.4.4-consolidated-1.patch
./configure–prefix=/tools
makeinstall
makecheck
5.14.Ncurses-5.7
./configure–prefix=/tools–with-shared\
–without-debug–without-ada–enable-overwrite
make
makeinstall
5.15.Bash-4.1
patch-Np1-i../bash-4.1-fixes-2.patch
./configure–prefix=/tools–without-bash-malloc
make
maketests
makeinstall
ln-vsbash/tools/bin/sh
5.16.Bzip2-1.0.5
make
makePREFIX=/toolsinstall
5.17.Coreutils-8.5
./configure–prefix=/tools–enable-install-program=hostname
make
makeRUN_EXPENSIVE_TESTS=yescheck
makeinstall
cp-vsrc/su/tools/bin/su-tools
5.18.Diffutils-3.0
./co
nfigure–prefix=/tools
make
makecheck
makeinstall
5.19.File-5.04
./configure–prefix=/tools
make
makecheck
makeinstall
5.20.Findutils-4.4.2
./configure–prefix=/tools
make
makecheck
makeinstall
5.21.Gawk-3.1.8
./configure–prefix=/tools
make
makecheck
makeinstall
5.22.Gettext-0.18.1.1
cdgettext-tools
./configure–prefix=/tools–disable-shared
make-Cgnulib-lib
make-Csrcmsgfmt
cp-vsrc/msgfmt/tools/bin
5.23.Grep-2.6.3
./configure–prefix=/tools\
–disable-perl-regexp
make
makecheck
makeinstll
5.24.Gzip-1.4
./configure–prefix=/tools
make
makecheck
makeinstall
5.25.M4-1.4.14
sed-i-e‘/”m4.h”/a\
#include’src/path.c
./configure–prefix=/tools
make
makecheck
makeinstall
5.26.Make-3.82
./configure–prefix=/tools
make
makecheck
makeinstall
5.27.Patch-2.6.1
./configure–prefix=/tools
make
makecheck
makeinstall
5.28.Perl-5.12.1
patch-Np1-i../perl-5.12.1-libc-1.patch
shConfigure-des-Dprefix=/tools\
-Dstatic_ext=’Data/DumperFcntlIO’
makeperlutilitiesext/Errno/pm_to_blib
cp-vperlpod/pod2man/tools/bin
mkdir-pv/tools/lib/perl5/5.12.1
cp-Rvlib/*/tools/lib/perl5/5.12.1
5.29.Sed-4.2.1
./configure–prefix=/tools
make
makecheck
makeinstall
5.30.Tar-1.23
sed-i/SIGPIPE/dsrc/tar.c
./configure–prefix=/tools
make
makecheck
makeinstall
5.31.Texinfo-4.13a
./configure–prefix=/tools
make
makecheck
makeinstall
5.32.Stripping清理无用的部分
strip–strip-debug/tools/lib/*
strip–strip-unneeded/tools/{,s}bin/*
rm-rf/tools/{,share}/{info,man}
5.33.ChangingOwnership
exit
chown-Rroot:
root$LFS/tools
III.BuildingtheLFSSystem建立LFS系统
6.2.PreparingVirtualKernelFileSystems虚拟的内核文件系统的准备
mkdir-v$LFS/{dev,proc,sys}
mknod-m600$LFS/dev/consolec51
mknod-m666$LFS/dev/nullc13
mount-v–bind/dev$LFS/dev
mount-vtdevptsdevpts$LFS/dev/pts
mount-vttmpfsshm$LFS/dev/shm
mount-vtprocproc$LFS/proc
mount-vtsysfssysfs$LFS/sys
6.4.EnteringtheChrootEnvironment
chroot“$LFS”/tools/bin/env-i\
HOME=/rootTERM=”$TERM”PS1=’\u:
\w\$‘\
PATH=/bin:
/usr/bin:
/sbin:
/usr/sbin:
/tools/bin\
/tools/bin/bash–login+h
6.5.CreatingDirectories
mkdir-pv/{b