免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 827 | 回复: 0
打印 上一主题 下一主题

制作根文件系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-30 16:19 |只看该作者 |倒序浏览

                                #!/bin/sh
BUSYBOX=/scratchbox/source2/busybox/busybox-1.1.2
COMPILER_PREFIX=/scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-
COMPILER_LIB=/scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/lib
if  test  "$1" = ""; then
    CLFS_ROOTFS_DIR=rootfs   
    echo "CLFS_ROOTFS_DIR=$CLFS_ROOTFS_DIR"
else
    CLFS_ROOTFS_DIR=$1
    echo "CLFS_ROOTFS_DIR=$CLFS_ROOTFS_DIR"
fi
echo "Create a standard directory tree. . ."
echo "The directory tree is based on the Filesystem Hierarchy Standard (FHS) (available at http://www.pathname.com/fhs/)"
echo "http://cross-lfs.org/view/clfs-sysroot/arm/final-preps/creatingdirs.html"
mkdir -pv ${CLFS_ROOTFS_DIR}/{bin,boot,dev,{etc/,}opt,home,lib}
mkdir -pv ${CLFS_ROOTFS_DIR}/mnt/{etc,jffs2,yaffs,tmp,gpephone,enlightenment}
mkdir -pv ${CLFS_ROOTFS_DIR}/{proc,media,sbin,srv,sys}
mkdir -pv ${CLFS_ROOTFS_DIR}/var/{lock,log,mail,run,spool}
mkdir -pv ${CLFS_ROOTFS_DIR}/var/{opt,cache,lib/{misc,locate},local}
install -dv -m 0750 ${CLFS_ROOTFS_DIR}/root
install -dv -m 1777 ${CLFS_ROOTFS_DIR}{/var,}/tmp
mkdir -pv ${CLFS_ROOTFS_DIR}/usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv ${CLFS_ROOTFS_DIR}/usr/{,local/}share/{doc,info,locale,man}
mkdir -pv ${CLFS_ROOTFS_DIR}/usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv ${CLFS_ROOTFS_DIR}/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}
for dir in ${CLFS_ROOTFS_DIR}/usr{,/local}; do
  ln -sfnv share/{man,doc,info} ${dir}
