есть ли способ запустить статистику хранилища в файловой системе, созданной yocto?

Я использовал Yocto для создания файловой системы, используя .bbappend из core-image-minimal. Два вопроса:

  1. как я могу выяснить, какой пакет занимает огромное место в корневой файловой системе?

    Я не могу придумать другого способа, кроме как заглянуть в ${D} каждого пакета и посмотреть, насколько велики его компоненты. Должен быть более систематический и разумный способ сделать это.

Из того, что я могу расшифровать из манифеста, нет ничего, что связано с размером включаемого пакета.

Кроме того, удаление некоторых пакетов, которые я добавил с помощью объекта IMAGE_INSTALL, кажется, удаляет пакет, но конечный результат построенного образа не показывает изменения его размера!!

  1. Я сравнил размер определенного .so на машине сборки и на установочном устройстве (VM) и обнаружил, что размер на установочном устройстве составляет 20-30% от исходного размера на машине сборки. Любое объяснение?

Спасибо!


person user3342339    schedule 26.01.2015    source источник


Ответы (2)


1) Один из способов - включить историю сборки, добавив следующее в local.con

INHERIT += "buildhistory"
BUILDHISTORY_COMMIT = "1"

Это создаст историю сборки каталога (git repo) в вашем $BUILDDIR. Там вы сможете найти, например.

images/$MACHINE/eglibc/$IMAGE/installed-package-sizes.txt

Этот файл даст вам размеры всех установленных пакетов.

Из истории сборки можно узнать гораздо больше, см. введение в историю сборки

2) Где вы сравнивали конкретный .so-файл? Если это было из пакета ${B} (т. е. там, где собрана библиотека), неудивительно, так как установленный .so-файл будет удален. Отладочная информация устанавливается в -deb.rpm (поскольку отладочная информация обычно бесполезна для цели, а меньший размер имеет гораздо большее значение).

person Anders    schedule 27.01.2015
comment
спасибо @Андерс. Я попробую подход buildhistory (который, кстати, у меня включен, но я не думаю, что он имеет какое-либо отношение к метрикам pkg). Кроме того, проверьте мой ответ относительно реальных сценариев, предоставленных yocto, для той же самой функции. - person user3342339; 27.01.2015

После того, как кто-то заглянул внутрь scripts/ subdir и немного погуглил о некоторых из существующих скриптов, оказалось, что хорошие люди из Yocto действительно имеют эти скрипты, правильно работающие из коробки: scripts/tiny/dirsize.py и ksize.py.

dirsize.py даст вам разбивку размеров pkg для ваших rootfs; в то время как ksize.py даст вам эквивалентную информацию для ядра.

person user3342339    schedule 27.01.2015
comment
Просто быстрый комментарий, scripts/tiny/dirsize.py, даст вам не размеры установленных пакетов, а размеры каталогов на ваших rootfs. Из этого вы, конечно, можете сделать вывод, какие пакеты отвечают за самые большие файлы... - person Anders; 28.01.2015
comment
@Anders O .. так будет ли предложенный вами подход к истории сборки, я получу размеры установленных пакетов? - person user3342339; 29.01.2015
comment
Конечно, в нем перечислены установленные пакеты и их размеры. Хотя подход, который вы нашли для себя, будет работать так же хорошо, когда дело доходит до сжатия вашей файловой системы. - person Anders; 29.01.2015