Сборка Bitbake занимает больше места

Недавно я начал использовать Bitbake для создания Yocto. Каждый раз, когда я строю, он занимает больше места, и в настоящее время у меня заканчивается место на диске. Изображения не перезаписываются. Набор новых файлов с отметкой времени создается для каждой сборки. Я удалил старые файлы из build/tmp/deploy/images/. Но это не имеет большого значения для свободного места на диске. Есть ли другие места, откуда я могу удалить материал?

Ошибка, которую я наблюдаю во время сборки:

WARNING: The free space of source/build/tmp (/dev/sda4) is running low (0.999GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
WARNING: The free space of source/build/sstate-cache (/dev/sda4) is running low (0.999GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
WARNING: The free space of source/build/downloads (/dev/sda4) is running low (0.999GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!

Пожалуйста, предложите несколько указателей, чтобы избежать этой проблемы.


person Gomu    schedule 10.10.2016    source источник


Ответы (2)


В порядке эффективности и простоты исправления:

  • Купите больше места на диске. Размещение $TMPDIR на отдельном SSD очень помогает и устраняет необходимость микроуправления.
  • Удалите $TMPDIR (build/tmp): старые образы, старые пакеты и рабочие каталоги/sysroots для МАШИН, которые вы в настоящее время не собираете, накапливаются и могут занимать довольно много места. Обычно вы можете просто время от времени удалять весь $TMPDIR: пока вы используете sstate-cache, следующая сборка должна быть довольно быстрой.
  • Удалить $SSTATE_DIR (build/sstate-cache): если вы выполняете много сборок, sstate со временем накапливается. Удаление каталога безопасно, но следующая сборка займет много времени, так как все будет перестроено.
  • Удалить $DL_DIR (сборка/загрузки): если вы используете каталог сборки в течение длительного времени (при загрузке обновлений из основной ветки или переходе на более новую ветку), устаревшие загрузки продолжают занимать место на диске. Имейте в виду, что удаление каталога будет означать повторную загрузку всего. Просмотр только самых больших файлов и удаление старых версий может быть здесь полезным компромиссом.
person Jussi Kukkonen    schedule 10.10.2016
comment
Большое спасибо! Удаление самого tempdir освободило примерно 32GB!!! И время сборки тоже не изменилось! - person Gomu; 13.10.2016
comment
Если вы идете по пути удаления, вы также можете попробовать добавить INHERIT += "rm_work" в файл конфигурации вашего проекта. Добавление этого оператора удаляет рабочий каталог, используемый для создания рецепта после его создания. - person Tanner; 01.12.2016

Есть несколько официальных способов вместо удаления.

Намеренно удаляя, вы можете вызвать ненужные сборки и загрузки. Некоторые элементы сборки могут не контролироваться bitbake, и вы можете оказаться в ситуации, когда вы не сможете легко пересобрать эти элементы.

С помощью этих рекомендаций вы можете превзойти неписаное правило 50 ГБ на сборку yocto:

Проверьте свою переменную IMAGE_FSTYPES. Мой опыт говорит, что безопасно удалять все изображения этих файлов, которые не являются символическими ссылками или целями символических ссылок. Избегайте последнего сгенерированного, чтобы избежать разрыва последней ссылки на сборку, а также любых связанных с загрузчиками и файлами конфигурации, поскольку они редко могут быть повторно сгенерированы.

Если вы храните более одной сборки с одним и тем же набором слоев, вы можете использовать общую папку загрузки для сборок.

DL_DIR ?= "common_dir_across_all_builds/downloads/"

А потом:

Чтобы ваш /deploy был чистым:

RM_OLD_IMAGE: освобождает место на диске, удаляя ранее созданные версии того же образа из каталога images, на который указывает переменная DEPLOY_DIR. Установите для этой переменной значение "1" в файле local.conf, чтобы удалить эти образы:

RM_OLD_IMAGE = "1"

IMAGE_FSTYPES Удалите типы изображений, которые вы не планируете использовать. Вы всегда можете включить конкретный тип, когда он вам понадобится:

IMAGE_FSTYPES_remove = "tar.bz2"

IMAGE_FSTYPES_remove = "rpi-sdimg"

IMAGE_FSTYPES_remove = "ext3"

Для /tmp/work не нужны все рабочие файлы всех рецептов. Вы можете указать, какие из них вас интересуют в вашей разработке.

RM_WORK_EXCLUDE: при включенном rm_work эта переменная указывает список рецептов, рабочие каталоги которых не следует удалять. Подробнее см. в разделе "rm_work.bbclass".

INHERIT += "rm_work"

RM_WORK_EXCLUDE += "home-assistant widde"

person urnenfeld    schedule 09.05.2019