ОШИБКА SWupdate: не найдено подходящего изображения .swu.
Я новичок в eclipse hawkbit и SWupdate. Я пытался выполнить тестовую реализацию на RPi, прежде чем перейти к производственной реализации. У меня есть Hawkbit, но у меня есть несколько проблем с SWupdate, я создал «core-image-full-cmdline.wic» и образ обновления .swu вместе с ним: Это local.conf:
МАШИНА = "raspberrypi3"
IMAGE_FSTYPES += "wic"
RPI_USE_U_BOOT = "1"
KERNEL_IMAGETYPE = "uImage"
IMAGE_INSTALL_append = "модули ядра образа ядра"
#WKS_FILES_raspberrypi3 = "ts-raspberrypi.wks"
PREFERRED_PROVIDER_u-boot-fw-utils = "libubootenv"
DISTRO_FEATURES_append = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
ENABLE_UART = "1"
Я также получил эту ошибку, когда изменил IMAGE_FSTYPE с ext4 rpimg на wic:
ERROR: Logfile of failure stored in: /home/aswin/yocto/build/tmp/work/raspberrypi3-poky-linux-gnueabi/update-image/1.0-r0/temp/log.do_swuimage.87006
ERROR: Task (/home/aswin/yocto/layers/meta-swupdate-boards/recipes-extended/images/update-image.bb:do_swuimage) failed with exit code '1'
Поэтому мне пришлось изменить update-image.bb FSTYPE = ".wic"
И когда я прокомментирую это "#WKS_FILES_raspberrypi3 =" ts-raspberrypi.wks "" Затем прошейте образ на SD-карту и загрузите его, на самом деле ничего не отображается, кроме мигающей строки, но если я оставлю это, то файл .swu будет подходящим. слишком большой, чтобы загрузить его на hawkbit. Кто-нибудь еще сталкивался с этой проблемой, очень приветствуется небольшая помощь.
Спасибо
2 ответа
Протестировано с использованием версии, поэтому она по-прежнему актуальна в 2023 году и обобщает то, что я обнаружил при тестировании замены на rpi3B +.
Есть два вопроса, которые необходимо решить:
- Ожидаемое изображение и файловая система, созданная bitbake, неверны, и
- Ожидаемые пакеты, установленные в образе для правильной работы swapdate, отсутствуют.
1. Ожидаемое изображение
Уровень мета-обновления обновлений программного обеспечения предполагает, что образ, созданныйmeta-raspberrypi
поставляется в формате .ext4.gz, однако файловая система и образ по умолчанию находятся в формате .ext3.gz , поэтому при запуске «bitbake update-image» не удастся найти образ с правильным расширением, которое должно быть:
core-image-full-cmdline.ext4.gz
Эту проблему легко решить, добавив эти строки в файл conf/local.conf:
...
MACHINE ??= "raspberrypi3-64"
...
# Overwrite SDIMG_ROOTFS_TYPE in local.conf
SDIMG_ROOTFS_TYPE = "ext4.gz"
IMAGE_FSTYPES += " tar.bz2 ext4.gz wic.bz2 wic.bmap"
2. Ожидаемые пакеты
В предоставленном вами файле конфигурации вы уже включаете systemd в качестве менеджера инициализации, который необходим для Swupdate, чтобы иметь возможность загружаться при запуске.
В дополнение к этому, если вы обнаружили, что двоичные файлы и файлы swudate отсутствуют в вашей rootfs. Это означает, что swupdate не был автоматически добавлен в строку core-image-full-cmdline.
Для этого нам нужно «добавить» пакеты в строку core-image-full-cmdline. Внутриmeta-swupdate-boards
слой, добавьте или создайте файл
мета-swupdate-boards/recipes-extended/images/core-image-full-cmdline.bbappend
IMAGE_INSTALL += " \
swupdate \
swupdate-www \
"
3. Резюме
Ваш файл конфигурации в conf/local.conf должен содержать следующие строки:
...
MACHINE ??= "raspberrypi3-64"
...
# Overwrite SDIMG_ROOTFS_TYPE in local.conf
SDIMG_ROOTFS_TYPE = "ext4.gz"
IMAGE_FSTYPES += " tar.bz2 ext4.gz wic.bz2 wic.bmap"
PREFERRED_PROVIDER:u-boot-fw-utils = "libubootenv"
RPI_USE_U_BOOT = "1"
ENABLE_UART = "1"
# Notice that the new parsing : instead of _ is used
WKS_FILES:raspberrypi3 = "ts-raspberrypi.wks"
# Enable systemd as default init manager
DISTRO_FEATURES:append = " systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
и обновление должно быть добавлено к слою core-image-full-cmdline, как описано в пункте 2.
4. Тестирование
После того, как вы изменили файл local.conf, запустите в своей среде сборки команду:
bitbake core-image-full-cmdline
Затем,
изображение обновления bitbake
Вывод изображений
Для SD-карты
Нам нужны два файла wic.bz2 и wic.bmap для правильной записи на SD-карту с помощью инструмента bmap, мы можем проверить их в
jenkins@xbuilder:~/poky/build-rpi$ ls tmp/deploy/images/raspberrypi3-64/*.wic*
tmp/deploy/images/raspberrypi3-64/core-image-full-cmdline-raspberrypi3-64-20231123091223.rootfs.wic.bmap
tmp/deploy/images/raspberrypi3-64/core-image-full-cmdline-raspberrypi3-64.wic.bmap
tmp/deploy/images/raspberrypi3-64/core-image-full-cmdline-raspberrypi3-64-20231123091223.rootfs.wic.bz2
tmp/deploy/images/raspberrypi3-64/core-image-full-cmdline-raspberrypi3-64.wic.bz2
Файлы, не включающие дату, представляют собой просто символические ссылки.
Для изображений обновления программного обеспечения
Файлы с расширением .swu будут использоваться для загрузки в hawkbit.
jenkins@builder:~/poky/build$ ls tmp/deploy/images/raspberrypi3-64/*.swu
tmp/deploy/images/raspberrypi3-64/update-image-raspberrypi3-64-20231123091614.swu tmp/deploy/images/raspberrypi3-64/update-image-raspberrypi3-64.swu
Я проверил это, используяkirkstone
ветки во всех связанных метаслоях:
- мета-поки
- мета-raspberrypi
- мета-openembedded/мета-oe
- мета-замена
- мета-обмен-доски
Ваше здоровье,
Как вы ожидаете, что это будет работать, когда у вас есть ошибки совместимости HW, ошибки, связанные с повреждением файла JSON, забудьте на данный момент о hawkbit и попытайтесь увидеть, создает ли ваш файл описания sw правильный файл образа swu, который обновляет rootfs или что-то еще? хотите обновить с помощью веб-сервера mongoose и только потом переходить на hawkbit.
Сначала устраните ошибки, которые приходят до
подходящее изображение .swu не найдено
Отредактировано: также поместите файл описания sw, который вы используете для создания файла swu, для получения дополнительной помощи.