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
    +关注

    关注

    71

    文章

    2164

    浏览量

    121013
  • rootfs
    +关注

    关注

    0

    文章

    19

    浏览量

    4662

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

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

收藏 人收藏

    评论

    相关推荐

    Linux文件系统的挂载过程

    Linux文件系统rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第一个
    的头像 发表于 10-05 16:50 278次阅读

    如何构建Linux文件系统

    构建Linux文件系统是一个涉及多个步骤和概念的过程,它对于Linux系统的启动和运行至关重要。
    的头像 发表于 10-05 16:47 236次阅读

    小型文件系统如何选择?FatFs和LittleFs优缺点比较

    01  概述 文件系统在嵌入式系统中的作用不可或缺,它提供了对非易失性存储设备(如闪存、SD卡等)上的数据进行有效组织和管理的能力。通过文件系统,嵌入式系统可以像在传统计算机上一样创建
    的头像 发表于 09-29 16:14 1019次阅读
    小型<b class='flag-5'>文件系统</b>如何选择?FatFs和LittleFs优缺点<b class='flag-5'>比较</b>

    [2K300适配OpenharmonyV4.1]文件系统制作请教

    文件系统rootfs.img烧录到2k300上,烧录失败。对比2k300开源资料中的Openharmony 文件系统,该文件系统为ext4格式,但是2k500编译出来的为Ubifs
    发表于 09-11 11:18

    官方,buildroot文件系统支持gstreamer吗?

    问题: 查看释放的文件系统,发现rootfs\\\\usr\\\\lib\\\\qt\\\\plugins\\\\mediaservice\\\\目录,只有 没有类似下面的库 这样会导致在执行Qt
    发表于 08-19 09:10

    STM32MP157D使用buildroot生成文件系统时就无法正常显示,为什么?

    )时能正常显示,如下图,但是我自己使用buildroot生成文件系统时就无法正常显示了,使用\"echo test_heool > /dev/tty1\"屏幕无输出
    发表于 07-26 06:21

    如何修改buildroot和debian文件系统

    本文档主要介绍在没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目录等文件操作,在debian
    的头像 发表于 07-22 17:46 418次阅读
    如何修改buildroot和debian<b class='flag-5'>文件系统</b>

    linux--sysfs文件系统

    sysfs文件系统 sysfs,全称为System Filesystem,是一个由Linux内核实现的虚拟文件系统。它扮演着一个桥梁的角色,将内核中的设备和驱动程序信息以文件的形式呈现给用户空间
    的头像 发表于 07-08 11:37 721次阅读
    linux--sysfs<b class='flag-5'>文件系统</b>

    CubeMx可以生成FAT32的文件系统吗?

    大家好!MCU型号:STM32L476R 我测试发现 CubeMX 生成文件系统是 FAT16 的。请教一下,CubeMx 可以生成 FAT32 的文件系统吗? FAT16 最大只能
    发表于 04-19 07:11

    I.MX6ULL-飞凌 ElfBoard ELF1板卡- 重新打包文件系统发现ftp无法正常连接???

    rootfs.tar.bz2 run sbin sys tmp usr var 用 ls 查看,可以看到生成 rootfs.tar.bz2 压缩包,是可以烧写到开发板flash 中的文件系
    发表于 04-07 10:02

    嵌入式学习-飞凌ElfBoard ELF 1板卡 - 重新打包文件系统发现ftp无法正常连接

    rootfs.tar.bz2 run sbin sys tmp usr var 用 ls 查看,可以看到生成 rootfs.tar.bz2 压缩包,是可以烧写到开发板flash 中的文件系
    发表于 04-07 09:58

    在buildroot创建带qt的文件系统,宿主机的qt需要在什么位置?

    /QtEmbedded-4.8.5。然后将后者复制到目标板的相同目录里。这样宿主机编译完后,将生成的可执行文件放至目标板内就可以执行。 现在,我用buidroot生成了个带qt5的
    发表于 01-17 08:27

    【飞腾派4G版免费试用】3.手把手玩转制作rootfs文件系统

    你们一起玩转制作rootfs,也就是文件系统。但是别紧张,这不是那种会让你头大的编程问题,而是像在家里做蛋糕一样的简单有趣! 非常感谢第一篇文章【飞腾派4G版免费试用】1.实战交叉编译环境搭建和手把手
    发表于 01-09 10:49

    【飞腾派4G版免费试用】如何定制飞腾平台的ubuntu rootfs 文件系统(1)

    binfmt-support debootstrap 5 Ubuntu20.04文件系统制作 使用debootstrap 工具生成arm64 基础rootfs
    发表于 12-10 19:13

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

    由于工作人员的误操作,将Ext4文件系统误装入到存储中Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统。 由于Ext4
    的头像 发表于 12-04 10:49 421次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被误格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例