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

    关注

    70

    文章

    2120

    浏览量

    119368
  • rootfs
    +关注

    关注

    0

    文章

    19

    浏览量

    4632

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

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

收藏 人收藏

    评论

    相关推荐

    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

    Linux的文件系统特点

    Linux的文件系统特点 文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。 文件系统中也要有索引区,用来方便查找一个文件分成的多
    的头像 发表于 11-09 14:48 481次阅读
    Linux的<b class='flag-5'>文件系统</b>特点

    nfs挂载文件系统终于没有问题了

    eMMC镜像目录下的rootfs.tar.bz2到ubuntu的/home/elf/nfs_rootfs目录下。 2.解压文件系统: elf@ubuntu:~/nfs_rootfs$
    发表于 11-08 09:27

    嵌入式学习——ElfBoard ELF1板卡 重新打包文件系统的方法

    1.拷贝ELF1开发板资料包\\\\04-烧写镜像\\\\04-0 eMMC镜像目录下的rootfs.tar.bz2到开发环境下的任意目录,比如/home/elf。 2.创建存放目标文件系统的目录
    发表于 11-06 09:55

    i.MX6ULL——ElfBoard ELF1板卡 如何重新打包文件系统

    1.拷贝ELF1开发板资料包\\\\04-烧写镜像\\\\04-0 eMMC镜像目录下的rootfs.tar.bz2到开发环境下的任意目录,比如/home/elf。 2.创建存放目标文件系统的目录
    发表于 11-06 09:52

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

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

    谈谈什么是文件系统 文件系统的功能与特点

    文件系统的应用非常广泛,同时种类也是特别的多,并且不同平台也会使用不同性能和特点的文件系统,比如查找效率、数据安全等级等等,如下面windows使用的NTFS:
    发表于 08-30 09:50 1437次阅读
    谈谈什么是<b class='flag-5'>文件系统</b> <b class='flag-5'>文件系统</b>的功能与特点

    FATFS文件系统原版文件下载

    FATFS文件系统原版文件下载
    发表于 06-25 09:02 0次下载

    Linux proc文件系统详解

    上一篇:《文件系统有很多,但这几个最为重要》介绍了procfs(进程文件系统的缩写),包含一个伪文件系统(启动时动态生成文件系统),用于通
    发表于 06-15 11:42 778次阅读

    如何定制Buildroot文件系统-基于TQT507开发板

    Linux文件系统。 2.构建文件系统 2.1 使用默认配置 进行 buildroot 源码目录,直接复制现成的配置单。 cd buildroot/buildroot-201902cp
    发表于 06-01 09:03