查看: 257|回复: 0

i.MX6开发板学习笔记二——构建linux根文件系统

[复制链接]

主题

好友

5050

积分

状元

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

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-7-16 08:01:30 |显示全部楼层
    i.MX6开发板采用了飞思卡尔i.MX6四核处理器,大步迈入嵌入式linux——一款iMX6开发板简单介绍了上手体验。本文将介绍如何使用最新版busybox构建MY-I.MX6开发板的根文件系统。

    使用硬件
    MY-I.MX6 Demo开发平台
    使用软件
    linux Mfgtools 串口软件。
    正文
    飞思卡尔的ltib工具一条命令就可以编译出u-boot、kernel和文件系统,非常方便。但是ltib编译出的文件系统有许多我们不需要的东西,也为了更加深入了解linux根文件系统的组成,这里我们使用最新的busybox自己构建一个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 1.22.1
    busybox可以将许多常用Unix命令结合到一个单独的可执行程序中,因此,常常被形象的比喻为嵌入式系统中的“瑞士军刀”。
    https://www.busybox.net/下载最新源码,这里使用的是:
    20 January 2014 -- BusyBox 1.22.1 (stable)
    下载地址:https://busybox.net/downloads/busybox-1.22.1.tar.bz2
    新建一个目录busybox,这里路径为:/home/bruce/share/work/busybox
    将上面下载的文件复制到busybox目录中。
    解压源文件:
    tar –jxf busybox-1.22.1.tar.bz2
    解压完成,这时会在这个目录下会生成一个新目录busybox-1.22.1
    进入这个目录:
    cd busybox-1.22.1
    busybox-1.22.1目录中包含的文件较多,我们只需要修改Makefile进行交叉编译即可生成busybox应用程序。
    配置Busybox
    修改busybox-1.22.1目录下的Makefile文件,将CROSS_COMPLIE和ARCH修改为交叉编译器所在路径和arm。在这里改为:
    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,出现如下配置界面
    这里需要关注的是Linux Module Utilitiesà
    去掉Simplified modutils选项,选择下面的insmod、rmmod、lsmod等。这几个命令我们后面开发驱动程序会经常用到,所有需要加上。
    Exit退出,Yes保存配置。

    回到命令行,输入make即可编译。几分钟后即可完成编译。

    输入make install将busybox编译生成的相关文件安装到_install目录下。
    在_install目录下会生成如下目录和linuxrc文件。
    bin linuxrc sbin usr
    为了方便,这里我们直接拷贝飞思卡尔文件系统下的lib目录和etc目录。其他的手工建立即可。

    将建立好的目录放到/home/bruce/share/work/fs/rootfs文件夹下。最后将这些文件打包,使用Mfgtools下载即可。
    为了方便这里写了简单的脚本makefs,方便使用。注意脚本需要+x权限。
    chmod +x makefs
    好了,执行脚本./makefs,生成rootfs.tar.bz2文件。将这个rootfs.tar.bz2文件放到Mfgtoos下载目录下。
    上电启动效果图
    至此根文件系统构建完成。
    大步迈入嵌入式linux——一款iMX6开发板
    i.MX6开发板学习笔记一——Sqlite3数据库移植及测试
    回复

    使用道具 举报

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

    关闭

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

    手机版|电路城

    GMT+8, 2019-7-20 01:34 , Processed in 0.106186 second(s), 15 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部