用LFS6.3 liveCD 编译 LFS6.6
环境为Ubuntu 9.04
Virtualbox虚拟机,挂载lfs6.3 livecd开机,选择时区,语言等。
vim /etc/X11/xorg.con
修改"Screen"段
去掉"Modes" 行的注释,删除掉开关的"1280x1024",保留"1024x768"
这样进入桌面后就不会被虚拟机窗口占掉整个桌面。
startx启动GUI,先用浏览器打开lfs6.6的在线手册:
开一个终端,准备分区:
cfdisk /dev/hda
/dev/hda1 256M swap
/dev/hda2 7.8G xfs
分好区后进行格式化:
mkswap /dev/hda1
swapon /dev/hda1
mkfs.xfs /dev/hda2
export LFS=/mnt/lfs
mkdir -pv $LFS
mount /dev/hda2 $LFS
mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
cd $LFS/sources
wget wget-list
修改wget-list,将所有”ftp.gnu.org“替换为”gnu.mirror.iweb.com“,这是一个GNU镜像,在我这里速度还行,可以节省不少下载时间。
wget -c -i wget-list
wget将顺序从wget-list列表中下载所有需要的源码和补丁。
再开一个终端窗口,一边等待下载,一边做准备工作,一边安装下载好的包
export LFS=/mnt/lfs
mkdir -v $LFS/tools
ln -sv $LFS/tools /
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
su - lfs
------------------------------------
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
------------------------------------
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF
------------------------------------
source ~/.bash_profile
做完以上工作后,Binutils已经下载完成了。
5.4.Binutils-2.20 - Pass 1
------------------------------------
tar xvf binutils-2.20.tar.bz2
mkdir binutils-build
cd binutils-build
../binutils-2.20/configure \
--target=$LFS_TGT --prefix=/tools \
--disable-nls --disable-werror
make
在编译make Binutils的漫长时间里还有点准备要做,gcc4.4的编译需要宿主系统安装有mpfr和gmp,趁这个时间先照着wget-list里面的URL,把mpfr和gmp下载下来编译在宿主系统中(可惜宿主是livecd,一重启就恢复不见了,明天还得重新编译一次,恨!)。
再开一个终端
wget
wget
依次tar xvf && configure && make && make install 略过不表
装好后退出终端,看看另两个终端,gcc已经下载完了,binutils也已经make 完成,继续执行:
case $(uname -m) in
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac
make install
收尾。。。
5.5. GCC-4.4.3 - Pass 1
-------------------------------------
tar xvf gcc-4.4.3.tar.bz2
cd gcc-4.4.3
tar -jxf ../mpfr-2.4.2.tar.bz2
mv -v mpfr-2.4.2 mpfr
tar -jxf ../gmp-5.0.0.tar.bz2
mv -v gmp-5.0.0 gmp
mkdir -v ../gcc-build
cd ../gcc-build
../gcc-4.4.3/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
make
make install
ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
sed 's/libgcc/&_eh/'`
5.6. Linux-2.6.32.8 API Headers
--------------------------------------
tar xvf linux-2.6.32.8.tar.bz2
cd linux-2.6.32.8
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /tools/include
5.7. Glibc-2.11.1
--------------------------------------
tar xvf glibc-2.11.1.tar.bz2
mkdir glibc-build
cd glibc-build
case `uname -m` in
i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;;
esac
../glibc-2.11.1/configure --prefix=/tools \
--host=$LFS_TGT --build=$(../glibc-2.11.1/scripts/config.guess) \
--disable-profile --enable-add-ons \
--enable-kernel=2.6.18 --with-headers=/tools/include \
libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
make
make install
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 "New specs file is: $SPECS"
unset SPECS
5.9. Binutils-2.20 - Pass 2
--------------------------------------
cd $LFS/sources/binutils-build
因为刚才编译过一次,生成了一些文件,害怕会造成问题,先删掉再说
rm -rf *
再次configure:
CC="$LFS_TGT-gcc -B/tools/lib/" \
AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \
../binutils-2.20/configure --prefix=/tools \
--disable-nls --with-lib-path=/tools/lib
make
make install
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin
5.10. GCC-4.4.3 - Pass 2
----------------------------------------
这一步受挫,暂时卡在这里了,有两个error提示。。。
------------------------------------------
我忽然发觉象这样COPY LFS BOOK很没意思,本想着给自己做个备忘,以便以后查看,但是转念一想,还不如直接看BOOK。。。。
GCC的问题莫名其妙,我删除gcc-4.4.3和gcc-build目录,重新解压后pass了,没什么错误。后面的步骤没什么说的了。
一个问题是lfs6.3 livecd将硬盘识别为hda,而6.6的新内核将IDE硬盘和SATA硬盘都识别为sda,设置grub时没注意,照样写的是hdaX,导致重启后无法进入系统。
由于对新版的grub配置不熟悉,我干脆删掉了grub,下载了老版本的grub-0.97编译安装,再手工编辑menu.lst,OK了。
下一步》》》BLFS
阅读(1703) | 评论(0) | 转发(0) |