0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx VCU TRD生成的根文件系统比较大,如何优化rootfs的大小

YCqV_FPGA_EETre 来源:FPGA开发圈 作者:付汉杰 2020-10-10 16:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:付汉杰,hankf@xilinx.com,文章转载自:赛灵思中文社区论坛

01 介绍

Xilinx VCU TRD 集成了图像和视频编解码功能,生成的根文件系统比较大,2020.1的rootfs.cpio.gz大约有114MB。工程师可以根据自己需要裁剪,减少根文件系统大小。

在Ubuntu下,解压rootfs.cpio.gz,得到rootfs.cpio,再解压,得到就是文件了。

02 检查目录大小

使用du命令,可以检查各个文件夹的大小。

rootfs@rootfs$ du --max-depth=1 -h 4.0K./run 8.5M./lib 20K./home 4.0K./boot 4.0K./tmp 4.0K./sys 2.9M./bin 4.0K./mnt 312M./usr 112K./var 2.8M./opt 2.0M./etc 8.0K./media 4.0K./dev 4.0K./proc 2.0M./sbin 330M

也可以看更深的目录,排除占用空间小的目录。

rootfs@rootfs$ du --max-depth=2 -h | grep [0-9]M 3.1M./lib/modules 8.5M./lib 2.9M./bin 206M./usr/lib 22M./usr/bin 1.3M./usr/libexec 80M./usr/share 3.8M./usr/sbin 312M./usr 2.8M./opt/vcu_qt 2.8M./opt 2.0M./etc 2.0M./sbin 330M.

rootfs$ du --max-depth=2 -h | grep [0-9]M 5.9M./lib 2.9M./bin 18M./usr/lib 5.1M./usr/bin 6.2M./usr/share 3.3M./usr/sbin 33M./usr 2.0M./sbin 45M.

03 检查文件大小

目录大小有助于粗略的分析根文件系统大小。要找到真正的原因,并找到减小根文件系统大小,需要分析文件大小。

使用find命令,找到文件,再使用ls命令,查看文件大小;最后使用grep命令过滤出大文件。

rootfs$ find | xargs -n 1 ls -l -h | grep [0-9]M total 4.3M -rwxr-xr-x 1 hankf hankf 1.4M May 27 13:58 libc-2.30.so -rwxr-xr-x 1 hankf hankf 1.4M May 27 13:58 ./lib/libc-2.30.so total 2.9M -rwxr-xr-x 1 hankf hankf 1.2M May 27 14:07 bash.bash -rwsr-xr-x 1 hankf hankf 1.6M May 27 14:09 busybox -rwsr-xr-x 1 hankf hankf 1.6M May 27 14:09 ./bin/busybox -rwxr-xr-x 1 hankf hankf 1.2M May 27 14:07 ./bin/bash.bash total 105M -rwxr-xr-x 1 hankf hankf 1.1M May 27 14:07 libasound.so.2.0.0 -rwxr-xr-x 1 hankf hankf 1.2M May 27 05:01 libcairo.so.2.11600.0 -rwxr-xr-x 1 hankf hankf 2.5M May 27 14:04 libcrypto.so.1.1 -rwxr-xr-x 1 hankf hankf 1.3M May 27 05:00 libepoxy.so.0.0.0 -rwxr-xr-x 1 hankf hankf 1.9M May 27 14:11 libgio-2.0.so.0.6000.7 -rwxr-xr-x 1 hankf hankf 1.2M May 27 14:11 libglib-2.0.so.0.6000.7 -rwxr-xr-x 1 hankf hankf 1.8M May 27 14:13 libgnutls.so.30.24.0 -rwxr-xr-x 1 hankf hankf 1.3M May 27 14:20 libgstreamer-1.0.so.0.1601.0 -rwxr-xr-x 1 hankf hankf 7.2M May 27 05:06 libgtk-3.so.0.2404.4 -r-xr-xr-x 1 hankf hankf 3.0M May 27 14:11 libpython3.7m.so.1.0 -rwxr-xr-x 1 hankf hankf 1.9M May 27 05:27 libQt5Charts.so.5.13.2 -rwxr-xr-x 1 hankf hankf 6.3M May 27 05:18 libQt5Core.so.5.13.2 -rwxr-xr-x 1 hankf hankf 5.8M May 27 05:18 libQt5Gui.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.9M May 27 05:18 libQt5Network.so.5.13.2 -rwxr-xr-x 1 hankf hankf 4.9M May 27 05:23 libQt5Qml.so.5.13.2 -rwxr-xr-x 1 hankf hankf 4.9M May 27 05:23 libQt5Quick.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.1M May 27 05:26 libQt5WaylandClient.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.6M May 27 05:26 libQt5WaylandCompositor.so.5.13.2 -rwxr-xr-x 1 hankf hankf 6.8M May 27 05:18 libQt5Widgets.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.3M May 27 05:18 libQt5XcbQpa.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.5M May 27 14:10 libsamplerate.so.0.1.8 -rwxr-xr-x 1 hankf hankf 1.1M May 27 14:05 libsqlite3.so.0.8.6 -rwxr-xr-x 1 hankf hankf 1.8M May 27 14:02 libstdc++.so.6.0.27 -rwxr-xr-x 1 hankf hankf 1.5M May 27 14:08 libunistring.so.2.1.0 -rwxr-xr-x 1 hankf hankf 1.5M May 27 14:03 libvpx.so.6.1.0 -rwxr-xr-x 1 hankf hankf 1.3M May 27 14:07 libX11.so.6.3.0 -rwxr-xr-x 1 hankf hankf 1.4M May 27 14:14 libxml2.so.2.9.9 -r-xr-xr-x 1 hankf hankf 3.0M May 27 14:11 ./usr/lib/libpython3.7m.so.1.0 -rwxr-xr-x 1 hankf hankf 1.9M May 27 05:18 ./usr/lib/libQt5Network.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.5M May 27 14:10 ./usr/lib/libsamplerate.so.0.1.8 -rwxr-xr-x 1 hankf hankf 6.3M May 27 05:18 ./usr/lib/libQt5Core.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.5M May 27 14:08 ./usr/lib/libunistring.so.2.1.0 -rwxr-xr-x 1 hankf hankf 4.9M May 27 05:23 ./usr/lib/libQt5Quick.so.5.13.2 total 1.7M -rw-r--r-- 1 hankf hankf 1.7M Jul 15 17:32 libMali.so.9.0 -rw-r--r-- 1 hankf hankf 1.7M Jul 15 17:32 ./usr/lib/x11/libMali.so.9.0 -rwxr-xr-x 1 hankf hankf 1.1M May 27 05:26 ./usr/lib/libQt5WaylandClient.so.5.13.2 -rwxr-xr-x 1 hankf hankf 6.8M May 27 05:18 ./usr/lib/libQt5Widgets.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.2M May 27 05:01 ./usr/lib/libcairo.so.2.11600.0 total 1.7M -rw-r--r-- 1 hankf hankf 1.7M Jul 15 17:32 libMali.so.9.0 -rw-r--r-- 1 hankf hankf 1.7M Jul 15 17:32 ./usr/lib/headless/libMali.so.9.0 -rwxr-xr-x 1 hankf hankf 1.8M May 27 14:13 ./usr/lib/libgnutls.so.30.24.0 -rwxr-xr-x 1 hankf hankf 1.9M May 27 05:27 ./usr/lib/libQt5Charts.so.5.13.2 total 4.7M total 4.6M -rwxr-xr-x 1 hankf hankf 1.1M May 27 14:11 unicodedata.cpython-37m-aarch64-linux-gnu.so -rwxr-xr-x 1 hankf hankf 1.1M May 27 14:11 ./usr/lib/python3.7/lib-dynload/unicodedata.cpython-37m-aarch64-linux-gnu.so total 1.2M total 2.0M total 2.0M -rw-r--r-- 1 hankf hankf 1.4M May 27 14:11 pip-19.2.3-py2.py3-none-any.whl -rw-r--r-- 1 hankf hankf 1.4M May 27 14:11 ./usr/lib/python3.7/ensurepip/_bundled/pip-19.2.3-py2.py3-none-any.whl total 1.8M total 1.8M total 1.3M total 9.6M ls: cannot access './usr/lib/python3.7/site-packages/setuptools/script': No such file or directory ls: cannot access '(dev).tmpl': No such file or directory ls: cannot access './usr/lib/python3.7/site-packages/setuptools/command/launcher': No such file or directory ls: cannot access 'manifest.xml': No such file or directory total 2.3M total 1.1M total 1.1M -rwxr-xr-x 1 hankf hankf 1.3M May 27 05:18 ./usr/lib/libQt5XcbQpa.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.2M May 27 14:11 ./usr/lib/libglib-2.0.so.0.6000.7 -rwxr-xr-x 1 hankf hankf 1.9M May 27 14:11 ./usr/lib/libgio-2.0.so.0.6000.7 total 2.9M -rw-r--r-- 1 hankf hankf 2.9M Jul 15 17:38 locale-archive -rw-r--r-- 1 hankf hankf 2.9M Jul 15 17:38 ./usr/lib/locale/locale-archive -rwxr-xr-x 1 hankf hankf 4.9M May 27 05:23 ./usr/lib/libQt5Qml.so.5.13.2 total 1.4M total 1.1M -rwxr-xr-x 1 hankf hankf 1.1M May 27 14:05 ./usr/lib/libsqlite3.so.0.8.6 -rwxr-xr-x 1 hankf hankf 1.5M May 27 14:03 ./usr/lib/libvpx.so.6.1.0 -rwxr-xr-x 1 hankf hankf 1.8M May 27 14:02 ./usr/lib/libstdc++.so.6.0.27 -rwxr-xr-x 1 hankf hankf 2.5M May 27 14:04 ./usr/lib/libcrypto.so.1.1 -rwxr-xr-x 1 hankf hankf 1.6M May 27 05:26 ./usr/lib/libQt5WaylandCompositor.so.5.13.2 -rwxr-xr-x 1 hankf hankf 1.3M May 27 14:07 ./usr/lib/libX11.so.6.3.0 -rwxr-xr-x 1 hankf hankf 1.1M May 27 14:07 ./usr/lib/libasound.so.2.0.0 -rwxr-xr-x 1 hankf hankf 1.4M May 27 14:14 ./usr/lib/libxml2.so.2.9.9 -rwxr-xr-x 1 hankf hankf 1.3M May 27 05:00 ./usr/lib/libepoxy.so.0.0.0 -rwxr-xr-x 1 hankf hankf 1.3M May 27 14:20 ./usr/lib/libgstreamer-1.0.so.0.1601.0 total 1.7M -rw-r--r-- 1 hankf hankf 1.7M Jul 15 17:32 libMali.so.9.0 -rw-r--r-- 1 hankf hankf 1.7M Jul 15 17:32 ./usr/lib/fbdev/libMali.so.9.0 total 1.5M total 1.7M -rw-r--r-- 1 hankf hankf 1.7M Jul 15 17:32 libMali.so.9.0 -rw-r--r-- 1 hankf hankf 1.7M Jul 15 17:32 ./usr/lib/wayland/libMali.so.9.0 -rwxr-xr-x 1 hankf hankf 7.2M May 27 05:06 ./usr/lib/libgtk-3.so.0.2404.4 -rwxr-xr-x 1 hankf hankf 5.8M May 27 05:18 ./usr/lib/libQt5Gui.so.5.13.2 total 13M total 1.2M total 2.2M total 22M -rwxr-xr-x 1 hankf hankf 1.1M Jul 15 17:32 ctrlsw_encoder -rwxr-xr-x 1 hankf hankf 7.7M May 27 14:28 gdb -rwxr-xr-x 1 hankf hankf 2.2M May 27 05:03 Xorg -rwxr-xr-x 1 hankf hankf 2.2M May 27 05:03 ./usr/bin/Xorg -rwxr-xr-x 1 hankf hankf 1.1M Jul 15 17:32 ./usr/bin/ctrlsw_encoder -rwxr-xr-x 1 hankf hankf 7.7M May 27 14:28 ./usr/bin/gdb total 1.8M total 1.2M total 4.0M total 1.3M total 1.2M total 1.3M total 1.3M total 1.4M total 5.4M -rw-r--r-- 1 hankf hankf 5.4M May 27 14:08 magic.mgc -rw-r--r-- 1 hankf hankf 5.4M May 27 14:08 ./usr/share/misc/magic.mgc total 1.9M total 2.2M -rw-r--r-- 1 hankf hankf 2.2M May 27 05:17 libpnp_basictools.a -rw-r--r-- 1 hankf hankf 2.2M May 27 05:17 ./usr/share/examples/widgets/tools/plugandpaint/plugins/libpnp_basictools.a total 3.8M total 2.8M -rwxr-xr-x 1 hankf hankf 2.7M Jul 15 17:34 vcu_qt -rwxr-xr-x 1 hankf hankf 2.7M Jul 15 17:34 ./opt/vcu_qt/bin/vcu_qt total 2.0M

04 去掉不必要文件

根据上述找到的大文件,禁止不使用的软件包,就能减小根文件系统大小。

比如,在petalinux工程中,禁止下列软件包后,rootfs.cpio.gz从114MB,减小到16.4MB。下列内容是从

project-spec/configs/rootfs_config提取的。

# CONFIG_gdb is not set # CONFIG_gdbserver is not set # CONFIG_kernel-module-hdmi is not set # CONFIG_packagegroup-core-x11 is not set # CONFIG_packagegroup-petalinux-audio is not set # CONFIG_packagegroup-petalinux-gstreamer is not set # CONFIG_packagegroup-petalinux-matchbox is not set # CONFIG_packagegroup-petalinux-qt is not set # packagegroup-petalinux-v4lutils # CONFIG_packagegroup-petalinux-v4lutils is not set # CONFIG_packagegroup-petalinux-x11 is not set # CONFIG_trd-init is not set # CONFIG_vcu-gst-app is not set # CONFIG_custom-edid is not set # CONFIG_gst-shark is not set # CONFIG_gstreamer-vcu-examples is not set # CONFIG_vcu-qt is not set

责任编辑:xj

原文标题:【干货分享】优化rootfs的大小

文章出处:【微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Xilinx
    +关注

    关注

    73

    文章

    2192

    浏览量

    129975
  • rootfs
    +关注

    关注

    0

    文章

    20

    浏览量

    4905