done
安装:busybox
http://busybox.net/downloads/busybox-1.9.0.tar.bz2
Busybox Settings --->
      Installation Options --->
           
  • Don't use /usr
               (/home/tekkamanninja/working/nfs/rootfs) BusyBox installation prefix
            Busybox Library Tuning  --->
               
  • Support for /etc/networks
               
  •    Additional editing keys     
               
  •    vi-style line editing commands   
               (15)  History size  
               
  •    History saving  
               
  •    Tab completion
               
  •      Username completion  
               
  •    Fancy shell prompts
    Login/Password Management Utilities  --->选项全部N掉,后面单独使用TinyLogin
    Linux Module Utilities  --->
          [N] Support version 2.2.x to 2.4.x Linux kernels
    Shells  --->
          ---   Ash Shell Options 下的选项全选
    [sbox-rootfs: /scratchbox/source2/busybox/busybox-1.9.0] > make
    [sbox-rootfs: /scratchbox/source2/busybox/busybox-1.9.0] > make PREFIX=/ install
    补充:
    在scratchbox中如果:make menuconfig 出现can't found -lncurse 那么请安装ncurse库
    ftp://invisible-island.net/ncurses/ncurses-5.5.tar.gz
    ./configure --prefix=$PREFIX --with-shared  --without-debug --without-ada --enable-overwrite
    安装:TinyLogin
    如果login的时候出现login: no valid shadow password 所以一定用下面的tinylogin
    http://tinylogin.busybox.net/downloads/snapshots/tinylogin-snapshot.tar.bz2
    指明tinyLogin使用自己的算法来处理用户密码
    vim Makefile
    USE_SYSTEM_PWD_GRP = false
    . . .
    CROSS =$COMPILER_PREFIX
    CC = $(CROSS)gcc
    AR = $(CROSS)ar
    STRIPTOOL = $(CROSS)strip
    或者直接
    export PATH=/usr/local/arm/arm-linux-gcc-3.4.4-glibc-2.3.5/bin/:$PATH
    make CROSS=arm-unknown-linux-gnu-
    sudo make PREFIX=/nfsroot/rootfs install
      /nfsroot/rootfs/bin/addgroup -> tinylogin
      /nfsroot/rootfs/bin/adduser -> tinylogin
      /nfsroot/rootfs/bin/delgroup -> tinylogin
      /nfsroot/rootfs/bin/deluser -> tinylogin
      /nfsroot/rootfs/bin/login -> tinylogin
      /nfsroot/rootfs/bin/su -> tinylogin
      /nfsroot/rootfs/sbin/getty -> ../bin/tinylogin
      /nfsroot/rootfs/sbin/sulogin -> ../bin/tinylogin
      /nfsroot/rootfs/usr/bin/passwd -> ../../bin/tinylogin
      /nfsroot/rootfs/usr/bin/vlock -> ../../bin/tinylogin
    创建修改必要的文件:
    cp  $BUSYBOX/examples/bootfloppy/etc/*   ${CLFS_ROOTFS_DIR}/etc/ -rv
    vim  ${CLFS_ROOTFS_DIR}/etc/profile
    ----------------------------------
    # /etc/profile: system-wide .profile file for the Bourne shells
    echo
    echo "Processing /etc/profile... "
    # no-op
    # Set search library path
    echo "Set search library path in /etc/profile"
    export LD_LIBRARY_PATH=/lib:/usr/lib
    # Set user path
    echo "Set user path in /etc/profile"
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    export PATH
    # Set PS1
    #注意:ash 除了SHELL变量外,支持\u、\h、\W、\$、\!、\n、\w 、\nnn(ASCII字符对应的八进制数)
    #以及\e[xx;xxm (彩色特效)等等!
    #而且前面还要多加一个 '\'!
    echo "Set PS1 in /etc/profile"
    export PS1="\\e[05;32m[$USER@\\w\\a]\\$\\e[00;34m"
    echo "Done"
    ----------------------------------
    修改初始化文件
    vim  ${CLFS_ROOTFS_DIR}/etc/inittab
    ----------------------------------
    ::sysinit:/etc/init.d/rcS
    ::respawn:-/bin/login
    ::restart:/sbin/init
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r
    ::shutdown:/sbin/swapoff -a
    ----------------------------------
    使用login登录,如果直接进入sh,那么修改
    ::respawn:-/bin/login -> ::respawn:-/bin/sh
    vim  ${CLFS_ROOTFS_DIR}/etc/fstab
    ----------------------------------
    proc /proc proc defaults 0 0
    none /tmp ramfs defaults 0 0
    mdev /dev ramfs defaults 0 0
    sysfs /sys sysfs defaults 0 0
    ----------------------------------
    修改初始化脚本
    vim  ${CLFS_ROOTFS_DIR}/etc/init.d/rcS
    ----------------------------------
    #! /bin/sh
    echo "------>mount all"
    /bin/mount -a
    echo "------>Starting mdev......"
    /bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
    mdev -s
    echo "********************************************************"
    echo " hfrk  s3c24xx rootfs (nfs)  "
    echo " Created by mohuifu 2008.04.30 "
    echo "********************************************************"
    -----------------------------------
    mount -a 命令挂载 etc/fstab 中设定的分区
    为mdev创建配置文件
    vim  ${CLFS_ROOTFS_DIR}/etc/mdev.conf
    内容可无,也可参照规则填写
    创建帐号以及密码文件
    sudo vim ${CLFS_ROOTFS_DIR}/passwd
    root:x:0:0:root:/root:/bin/sh
    mhf:x:1000:1001:mohuifu,,,:/home/mhf:/bin/sh
    sudo vim ${CLFS_ROOTFS_DIR}/group
    root:x:0:
    mhf:x:1000:
    sudo vim ${CLFS_ROOTFS_DIR}/shadow
    root:$1$.xuXaPSk$h2HawwCDectt5tZ4S7Lcz0:13908:0:99999:7:::
    mhf:$1$aKa/RuJp$TUF5UOgeiKXYfsq8MOgZe1:13754:0:99999:7:::
    拷贝必须的动态库文件
    cd  ${CLFS_ROOTFS_DIR}/lib
    cp -d  $COMPILER_LIB/ld* ./
    cp      $COMPILER_LIB/libc-2.3.5.so ./
    cp -d  $COMPILER_LIB/libc.so.6 ./
    cp      $COMPILER_LIB/libm-* ./
    cp -d  $COMPILER_LIB/libm.s* ./
    cp      $COMPILER_LIB/libcrypt-* ./
    cp -d  $COMPILER_LIB/libcrypt.s* ./
    拷贝可选的动态库文件
    如果需要域名解析:
    1)增加/etc/resolv.conf
    [root@lqm /etc]#cat resolv.conf
    nameserver 192.168.x.x  //加入域名解析器
    2)增加相应动态库的支持
    增加如下:
    libnss_files
    libnss_dns
    libresolv.so
    find find . -name "libnss*"  $COMPILER_LIB/
    ./libnss_files.so.2
    ./libnss_files.so
    ./libnss_dns-2.3.2.so
    ./libnss_dns.so
    ./libnss_files-2.3.2.so
    ./libnss_dns.so.2
    find . -name "libresolv*"  /scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/lib/
    ./libresolv.so
    ./libresolv.so.2
    ./libresolv-2.3.2.so
    参考文档:
    http://blog.chinaunix.net/u1/34474/showart_485837.html
    http://linux.chinaunix.net/techdoc/beginner/2008/03/25/987207.shtml
                   
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/49742/showart_653256.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP