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

在早期文件系统还没有现在这么庞大时,开发模式一般是自己使用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同理。

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

三、手工删除

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

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

 

上一篇:A40i &T3 全源码编译-ARM Linux内核在PC Linux的编译方法


下一篇:buildroot编译文件系统,出现mount: you must be root. can't open /dev/console: Permission denied这种错误。