利用busybox构造linux根文件系统

1.busybox概述

众所周知,在linux环境下一切都是文件,文件能表示一切。那么文件系统就是这些普通组件的集合。在嵌入式领域使用的文件系统,通常是基于busybox来构建的。
busybox从诞生至今已有近20年的历史,目前已经成为嵌入式行业主流的文件系统构建工具。

官网
https://busybox.net/

busybox的代码完全开源。进入到官网点击Get BusyBox下面的Download Source进入到源码下载界面。

2. busybox的配置及编译

下载源码之后将源码拷贝到编译环境中,在编译前需要对busybox进行配置,主要涉及三方面的内容:

  1. 编译工具链设置
  2. 编译模式设置
  3. 文件系统支持的功能
    前两项为必须完成的,而第三点根据用户自己的需求自行制定。执行make menuconfig进入到配置界面。

    编译工具链设置
    设定的交叉编译工具链要同kernel编译时使用的工具链一样,例如将交叉编译工具链设置为arm-linux-gnueabi-,则进入到build options中进行设置。

    当然,也可以进入到根目录下的Makefile文件中修改对应的交叉编译工具链以及平台信息等。

    编译模式设置
    设置编译出的镜像文件是静态还是动态的,若是动态编译,需要手动将交叉编译工具链下的lib库拷贝到最终的_install文件夹下面,反之则不需要。
    静态编译的配置如下,可以看到括号内的提示是不包含共享库。该项不使能则编译方式为动态的。

    设定文件系统功能
    busybox可以支持上百种命令行及其他功能,根据自己的需求可进行增减,例如增加devmem命令行,则勾选上对应的使能框。


    编译
    执行make、make install后,在编译路径下会生成_install文件夹,里面包含bin、sbin、usr等文件。查看刚添加的devmem命令,发现已经编译出来了。

    此时将busybox下编译出来的_install拷贝出来作为文件系统的基本框架,然后再增添文件系统其他必须的组件即可。

3.构建文件系统

将_install下的所有文件拷出并创建lib、etc文件夹,然后将交叉编译工具链arm-linux-gnueabi下的lib库拷贝到创建的lib文件夹下。


然后再依次创建home、opt、run、sys、var、boot、dev 、media、proc、tmp、usr
在这里插入图片描述
配置etc目录

  • 创建fstab文件
  • 创建inittab文件
  • 创建rcS文件
    在创建rcS文件前需要在etc目录下手动创建init.d文件夹,并在init.d文件夹下创建rcS。
    ![](https://img-blog.csdnimg.cn/img_convert/36eda058be93ab270f1c968071c3d841.png

至此,执行下面的命令,就可以打包生成一个最轻量级的文件系统了。

tar -jcvf rootfs.tar.bz2 *

4.文件系统验证

使用mfgtools将压缩好的rootfs.tar.bz2下载到mmc中,再次启动系统,可以看到制作的根文件系统已经可以正常工作,我们之前添加的devmem命令也可以正常执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux与SoC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值