(原文发于linxsir,lfs+gentoo版,by tram)
环境:
redhat 8
KDE 3
konsole
GCC-3.2-7
说点闲话:安装LFS的时候一边听歌一边装是最好的选择,在编译的时候,可以做一下记录,或者看一下软件包的说明,很有意思的。当然如果你不想,那就再准备一张体坛周报。要听歌,不能用XMMS,太耗资源。我用的是mp3blaster,呵呵,不错!
优化参数:
CC='gcc -s'
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays"
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays"
你的CPU可能和我的不同,在这里可以找到详细的优化参数:
http://www.freehackers.org/gentoo/gccflags/flag_gcc3opt.html
对设置优化参数的解释:在bash做为登陆进程时,是读/etc/profile(如果有的话)。在这之后,按顺序找~/.bash_profile,~/.bash_login, 和 ~/.profile文件,找到了就执行相关的操作。如果不是登陆进程(比如新开了一个konsole),它就找~/.bashrc,所以你要在相关的文件里设置参数。我习惯在/etc/profile里设置,所以在打开了一个konsole后,我要用source /etc/profile来找回一些没有读到的设置。当你用su命令成为root后,有些路径可能也没有,也用这个命令可以找到。
在/etc/profile里面加入:
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays"
CXXFLAGS="${CFLAGS}"
CC='gcc -s'
export CHOST CFLAGS CXXFLAGS CC
在/root/.bashrc中加入export LFS=/mnt/lfs
source /etc/profile
下面是创建文件系统,我已经有一个3G大的分区了,是上次装LFS分的。
fdisk -l /dev/hdc
umount /dev/hdc4
mkreiserfs /dev/hdc4
mount /dev/hdc4 $LFS
下面确认一下:
[root@localhost tram]# echo $LFS
/mnt/lfs
mkdir $LFS/static
mkdir $LFS/static/src
把包拷贝过去:
cp doc/lfs-packages-cvs-20021023-1707.tar $LFS/static/src
增加用户:
useradd -s /bin/bash -m lfs &&
passwd lfs
chown -R lfs $LFS/static
su - lfs
bash_profile
cat > ~lfs/.bash_profile << "EOF"
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
CC='gcc -s'
export LFS LC_ALL CC
EOF
source ~/.bash_profile
在安装bash时:
cd /usr/lib
ls | grep libcurses
ls | grep libncurses
都有。
安装binutils:
unset CFLAGS
unset CXXFLAGS
安装好后:
source /etc/profile
安装 Fileutils-4.1
没有用patch,安装后,测试:
$LFS/static/bin/ls
正常
安装 GCC-3.2
unset CFLAGS
unset CXXFLAGS
安装后:
source /etc/profile
安装 Util-linux-2.11w
出了问题,不能编译。unset环境变量CFLAGS和CXXFLAGS后,就好了。
第六章
在这里设置优化参数:
chroot $LFS /static/bin/env -i \
HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin \
CC='gcc -s' \
CHOST="i686-pc-linux-gnu" \
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays" \
CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer -fforce-addr -falign-functions=4 -fprefetch-loop-arrays" \
/static/bin/bash --login
mount proc /proc -t proc
安装设备:
./MAKEDEV -v generic
安装 Glibc-2.2.5:
别忘了unset环境变量!安装好了以后,也不能设置,因为下一个包还是不能用优化。
安装完GCC-3.2后,可以再设置优化参数,我嫌麻烦,就退出chroot环境(退出前不要忘了umount /proc),然后再进入(也同样不要忘了mount proc),因为命令都是粘贴的,要方便很多。
安装Binutils-2.13
unset环境变量
安装完了以后,还是老办法,退出再进入。
安装 Net-tools-1.60
用缺省的设置
没有装bin86和lilo
安装 Util-linux-2.11w
出了问题,不能编译。unset环境变量CFLAGS和CXXFLAGS后,就好了。
一个小bug:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
没设置键盘
建/etc/fstab时,参数不一样了,见中文文档的第十章。
在编译内核时,又设置了优化参数,不过好像没什么用,它是用自己的参数编译的。颜色太难看了。
编译完内核后,就是设置grub了。我想用redhat的grub来引导系统,所以没有安装,直接把redhat下的两个文件拷贝过去了。
mkdir $LFS/boot/grub
cp /usr/share/grub/i386-pc/stage1 $LFS/boot/grub
cp /usr/share/grub/i386-pc/stage2 $LFS/boot/grub
然后在redhat中运行grub
grub
find /boot/grub/stage1
root (hd0,5)
setup (hd0)
quit
详细的可以看我写过的一篇文章,在中文文档的第十章里。
重启,进去了!
现在做最后的整理工作,看看空间,用了2.6G,我把/static/src和/usr/src里的文件都删了,只留下linux-2.4.19.tar.bz2,现在就只用了375M,如果减去/static的97M,那就只用了278M了。我为什么留着/static目录呢?因为一个/static可以编译很多的LFS,以后如果要再安装新版本的LFS,用旧的/static就行了,也就不用做第五章了。
然后再用strip,会出很多的错误,不管它,那是因为文件格式不认识,不会损坏你的系统的。现在更小了,才用了310-97=213M了!
OK,以后要装BLFS了。