根文件系统构建简介

参考文章:

引言

  Uboot、Kernel和根文件系统统称为嵌入式Linux开发中的三巨头,其中根文件系统由与前两者的开发的最大不同点在于:根文件系统的搭建对硬件平台的依赖很小,即可以用一套固定的根文件系统来整合的不同的硬件平台(编译时修改交叉编译器版本一致和硬件架构(Cortex-A7))。



根文件系统的构建方法

  busybox、buildroot和yocto是构建根文件系统常见的三种途径,其构建难度:busybox < buildroot < yocto。三种根文件的构建存在如下特点,yocto构建的根文件系统包含的库(Qt、OpenCV…)和工具链齐全,但同样也导致根文件系统过大,进而使得系统启动时间增加;busybox构建的根文件系统功能不齐全,很多东西需要自行添加,比如lib库文件、网络配置、命令等,比较繁琐,但占用硬盘空间小;Buildroot 构建根文件系统(需用到busybox),需通过网络下载配置中包含的压缩文件(放在buildroot/dl/目录),是对busybox的进一步完善。



项目中常用的构建方法

  嵌入式实际项目中,大多使用成本较低的nand flash作为存储器,由于硬盘空间宝贵,常使用busybox 和 buildroot来构建根文件系统,且需对编译后的根文件系统(20M左右)进一步裁剪。



根文件系统裁剪步骤

  1. 根文件系统主要占用空间的文件为 *.so 库文件,故先从库文件下手进行裁剪:

1. 查看库是否去除调试信息
# not stripped 表示包含的符号表和调试信息还未删除掉
file lib*.so 

2. 使用编译根文件系统的交叉编译器来处理库文件,把二进制文件中的包含的符号表和调试信息删除掉
# 库文件大小可大幅度减少
arm-linux-gnueabihf-strip  lib*.so

  2. 只拷贝所需的动态库到开发板:

1. 确定常用命令(ls、cp……)依赖哪些库文件
readelf –d ls		# 大部分依赖 libc.so.6 库文件

2. 确定应用程序和库文件依赖哪些库文件
readelf –d app.bin
readelf –d libapp.so


完善busybox构建根文件系统

  1. vim /etc/init.d/rcS

  2. vim /etc/inittab

  3. vim /etc/fstab

  4. vim /etc/networks/eth0-config

  busybox 功能验证:


在这里插入图片描述


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值