功能单一,体积小巧的LFS完整版5M大小的Apache

第二章 建立分区
  1、选择一个大小的分区
  目标系统虽然只有5M大小,但制作的工具链却比较的大,所以应当分配一个稍大一点的分区,否则可能会在制作过程中出现没有足够空间的错误。
  2、选择一个合适的文件系统
  虽然系统只有5M,但文件系统本身就会占据一定的空间,不同的文件系统占用的空间是不同的,因此文件系统占用的空间没有被算进目标系统的大小中,所以选择什么样的文件系统你可以自己决定。
  3、建立分区和文件系统
   a) 你可以用cfdisk或者fdisk来建立分区,这一步对磁盘具有破坏性,如果你不是很清楚怎么回事,请弄清楚后再进行,否则可能对你机器上的数据造成破坏。
   b) 使用mkfs.xxx来创建文件系统,当然这个文件系统必须让现在的内核以及将来建立的目标系统中的内核都能够进行识别才行,我使用的是xfs,因此我用mkfs.xfs来建立文件系统。
     mkfs.xfs /dev/hda1
  4、加载分区
    mkdir -p /mnt/lfs
    mount /dev/hda1 /mnt/lfs

第三章 软件包和补丁
  1、 软件包
   a) 按照LFS中的软件包准备
     i. GCC使用4.0.2
     ii. Glibc使用2.3.6
  2、 补丁
   a) LFS中相应补丁
   b) http://www.zdbr.net.cn/download/glib…ix-shy-1.patch (注意这个补丁很重要,我花了好长时间才做出来的。)

第四章 用户和环境
  1、 建立工具链目录
     export LFS=/mnt/lfs
     mkdir -p $LFS/sources
     mkdir -p $LFS/tools
     ln -s $LFS/tools /
  2、 建立用户
     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
  3、 设置用户环境
     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

第五章 制作工具链
  1. 进入源代码目录
     cd /mnt/lfs/sources
  2. binutils-2.16.1
     tar xvf binutils-2.16.1.tar.bz2
     mkdir binutils-build
     cd binutils-build
     ../binutils-2.16.1/configure –prefix=/tools –disable-nls
     make
     make install
     make -C ld clean
     make -C ld LIB_PATH=/tools/lib
     cd ..
  3. gcc4.0.2
     这里我们只需要C语言的部分就可以了
     tar xvf gcc-core-4.0.2.tar.bz2
     mkdir gcc-build
     cd gcc-build
     ../gcc-4.0.2/configure –prefix=/tools –with-local-prefix=/tools –disable-nls –enable-shared –enable-languages=c
     make bootstrap
     make install
     ln -vs gcc /tools/bin/cc
     cd ..
     rm -rf gcc-build
     rm -rf gcc-4.0.2
  4. linux-libc-headers-2.6.12.0
     tar xvf linux-libc-headers-2.6.12.0.tar.bz2
     cd linux-libc-headers-2.6.12.0
     cp -Rv include/asm-i386 /tools/include/asm
     cp -Rv include/linux /tools/include
     cd ..
     rm -rf linux-libc-headers-2.6.12.0
  5. glibc-2.3.6
     tar xvf glibc-2.3.6.tar.bz2
     cd glibc-2.3.6
     patch -Np1 -i ../ glibc-2.3.6-static-nss-fix-shy-1.patch
     mkdir ../glibc-build
     cd ../glibc-build
     ../glibc-2.3.6/configure –prefix=/tools –disable-profile –enable-add-ons –enable-kernel=2.6.0 –with-binutils=/tools/bin –without-gd –with-headers=/tools/include –without-selinux –enable-static-nss
     make
     mkdir -v /tools/etc
     touch /tools/etc/ld.so.conf
     make install
     cd ..
     rm -rf glibc-build
     rm -rf glibc-2.3.6
  6. 调整工具链
     cd binutils-build
     make -C ld install
     cd ..
     rm -rf binutils-build

     SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &&
     gcc -dumpspecs > $SPECFILE &&
     sed ‘s@^/lib/ld-linux.so.2@/tools&@g’ $SPECFILE > tempspecfile &&
     mv -vf tempspecfile $SPECFILE &&
     unset SPECFILE
  7. gcc第二遍
     tar xvf gcc-core-4.0.2.tar.bz2
     tar xvf gcc-g++-4.0.2.tar.bz2
     cd gcc-4.0.2
     cp -v gcc/Makefile.in{,.orig} &&
     sed ‘s@./fixinc.sh@-c true@’ gcc/Makefile.in.orig > gcc/Makefile.in
     cp -v gcc/Makefile.in{,.tmp} &&
     sed ‘s/^XCFLAGS =$/& -fomit-frame-pointer/’ gcc/Makefile.in.tmp > gcc/Makefile.in
    patch -Np1 -i ../gcc-4.0.2-specs-1.patch
    mkdir -v ../gcc-build
    cd ../gcc-build
    ../gcc-4.0.2/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
    make
    make install
  8. binutils-2.16.1第二遍
    tar xvf binutils-2.16.1.tar.bz2
    mkdir binutils-build
    cd binutils-build
    ../binutils-2.16.1/configure –prefix=/tools –disable-nls –enable-shared –with-lib-path=/tools/lib
    make
    make install
    make -C ld clean
    make -C ld LIB_PATH=/usr/lib:/lib
    cd ..
  9. 分支
    到此可出现一个分支,你可以选择其中之一进行下去。
    i. 分支(一):继续按照LFS中的步骤完成工具链中其它软件包的安装,然后进行目标系统的制作。
    ii. 分支(二):不需要继续制作工具链,直接开始目标系统的制作,不需要进行chroot的操作。
    这里我们按照分支(一),继续进行工具链的其它软件包的安装,安装过程参照LFS,这里不再说明。

