原创 busybox1.9.2制作文件系统

2009-3-21 16:21 4041 3 3 分类: MCU/ 嵌入式

https://static.assets-stash.eet-china.com/album/old-resources/2009/3/20/c8e6fef7-1418-4c9b-a0e9-46ea85f80e37.rarhttps://static.assets-stash.eet-china.com/album/old-resources/2009/3/20/cf67ed6a-fdc9-430c-bc90-a4d5e526c6dd.rar-----------------创建rootfs文件夹-------------------
mkdir my_rootfs
cd my_rootfs
mkdir bin dev etc home lib mnt proc sbin sys tmp root usr var mnt/etc usr/bin usr/lib usr/sbin
touch linuxrc
tree
到系统/dev把所有的device打一个包,拷贝到dev下面(最省事的做法);或者使用mknod来自己建所需要的device, 举例:
# mknod -m 600 dev/console c 5 1
# mknod -m 666 dev/null c 1 3
# mknod dev/ttySAC0 c 204 64
# mknod dev/tty0 c 4 0


BusyBox-1.9.2版本
---------------------修改Makefile--------------------
ARCH  ?= arm
CROSS_COMPILE ?= arm-linux-
------------------修改编译配置选项--------------------
#make defconfig
#make menuconfig
BusyBox Settings --->
    Build Options ---> (采用静态编译)

  • Build BusyBox as a static binary (no shared libs)
    Install optin-->
  • Don't use /usr  //可以不选,选了则没有/usr文件夹
    Busybox Library Tuning --->
    (2) MD5: Trade Bytes for Speed
  • Faster /proc scanning code (+100 bytes)
  • Support for /etc/networks                                   │ │
  • Command line editing  
  • Additional editing keys
  • vi-style line editing commands
  • History saving
  • Tab completion
  • Username completion
  • Fancy shell prompts
    Linux Module Utilities --->
    [ ] Support version 2.2.x to 2.4.x Linux kernels  //不能选
  • Support version 2.6.x Linux kernels
    Linux System Utilities --->
       
  • Support for the old /etc/mtab file   //不确定
    Miscellaneous Utilities --->
       
  • devfs(obsolete) //不确定
       
  • Use devfs names for all device(obsolete) //不确定
    Shell ---> 
    Choose your default shell(ash)-->
    ---ash   //下面的选项全部选择


    -----------------------编译busybox-----------------------
    make install
    在busybox/_install 目录下会生成我们需要的文件。
    修改_install/bin/busybox 的属性。为4755
    chmod 4755 ./_install/bin/busybox
    必须要修改属性,否则在busybox 中很多命令会受限
    将编译好的busybox拷贝到/bin下面。拷贝时带上参数-arf或者-dpR。
    除了busybox外,所有其他的命令都是他的link
    /sbin下面也是busybox的link,
    /usr/bin下面也是busybox的link,
    /usr/sbin下面放着所有编译完的可执行文件,具体就不多说了
     非常重要之/lib,务必重视
    -----------------------/lib文件--------------------------------
    /lib的库其实就是进行busybox编译的库,即交叉编译器的库,我们这里使用的是3.4.1(位置/usr/local/arm/3.4.1)。
    # cd  /usr/local/arm/3.4.1/arm-linux/lib
    # for file in libc libcrypt libdl libm libpthread libresolv libutil
    > do
    > cp $file-*.so  rootfs/lib (复制到你做的文件系统的/lib目录下)
    > cp -d $file.so.[*0-9]  rootfs/lib
    > done
    # cp -d ld*.so*  rootfs/lib
    -----------------系统配置文件的建立---------------------
    --========/etc目录============
    (1)profile文件
    #Set search library path
    export LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
    #Set user path
            PATH="/bin:/sbin:/usr/bin:/usr/sbin:"$PATH
    alias ll='ls -l'
            #Set PS1
       USER="`id -un`"
       LOGNAME=$USER
       PS1='[\u@\h \W]\$ '
    PATH=$PATH
            export USER LOGNAME PS1 PATH
      
    (2)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


    (3)inittab文件
    ::sysinit:-/etc/init.d/rcS
    ::respawn:-/bin/sh
    ::ctrlaltdel:/bin/umount -a -r
    ::shutdown:/bin/umount -a -r
    ::shutdown:/sbin/swapoff -a


    (4)创建/etc/init.d文件夹和rcS,在rcS中添加
    #! /bin/sh
    #! /bin/sh
    echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"


    echo "^     Welcome to YAFFS root filesystem!   ^"


    echo "^                    Qiu                  ^"


    echo "^^^^^^^^^^^^^^^^09-3-18^^^^^^^^^^^^^^^^^^^^"
    /bin/hostname -F /etc/host
    # mount all filesystem defined in "fstab"


    ln -s /dev/vc/0 /dev/tty1


    echo "# mount all..........."
    /bin/mount -a


    echo "# Starting mdev........."
    #/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
    #mdev -s


    #/sbin/ifconfig lo 127.0.0.1
    #/sbin/ifconfig eth0 192.168.0.55
    #/sbin/route add default gw 192.168.0.1



    (5)host文件
    QIU


    (6)创建mdev.conf文件 (空文件)


    (7)复制主机/etc/下面的文件passwd, group, shadow 文件到/etc
    # cp /etc/group .
    # cp /etc/passwd .
    # cp /etc/shadow .


    修改passwd中用户使用的shell名称。FC6上默认的为bash,而vivi只支持ash。
    root:x:0:0:root:/root:/bin/bash -->root:x:0:0:root:/root:/bin/ash


    (8)修改各文件和文件夹的权限
    # chmod 755 /rootfs/etc/init.d/rcS
    # chmod 755 /rootfs/etc/host


    -------------yaffs文件系统映像的制作---------
    使用mkyaffsimg程序可以把一个目录做成一个yaffs映像文件,然后使用usb下载到板子上。进入文件系统目录层,使用以下命令。
    #mkyaffsimg rootfs rootfs.img
    这样就会在该目录下生成rootfs.img映像文件,下载到开发板运行即可。


    --------------cramfs文件系统映像的制作(cramfs压缩率比较高)------------
    在FTP中下载cramfs-1.1.tar.gz,解压到自己设定的目录下,如:
    tar xzvf cramfs-1.1.tar.gz –C /home/
    进入生成有mkcramfs文件的目录下(一定要进入此目录,否则会提示找不到该命令)
    输入命令:#./mkcramfs / rootfs rootfs.cramfs
    在当前目录下即生成rootfs.cramfs映像文件。到此Linux操作系统移植完毕。


     


     


     

  • PARTNER CONTENT

    文章评论0条评论)

    登录后参与讨论
    EE直播间
    更多
    我要评论
    0
    3
    关闭 站长推荐上一条 /3 下一条