关于文件系统裁剪的几种常见方法与案例

在早期文件系统还没有现在这么庞大时,开发模式一般是自己使用busybox来构建最小文件系统,再通过交叉编译需要的软件包并移植到板子上。而现在几乎所有的芯片厂家都会提供一个包含文件系统的SDK,以便用户拿到demo板即可使用。

我的认知是文件系统怎么裁剪是与芯片厂家提供的SDK关联比较大的,目前了解到的有如下几种方式:

一、定制安装

使用busybox+软件移植、buildroot、yocto等方式自己构建文件系统,那么文件系统的大小则完全取决于自己需要哪些软件包/lib库,许多国产芯片厂家喜欢用Buildroot来进行管理,提供给客户的SDK就是一个buildroot包,那么这种方式进行文件系统裁剪再适合不过了(注:buildroot使用kconfig,在meuconfig时选中/取消即可管理软件包)。

buildroot使用参考:

官网:https://buildroot.org/docs.html

野火:https://embed-linux-tutorial.readthedocs.io/zh_CN/latest/building_image/using_buildroot.html

二、rpm、opkg裁剪

有的厂家只给一个文件系统,没有告知文件系统是如何构建的,或者我们不想用厂家提供的方式再重新构建一次文件系统(自己构建的话,若后期遇到bug,或许厂家就不愿提供技术支持了-_-~)。那我们可以在厂家给的文件系统基础上,看看其是否采用了opkg、rpm等包管理方式,比如我手中的一块开发板,执行opkg:

root:~# opkg list
adwaita-icon-theme-symbolic - 3.28.0-r0.46
arm-benchmarks - 1.3-r13.arago0.117
arm-compute-library - 19.08-r0.36
assimp - 3.3.1-r0.28
at - 3.1.20-r0.110
attr - 2.4.47-r0.621
gnu-config - 20180713+git0+30d53fc428-r0.45
gstreamer - 0.10.36-r2.30
......

可见它是使用opkg方式,执行opkg remove即可删除相关的软件/库,rpm同理。

If you do not wish to distribute GPLv3 components please remove
the above packages prior to distribution.  This can be done using
the opkg remove command.  i.e.:
    opkg remove <package>
Where <package> is the name printed in the list above

NOTE: If the package is a dependency of another package you
      will be notified of the dependent packages.  You should
      use the --force-removal-of-dependent-packages option to
      also remove the dependent packages as well

opkg使用参考博客:https://www.cnblogs.com/fppblog/p/12970725.html

三、手工删除

这种方法就比较原始也需要经验,容易误删、漏删。比如拿到一个文件系统,它既不采用buildroot等构建,也不采用rpm、opkg等包管理方式,不会自己构建文件系统的话,就只好采用这种原始方式来进行裁剪了。

这种方式参考博客:https://www.cnblogs.com/travelzero/p/11352358.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值