查看: 3908|回复: 2

构建RioTboard linux根文件系统

[复制链接]
  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-6-18 22:47:35 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 bruce_helen 于 2014-6-18 22:57 编辑

    上次直接使用飞思卡尔的ltib工具编译生成的文件系统,这次我们自己从头到尾搭建一个文件系统。以此来熟悉linux平台下文件系统的构建。

    首先,大概了解一下linux根文件系统的目录:
    1. /bin目录
    /bin目录包含了引导启动所需的命令或者普通用户可能用的命令。这些命令都是二进制文件的可执行程序,多是系统中重要的系统文件。这些命令在挂接其他文件系统之前就可以使用。/bin目录下常用的命令有:cat、chmod、ls、cp、mount、mkdir等等。
    2. /sbin目录
    /sbin目录类似/bin,也用于存储二进制文件。大部分文件多是系统管理员使用的基本系统程序。常用命令有:shutdown、reboot、fdisk等等。
    3. /etc目录
    /etc目录存放着各种系统配置文件,包含系统初始化文件/etc/rc等。
    4. /dev目录
    /dev目录存放了设备文件,即设备驱动程序,用户通过这些文件访问设备。
    5. /lib目录
    /lib目录是根文件系统上程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含相同的子程序副本。
    6. /usr目录
    /usr是个很重要的目录,通常这一文件系统很大,因为所有程序安装在这里。
    7. /proc目录
    /proc文件系统是一个虚拟的文件系统,它并不存在于某个磁盘上,而是由内核产生,存储在内存中。这个目录提供关于系统的信息。
    8. /home目录
    用户目录
    9. /var目录
    /var目录包含系统一般运行时要改变的数据。
    10. /root目录
    /root目录是超级用户的目录。
    11. /mnt目录
    /mnt目录是系统管理员临时安装(mount)文件系统的安装点。
    12. /tmp目录
    /tmp目录存放程序在运行时产生的信息和数据。

    移植busybox
    busybox可以将许多常用Unix命令结合到一个单独的可执行程序中,因此,常常被形象的比喻为嵌入式系统中的“瑞士军刀”。
    http://www.busybox.net/下载最新源码,这里使用的是:
    20 January 2014 -- BusyBox 1.22.1 (stable)
    下载地址:http://busybox.net/downloads/busybox-1.22.1.tar.bz2
    新建一个目录busybox,这里路径为:/home/bruce/share/RIoTboard/busybox
    将上面下载的文件复制到busybox目录中。
    解压源文件:
    tar –jxf busybox-1.22.1.tar.bz2
    解压完成,在这个目录下会生成一个新目录busybox-1.22.1
    进入这个目录:
    cd busybox-1.22.1
    配置Busybox
    修改Makefile文件,将交叉编译器CROSS_COMPLIE的路径ARCH修改正确。在这里改为:(每个人的路径可能有差别)
    CROSS_COMPILE ?=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-
    ARCH ?= arm
    执行make menuconfig,出现如下配置界面
    1.png

    这里需要关注的是Linux Module Utilities-->
    2.png

    去掉Simplified modutils选项,选择下面的insmod、rmmod、lsmod等。这几个命令我们后面将GPIO LED时会用到,所有需要加上。
    3.png

    Exit退出,Yes保存配置。
    4.png
    回到命令行,输入make即可编译。几分钟后编译完成。
    5.png

    输入make install将busybox编译生成的文件安装到_install目录下。
    在_install目录下会生成如下目录和linuxrc文件。
    6.png

    为了方便,我们拷贝飞思卡尔的lib目录和etc目录。其他的手工建立即可。
    将建立好的目录放到rootfs文件夹下。最终建立的效果图如下。
    7.png
    最后将这些文件打包使用Mfgtools下载即可。为了方便这里写了简单的脚本makefs,方便使用。注意脚本需要+x执行权限。
    8.png

    好了,执行脚本./makefs,生成rootfs.tar.bz2文件。将这个rootfs.tar.bz2文件使用上次讲的方法下载到RioTboard中。
    下图为脚本执行的输出。
    9.png

    启动效果图
    10.png
    内存使用和上次移植的差不多。

    好了,今天就到这里。下面分析RioTboard gpio-leds驱动程序并自己实现led驱动程序。敬请期待。
    makefs脚本
    makefs.7z (321 Bytes, 下载次数: 8)
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2014-6-19 06:58:45 | 显示全部楼层
    提供其他目录下载,lib目录是从飞思卡尔官方包里提取的。
    rootfs.tar.bz2.7z (9.27 MB, 下载次数: 17)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-7-27 17:16
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-7-2 16:41:40 | 显示全部楼层
    学习中,感谢分享

    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 23:34 , Processed in 0.146229 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.