原文标题:【干货分享】优化rootfs的大小

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    明晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,一次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件操作效率低下、镜像打包流程复杂、
    的头像 发表于 11-11 11:53 384次阅读
    明晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    睿擎派文件系统指南:从开发到发布全流程实践 | 技术解析

    在嵌入式系统开发中,文件系统扮演着至关重要的角色,它负责数据的持久化存储、配置文件管理和资源访问等核心功能。睿擎平台提供了一套完整的文件系统解决方案,从开发阶段的API调用到调试阶段的
    的头像 发表于 11-05 18:13 7710次阅读
    睿擎派<b class='flag-5'>文件系统</b>指南:从开发到发布全流程实践 | 技术解析

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为一名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1048次阅读

    【创龙TL3562-MiniEVM开发板试用体验】问题3 扩展ubuntu文件系统

    在ubuntu系统下,没放多少自定义的东西,报空间不够,原以为是内存不够,故换一个32G的SD卡作为文件系统(其实根本原因是rootfs.img镜像
    发表于 07-08 22:11

    飞凌嵌入式ElfBoard ELF 1板卡-busybox构建文件系统文件系统验证

    至此,我们已经完成了一个最小文件系统的构建,现在我们使用nfs将其挂载为网络文件系统,进行测试。开发板启动之后,在uboot阶段,修改bootargs环境变量。在mmcargs中进行修改:=&
    发表于 06-23 16:10

    飞凌嵌入式ElfBoard ELF 1板卡-busybox构建文件系统之Busybox编译

    下载进入busybox网址https://busybox.net/,下载最新版本busybox1.32.1。本人没有测试过该版本的稳定性,本教程主要讲解如何使用busybox构建文件系统,如果有同学
    发表于 06-19 17:23

    飞凌嵌入式ElfBoard ELF 1板卡-文件系统简介

    /服务器上Linux的文件系统是一样的,只是嵌入式Linux文件系统根据产品功能进行过裁剪,在内容多少和体积大小上不同。进行嵌入式Linux产品开发,构建一个合适的文件系统是不可或缺的
    发表于 06-19 17:22

    飞凌嵌入式ElfBoard ELF 1板卡-busybox构建文件系统之添加必要目录和库

    、添加启动文件在/busybox/examples/etc文件夹中存在有启动相关的文件,我们将该etc文件夹复制到我们创建的文件系统中:el
    发表于 06-19 17:20

    服务器数据恢复—ocfs2文件系统被格式化为Ext4文件系统的数据恢复案例

    服务器存储数据恢复环境&故障: 人为误操作将Ext4文件系统误装入一台服务器存储上的Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统
    的头像 发表于 06-10 12:03 563次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例

    如何为S32G3开发板生成fsl-image-auto-s32g399aevb3-20250209105410.rootfs.sdcard?

    rootfs 文件系统是 flash 文件系统,而不是 ramfs 文件系统。 如何配置内核以支持 ext4 文件系统
    发表于 04-10 07:23

    rootfs镜像制作其实没那么难

    在嵌入式Linux开发中,文件系统的打包和镜像制作是关键步骤。本文介绍了Linux核心板文件系统的打包与镜像制作方法,适合嵌入式开发人员快速上手。前言致远电子Linux核心板提供的系统固件里,除了
    的头像 发表于 04-03 11:37 904次阅读
    <b class='flag-5'>rootfs</b>镜像制作其实没那么难

    如何正确选择嵌入式文件系统

    Linux嵌入式系统中,文件系统和缓存机制常导致数据存储稳定性问题。本文通过案例分析原因,对比不同文件系统特性,为开发者提供优化建议,助力提升数据稳定性和
    的头像 发表于 03-17 11:35 868次阅读
    如何正确选择嵌入式<b class='flag-5'>文件系统</b>?

    在stm32cubeprogrammer上烧录时,取消勾选文件系统,烧录后发现sd卡上文件系统的分区没有了,为什么?

    在修改了linux内核后,我想只把bootfs烧录到sd卡上,而不擦除根文件系统的分区。 我在stm32cubeprogrammer上烧录时,取消勾选文件系统,烧录后发现sd卡上
    发表于 03-07 06:38

    NFS网络文件系统深度解析

    NFS:Network File System 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的
    的头像 发表于 03-01 14:15 1177次阅读

    防止文件系统破坏,OverlayRootfs 让你的设备更安全

    OverlayRootfs介绍OverlayRootfs是指利用OverlayFS技术创建的文件系统(rootfilesystem)。OverlayFS是一种联合文件系统(UnionFS),允许将
    的头像 发表于 01-08 16:33 2463次阅读
    防止<b class='flag-5'>根</b><b class='flag-5'>文件系统</b>破坏,OverlayRootfs 让你的设备更安全