免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-01 22:43 |只看该作者 |倒序浏览

       
       
       
       
       
       
[color="#800000"]文件系统总结
[color="#800000"]终于得到一个不会提示出错的文件系统了,真郁闷。。还是从网上down了一个文件系统,在它的基础上修改。
[color="#800000"]最开始启动的时候出现了错误,再重启以后ls,cd等命令都可以用了。好像是刚开始启动的时候速度过慢的原因。
[color="#800000"]另外今天发现了一个问题,当不使用额外的Linuxrc脚本时,系统正确启动,而一旦增加了linuxrc脚本,
[color="#800000"]就出现找不到etc/init.d/rcS脚本以及很多错误提示,不知道这是什么原因?
[color="#800000"]虽然这个文件系统不完全是自己制作的,但在文件系统上花了我实在是太多的时间了。可能就是Linurc这个脚本问题一直导致出错!!
[color="#800000"]下面记录一下文件系统的制作过程。采用busybox1.9.2
动态库编译。
1
修改makefile
.主要还是改编译器路径。执行Make
menuconfig
Busybox
Settings  ­­­>
               
General
Configuration  ­­­>
                 
      

  • Support for devfs 这一项一定要选上
                   
    Build
    Options  ­­­>
                     
          []
    Build BusyBox as a static binary (no shared libs)
                     
                    /*

    busybox
    编译为静态连接,少了启动时找动态库的麻烦
    到目前为止 动态编译还没成功过*/
    [color="#ff0000"]如果选择静态库,那么就不用拷贝[color="#ff0000"]lib[color="#ff0000"]文件,但这样的话应用程序就不能运行了。*[color="#ff0000"]/
           
      选动态库。
                     
          

  • Do you want to build BusyBox with a Cross Compiler?
                     
          (/usr/local/arm/3.3.2/bin/arm­linux­)
    Cross Compiler prefix
                     
                        /*
    指定交叉编译工具路径
    */
                   
    Init
    Utilities  ­­­>
                     
             

  • init
                     
             

  • Support reading an inittab file
                     
                  /*
    支持
    init
    读取/etc/inittab
    配置文件,一定要选上
    */
                   
    Shells
    ­­­>
                   
    Choose
    your default shell (ash)  ­­­>
                     
                /*
    (X) ash 选中
    ash,这样生成的时候才会生成
    bin/sh
    文件
                     
                 *
    看看我们前头的
    linuxrc
    脚本的头一句:
                     
                 *
    #!/bin/sh 是由
    bin/sh
    来解释执行的
                     
                 */
                     
             

  • ash
    Coreutils
    ­­­>
                     
             

  • cp
                     
             

  • cat
                     
             

  • ls
                     
             

  • mkdir  
                     
             

  • echo (basic SuSv3 version taking no options)
                     
             

  • env
                     
             

  • mv
                     
             

  • pwd
                     
             

  • rm
                     
             

  • touch
    Editors
    ­­­>   
  • vi
    Linux
    System Utilities  ­­­>
                     
             

  • mount
                     
             

  • umount
                     
             

  • Support loopback mounts
                     
             

  • Support for the old /etc/mtab file
    Networking
    Utilities  ­­­>
                     
             

  • inetd
                     
                        /*
                     
                         *
    支持
    inetd
    超级服务器
                     
                         *
    inetd 的配置文件为/etc/inetd.conf
    文件,
                     
                         *
    "在该部分的
    4:
    相关配置文件的创建"一节会有说明
                     
                          */
    2
    得到install文件夹。下一步构建根文件系统的基本目录,采用脚本的方式,
    [color="#800000"]#!/bin/sh
      echo
    "makeing dir: bin dev etc lib proc sbin sys usr"
      mkdir
    bin dev etc lib proc sbin sys usr #8 dirs
      mkdir
    usr/bin usr/lib usr/sbin lib/modules
    #Don't
    use mknod, unless you run this Script as 节点要root用户才能建立。
    #
    mknod -m 600 dev/console c 5 1
      #mknod
    -m 666 dev/null c 1 3
      echo
    "making dir: mnt tmp var"
      mkdir
    mnt tmp var
      chmod
    1777 tmp
      mkdir
    mnt/etc mnt/jiffs2 mnt/yaffs mnt/data mnt/temp
      mkdir
    var/lib var/lock var/log var/run var/tmp
      chmod
    1777 var/tmp
    [color="#800000"]       
      echo
    "making dir: home root boot"
      mkdir
    home root boot
      echo
    "done"
    [color="#800000"]得到了基本目录以后,将install文件夹下的内容拷贝过来
    cp
    -a install/* /home/tangcong/working/share
    3
    这里不需要Linuxrc脚本,前面提到了老是出错。主要要创建是etc目录下的配置文件。
    tangcong@tangcong-laptop:~/working/share/etc$
    ls
    fstab
    gshadow  inittab    mtab    pointercal  shadow
    group
    init.d   mdev.conf  passwd  profile
    [color="#800000"]其中inittab,fstab,profile等内容基本差不多,还有init.d目录下的rcS脚本。可根据自己的需求修改。
    [color="#800000"]inittab中内容为:::sysinit:/etc/init.d/rcS
    ::respawn:-/bin/login
    ::restart:/sbin/init
    tty0::respawn:-/bin/login
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount
    -a -r
    ::shutdown:/sbin/swapoff
    -a
    [color="#800000"]fstab内容:
    proc        /proc                proc        defaults        0        0
    none        /tmp                ramfs        defaults        0        0
    none        /dev/pts        devpts        mode=0622        0        0
    tmpfs        /dev/shm        tmpfs        defaults        0        0
    [color="#800000"]sysfs        /sys                sysfs        defaults        0        0
    [color="#800000"]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"
    export
    LD_LIBRARY_PATH=/lib:/usr/lib
    #
    Set user path
    echo
    "Set user path"
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    export
    PATH
    #
    Set PS1
    [color="#800000"]#注意:ash
    除了SHELL变量外,支持\u、\h、\W、\$、\!、\n、\w
    、\nnn(ASCII字符对应的八进制数)
    [color="#800000"]#以及\e[xx;xxm
    (彩色特效)等等!
    [color="#800000"]#而且前面还要多加一个
    '\'!
    echo
    "Set PS1"
    export
    PS1="\\e[05;32m[$USER@\\w\\a]\\$\\e[00;34m"
    echo
    "Set ENV for tslib......"
    export
    TSLIB_ROOT=/lib/tslib
    export
    TSLIB_TSDEVICE=/dev/event0
    export
    TSLIB_CALIBFILE=/etc/pointercal
    export
    TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
    export
    TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
    export
    TSLIB_CONSOLEDEVICE=none
    export
    TSLIB_FBDEVICE=/dev/fb0
    export
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
    echo
    "/etc/profile Done!"
    #echo
    [color="#800000"]rcS内容:
    #!
    /bin/sh
    #!
    /bin/sh
    echo
    "----------mount all"
    /bin/mount
    -a
    echo
    "----------Starting mdev......"
    /bin/mount
    -t ramfs mdev /dev
    /bin/echo
    /sbin/mdev > /proc/sys/kernel/hotplug
    mdev
    -s
    echo
    "********************************************"
    echo
    " still learning"
    echo
    " Love Linux !  "
    echo
    "********************************************"
    [color="#800000"]然后将主机下的passwd,shadow,group文件拷过来。并修改成如下的形式。也可根据自己的需要来增加用户。
    Passwd
    root:x:0:0:root:/root:/bin/sh
    Shadow
    root::14379:0:99999:7::: 第一个冒号跟第二个冒号之间没有数字时表示不需要密码,按enter键可直接登录。
    Group
    root:x:0:root
    [color="#800000"]怎么增加用户?
    4
    拷贝库文件。将arm/3.4.1/arm-linux/lib目录下的文件拷过来
    一种简单的方法就是
    cp
    -a l*so* .的形式现将所有的文件都拷过来,再删除不需要的。不过libm
    libc libcrypt ld-linux-so是必须的。
    5
    最后就是一个权限问题。Chmod
    777 rcS就可以了。
    [color="#800000"]开发板上电启动,成功。接下来就移植qtopia,tslib,文件系统就先告一段落了。2009年6月26日唐聪于实验室记录。
                   
                   
                   

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

    本版积分规则 发表回复

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP