天嵌 ARM开发社区

 找回密码
 注册
查看: 2346|回复: 1

建立自己的嵌入式文件系统

[复制链接]
luoqindong 发表于 2009-10-19 02:44:46 | 显示全部楼层 |阅读模式
本帖最后由 luoqindong 于 2009-10-19 02:59 编辑

最近用busybox1.15.2成功建立自己的文件系统,下面将我的步骤说一下:

开发环境:
开发板       :TQ2440
交叉编译器版 : 3.4.1_softfloat(天嵌自带的交叉编译器)
linux内核版本:2.6.13(天嵌移植好的内核)
busybox版本  :busybox-1.15.2.tar.bz2

下面是配置busybox几个要注意的地方:
Build Options:
  • Build BusyBox as a staitc binary
    (arm-linux-)Cross Compiler prefis

    Installation Options
  • Don't use /usr
    (/opt/EmbedSky/my_fs)BusyBox installation prefix

    Busybox Library Tuning
    下面是热心网友的解释:
    在制作文件系统的时候,会用到 /etc/profile,里面有PS1变量,一般为:
    PS1="[\u@\h \W]# "
    \u等特殊字符分别表示的是当前用户、主机名和当前目录。但是我制作完以后进入到系统,发现还是原样显示上述字符。
    网上找了半天没找到。
    后来一个同事帮我搞定了,原来是busybox的配置问题,分享一下:
    make menuconfig
    busybox settings->busybox library tuning->username completion、fancy shell prompts选上。


    Networking Utilities
    Enable status reporting output
    这个要选要,要不然ifconfig没有输出

    保存,执行:
    make
    make install
    会在 /opt/EmbedSky/下生成一个文件夹--my_fs,里面有:
    bin,sbin,linuxrc
    三个文件

    执行:mkdir dev etc home lib mnt opt proc root tmp usr var建立系统需要的文件夹
    执行:cp -f /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/arm-linux/lib/*so*  f /opt/EmbedSky/my_rf/lib  -a将库文件copy过来

    将/opt/EmbedSky/root_busybox/etc/init.d/rcS  copy到 my_rf对应的文件夹下自己屏蔽一些不要的内容,我的如下:

    #! /bin/sh

    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
    runlevel=S
    prevlevel=N
    umask 022
    export PATH runlevel prevlevel

    #
    #        Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
    #
    trap ":" INT QUIT TSTP
    #hwclock -s

    #SCSI modules

    #Charactor modules

    mknod /dev/pts/0 c 136 0
    #ln -s /dev/v4l/video0 /dev/video0
    #ln -s /dev/fb/0 /dev/fb0
    #ln -s /dev/vc/0 /dev/tty1
    #ln -s /dev/sound/dsp /dev/dsp
    #ln -s /dev/sound/mixer /dev/mixer
    #ln -s /dev/input/tsraw0 /dev/h3600_tsraw
    mount -t proc none /proc
    mount -t tmpfs none /tmp
    mount -t tmpfs none /var

    mkdir -p /var/lib
    mkdir -p /var/run
    mkdir -p /var/log

    /etc/rc.d/init.d/netd start
    /etc/rc.d/init.d/httpd start
    #/etc/rc.d/init.d/leds start

    #insmod /lib/s3c2440_camif.ko
    #insmod /lib/SKY2440_OV9650.ko

    ifconfig lo 127.0.0.1
    #route add default gw 192.168.1.2
    ifconfig eth0 192.168.1.6 up

    /bin/hostname -F /etc/sysconfig/HOSTNAME

    在/etc/sysconfig/文件夹下建立HOSTNAME文件,内容自定,里面的内容是主机名,我的是vin
    将/opt/EmbedSky/root_busybox/etc下的rc.d文件夹和profile copy到 /opt/EmbedSky/my_fs/etc下

    在my_rf/etc下建立inittab文件内容:
    ::sysinit:/etc/init.d/rcS
    ::askfirst:/sbin/getty 115200 console
    执行chmod 777 inittab修改权限

    在my_rf/dev下创建两个文件
    mknod console c 5 1
    mknod null c 1 3
    手动添加用户,下面是 --紫域风灵的博客--“用busybox制作根文件系统”一文的一个片断:
    需要在etc目录下增加passwd、group和shadow(在编译busybox时如果不选择shadow功能将不需要这个文件)3个文件。
    生成这3个文件的方法有:
    Ø        手动生成,按照格式规范自己编写内容;
    Ø        通过busybox提供的工具adderuser自动生成
    首先我们介绍一下如何手动添加。以增加root用户为例,增加passwd文件,其内容为:
    #cat passwd
    root:x:0:0:root:/root:/bin/sh
    同时,此时要确定root目录已经存在。
    passwd一共由7个字段组成,6个冒号将其隔开。它们的含义分别为:
    1     用户名
    2     是否有加密口令,x表示有,不填表示无,采用MD5、DES加密。
    3     用户ID
    4     组ID
    5     注释字段
    6     登录目录
    7     所使用的shell程序
    增加group文件,其内容为:
    #cat group
    root:x:0:
    Group一共由4个字段组成,3个冒号将其隔开,它们的含义分别为:
    1     组名
    2     是否有加密口令,同passwd
    3     组ID
    4     指向各用户名指针的数组

    我的只有两个文件:group和passwd,内容分别为:
    passwd:
    root::0:0:root:/root:/bin/sh
    group:
    root:x:0:
    用myyaffsimage /opt/EmbedSkly/my_rf/ /opt/EmbedSky/myroot.img生成img文件
    下载到TQ2440板上运行

    附件是busybox1.15.2的配置文件,下载后把.rar去掉,不是压缩文件,因为我不能直接上传没有扩展名的文件
  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×
    亚瑟王 发表于 2009-10-20 10:41:22 | 显示全部楼层
    呵呵,把自己做的经验写出来,很好很强大。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

    Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

    GMT+8, 2025-6-18 17:29 , Processed in 2.037506 second(s), 21 queries .

    Powered by Discuz! X3.5 Licensed

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表