浏览 8597 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-10
最后修改:2010-05-21
1. 你可能需要一张LFS live CD,或者预装任何一种带GCC的linux来作为开发安装环境,我用的Live CD版本是6.3 R2145,你可以看到,其实你可以用任何一个LFS的live cd,因为我们大部分东西都是从网络上获得,和LFS live cd没多大关系。你也可以从任何一款带有GCC的linux开始这段旅程。 2. Virtual Box,设置为:内存256,硬盘10G,如果你采用linux作为开发环境,则应该设置2个硬盘,每个10G,并在其中之一上安装带gcc的linux。 3. Virtual Box 网络链接通畅。 综述 简单来看,从头创建自己的linux分为三个步骤:
让我们开始吧. 设置系统从Live CD(或从linux硬盘) 启动,,在启动过程中会出现选择时区等信息,你可以按照实际情况选择,也可以按照默认选择,简单点就是等待一会系统会自动进行选择。这里我选择时区为Asia/Shanghai,选择本地语言为Chinese (Simplified, UTF-8),其它的都按默认选择了。 假设现在你已经到了linux的shell提示符下了: 一、 创建硬盘分区 我们需要在硬盘上进行编译工作,所以首先要创建硬盘分区: cfdisk /dev/hda //设置分区大小后 mkfs.xfs /dev/hda1 mkswap /dev/hda2 我将/dev/hda1设置为linux分区,/dev/hda2 设置为swap分区,重启以保证分区能正常使用。 二、 将硬盘分区挂载在/mnt/lfs目录下 export LFS=/mnt/lfs mkdir -pv $LFS mount /dev/hda1 $LFS 三、 创建工作目录: sources和tools mkdir -v $LFS/sources chmod -v a+wt $LFS/sources mkdir -v $LFS/tools ln -sv $LFS/tools / chmod a+wt是将目录或文件的属性设置为1777,这样任何人都可以对其进行读写,同时创建$LFS/tools的链接,设置为/tools,以方便后面的引用。 四.创建工作组和用户lfs,同时授权 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 五、 登录成lfs用户 '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 PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL PATH EOF source ~/.bash_profile 这些基本和网上介绍的差不多,每次从live-cd启动,都要重复上述步骤,谁叫咱是从CD启动呢,为了方便起见,你象我一样把这些命令写成shell script。每次调用一下就好。 创建临时编译环境 因为我不喜欢用旧版本的东西,所以LFS CD现在对我就没用处了。我维护了一个简单的脚本,用它可以下载最新的源代码: wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.65.tar.bz2 wget http://ftp.gnu.org/gnu/automake/automake-1.11.1.tar.bz2 wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz wget http://ftp.gnu.org/gnu/binutils/binutils-2.20.1.tar.bz2 wget http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.bz2 wget http://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.4.tar.gz wget http://ftp.gnu.org/gnu/dejagnu/dejagnu-1.4.4.tar.gz wget http://ftp.gnu.org/gnu/diffutils/diffutils-2.9.tar.gz wget http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.10.tar.gz wget http://expect.nist.gov/src/expect-5.43.0.tar.gz wget ftp://ftp.astron.com/pub/file/file-5.04.tar.gz wget http://ftp.gnu.org/gnu/findutils/findutils-4.4.2.tar.gz wget http://prdownloads.sourceforge.net/flex/flex-2.5.35.tar.bz2 wget http://ftp.gnu.org/gnu/gawk/gawk-3.1.7.tar.bz2 wget http://ftp.gnu.org/gnu/gcc/gcc-4.5.0/gcc-4.5.0.tar.bz2 wget http://ftp.gnu.org/gnu/gdbm/gdbm-1.8.3.tar.gz wget http://ftp.gnu.org/gnu/gettext/gettext-0.17.tar.gz wget http://ftp.gnu.org/gnu/glibc/glibc-2.11.1.tar.bz2 wget http://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2 wget http://ftp.gnu.org/gnu/grep/grep-2.5.4.tar.bz2 wget http://ftp.gnu.org/gnu/groff/groff-1.20.1.tar.gz wget ftp://alpha.gnu.org/gnu/grub/grub-1.97.2.tar.gz wget http://ftp.gnu.org/gnu/gzip/gzip-1.4.tar.gz wget http://sethwklein.net/iana-etc-2.30.tar.bz2 wget http://ftp.gnu.org/gnu/inetutils/inetutils-1.7.tar.gz wget http://developer.osdl.org/dev/iproute2/download/iproute2-2.6.33.tar.bz2 wget http://ftp.altlinux.com/pub/people/legion/kbd/kbd-1.15.1.tar.gz wget http://www.greenwoodsoftware.com/less/less-436.tar.gz wget http://www.linuxfromscratch.org/lfs/downloads/development/lfs-bootscripts-20100124.tar.bz2 wget http://ftp.gnu.org/gnu/libtool/libtool-2.2.6b.tar.gz wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.tar.bz2 wget http://ftp.gnu.org/gnu/m4/m4-1.4.14.tar.bz2 wget http://ftp.gnu.org/gnu/make/make-3.81.tar.bz2 wget http://download.savannah.gnu.org/releases/man-db/man-db-2.5.7.tar.gz wget http://www.kernel.org/pub/linux/docs/manpages/Archive/man-pages-3.24.tar.bz2 wget http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.11.1.tar.bz2 wget http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2 wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.7.tar.gz wget http://ftp.gnu.org/gnu/patch/patch-2.6.1.tar.bz2 wget http://cpan.org/src/5.0/perl-5.10.1.tar.bz2 wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz wget http://procps.sourceforge.net/procps-3.2.8.tar.gz wget http://prdownloads.sourceforge.net/psmisc/psmisc-22.10.tar.gz wget http://ftp.gnu.org/gnu/readline/readline-6.1.tar.gz wget http://ftp.gnu.org/gnu/sed/sed-4.2.1.tar.bz2 wget ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow/shadow-4.1.4.2.tar.bz2 wget http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.tar.gz wget ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/sysvinit-2.86.tar.gz wget http://ftp.gnu.org/gnu/tar/tar-1.22.tar.bz2 wget http://prdownloads.sourceforge.net/tcl/tcl8.5.8-src.tar.gz wget http://ftp.gnu.org/gnu/texinfo/texinfo-4.13a.tar.gz wget http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-151.tar.bz2 wget http://www.linuxfromscratch.org/lfs/downloads/development/udev-config-20100128.tar.bz2 wget http://www.kernel.org/pub/linux/utils/util-linux-ng/v2.17/util-linux-ng-2.17.1.tar.bz2 wget ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2 wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz wget http://www.zlib.net/zlib-1.2.3.tar.bz2 另一个脚本则用来下载LFS提供的一些补丁 wget http://www.linuxfromscratch.org/patches/lfs/development/bash-4.1-fixes-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/bison-2.4.2-gcc-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/bzip2-1.0.5-install_docs-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/coreutils-8.4-i18n-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/coreutils-8.4-uname-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/expect-5.43.0-spawn-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/expect-5.43.0-tcl_8.5.5_fix-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/flex-2.5.35-gcc44-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/gcc-4.5.0-startfiles_fix-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/gettext-0.17-upstream_fixes-2.patch wget http://www.linuxfromscratch.org/patches/lfs/development/glibc-2.11.1-gcc_fix-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/kbd-1.15.2-backspace-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/make-3.81-upstream_fixes-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/patch-2.6.1-test_fix-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/perl-5.12.0-libc-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/procps-3.2.8-watch_unicode-1.patch wget http://www.linuxfromscratch.org/patches/lfs/development/tar-1.23-overflow_fix-1.patch 感谢LFS工程师的努力工作,他们不断维护着这些补丁。 接下来我们开始编译我们的临时环境,因为只是为最终的目标作一个过渡,我们不打算对编译过程作任何优化,优化的过程留在真正创建我们的linux时候再做。 下面我们逐一编译所需的编译工具。 1. Binutils:包括连接器、汇编器和其他处理目标文件(ojb)的工具。 mkdir -v ../binutils-build cd ../binutils-build ../binutils-2.20.1/configure \ --target=$LFS_TGT --prefix=/tools \ --disable-nls --disable-werror make case $(uname -m) in x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;; esac make install 2.GCC编译器,GCC 4.4依赖2个包:gmp和mpfr,而最新的GCC 4.5还需要一个mpc,依次下好这些浮点运算包。 继续编译gcc-4.3.3,按照LFS站点的方法总是报错:cannot computer suffix of the obejct,搞得我很苦恼,经过一天的troubleshooting,用以下方法可以解决: LDFLAGS='-L/tools/lib -R/tools/lib' 或者 LD_RUN_PATH=/tools/lib LD_LIBRARY_PATH=/tools/lib export LDFLAGS LD_LIBRARY_PATH LD_RUN_PATH CC="gcc -B/usr/bin/" ../gcc-4.3.3/configure --prefix=/tools \ --with-local-prefix=/tools --disable-nls \ --disable-shared --enable-languages=c,c++ --with-gmp=/tools --with-mpfr=/tools make bootstrap make install 现在可以去喝咖啡了。。。。全部gcc的语言stage 3编译完成大概需要两个半小时,好好享受咖啡的味道吧。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-10
继续 搬凳子等着呢.
|
|
返回顶楼 | |
发表时间:2009-03-10
>>每次编译成功后清除工作目录是个好习惯
解释一下? |
|
返回顶楼 | |
发表时间:2009-03-10
最后修改:2009-03-10
seen 写道 >>每次编译成功后清除工作目录是个好习惯
解释一下? 俺原来的目录有gcc-4.1.2的source code,编译gcc-4.3.3的时候发现有config.log里发现call到gcc-4.1.2的东西,所以为了保险起见还是清理到不要的内容为好。 |
|
返回顶楼 | |
发表时间:2009-03-10
还是技术流的好啊,吹水流啥都做不好。
|
|
返回顶楼 | |
发表时间:2009-03-10
看不懂写什么
|
|
返回顶楼 | |
发表时间:2009-03-10
看不懂,~~
友情赞助下~~ 回头学习去了 |
|
返回顶楼 | |
发表时间:2009-03-11
好漫長的一天
|
|
返回顶楼 | |
发表时间:2009-03-11
用LINUX很容易伤自尊
|
|
返回顶楼 | |
发表时间:2009-03-11
咖啡伤胃,戒了
|
|
返回顶楼 | |