第六章 制作目标系统
  1. 加载需要的文件系统
    mkdir -pv $LFS/{proc,sys}
    mount -vt proc proc $LFS/proc
    mount -vt sysfs sysfs $LFS/sys
    mount -vft tmpfs tmpfs $LFS/dev
    mount -vft tmpfs tmpfs $LFS/dev/shm
    mount -vft devpts -o gid=4,mode=620 devpts $LFS/dev/pts
  2. 进入工具链系统
    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 +h
  3. 设置目录属性
    chown -R 0:0 /tools
  4. 创建目标系统目录
    install -d /{bin,etc,dev,sbin,proc,sys,var/{lib,run},srv/{conf,htdocs,logs},boot/grub,tmp}
  5. 建立临时链接
    ln -sv /tools/bin/{bash,cat,pwd,stty} /bin
    ln -sv bash /bin/sh
  6. 建立目标系统组和用户
    cat > /etc/passwd << “EOF”
    root:x:0:0:root:/root:/bin/bash
    nobody:x:100:100:nobody:/home/nobody:/bin/bash
    EOF
    cat > /etc/group << “EOF”
    root:x:0:
    nobody:x:100:
    EOF
    exec /tools/bin/bash –login +h
  7. 创建/dev设备文件
    mknod -m 600 /dev/console c 5 1
    mknod -m 666 /dev/null c 1 3
    mknod -m 666 /dev/zero c 1 5
    mknod -m 666 /dev/ptmx c 5 2
    mknod -m 666 /dev/tty c 5 0
    mknod -m 444 /dev/random c 1 8
    mknod -m 444 /dev/urandom c 1 9
    chown -v root:tty /dev/{console,ptmx,tty}
    ln -sv /proc/self/fd /dev/fd
    ln -sv /proc/self/fd/0 /dev/stdin
    ln -sv /proc/self/fd/1 /dev/stdout
    ln -sv /proc/self/fd/2 /dev/stderr
    ln -sv /proc/kcore /dev/core
    mkdir -v /dev/pts
    mkdir -v /dev/shm
    mount -vt devpts -o gid=4,mode=620 none /dev/pts
    mount -vt tmpfs none /dev/shm
  8. 进入源代码目录
    cd /sources
  9. udev-0.76
    tar xvf udev-076.tar.bz2
    cd udev-076
    make EXTRAS=extras/run_directory
    ./udevstart
    cd ..
    rm -rf udev-076
  10. grub-0.97
    tar xvf grub-0.97.tar.bz2
    cd grub-0.97
    ./configure && make
    cp stage1/stage1 /mnt/lfs/boot/grub/
    cp stage2/xfs_stage1_5 /mnt/lfs/boot/grub/
    cp stage2/stage2 /mnt/lfs/boot/grub/
    grub/grub
      root (hd0,0)
      setup (hd0)
      quit
    cd ..
    rm -rf gurb-0.97
    cat > /boot/grub/menu.lst << “EOF”
    default 0
    timeout 10
    color green/black light-green/black

上一篇:一个学习perl的URL

下一篇:用cgi动态更改iptables规则

相关热门文章

  • 遇到两个煤炭电力价格挤压…
  • 企业高效办公之选 8500WN全能…
  • 高速免费上 轻松搞定 8500WN…
  • [游口皆碑]开年必看!2012最佳…
  • Win7下安装xp双系统-Windows7…
  • 承接自动化测试培训、外包、实…
  • Solaris PowerTOP 1.0 发布
  • For STKMonitor
  • 项目小体会
  • phpStudy 2010下载,PHP5开发…
  • 欢迎QuickLock在ChinaUnix博客…
  • 3. DB2 Control Center
  • 高性能服务器设计
  • parsley学习指南7-动态视图注…
  • RAID 技术经典解析

给主人留下些什么吧!~~ 评论热议

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年2月11日
下一篇 2013年2月12日

相关推荐