Шаг за шагом узнайте, как использовать swupdate на Raspberry Pi или на любой встроенной плате для обновления системы. - PullRequest
1 голос
/ 17 марта 2020

Сообщество Stackoverflow. Я пытаюсь создать систему обновления OTA и хотел бы использовать swupdate для обновления Raspberry Pi. Я нашел очень ограниченную информацию о том, как это осуществить. Было бы здорово, если бы кто-нибудь мог дать мне знать, как это делается. Спасибо

1 Ответ

1 голос
/ 22 марта 2020

Вот хороший пример использования OTA SWUpdate на Raspberry Pi. https://mkrak.org/2018/01/26/updating-embedded-linux-devices-part2/

Мне пришлось внести несколько изменений, чтобы использовать последнюю версию Zeus. Ниже приведены пошаговые команды на Ubuntu 18.04. (Это всегда работало с главной веткой по состоянию на 22-2020).

Установите все необходимые зависимости. (сценарий установки ниже https://medium.com/@shantanoodesai / run- docker -on-a-raspberry-pi-4-with-yocto-project-551d6b615c0b )

sudo apt-get update
sudo apt-get install \
     gawk wget git-core diffstat unzip texinfo gcc-multilib \
     build-essential chrpath socat cpio \
     python python3 python3-pip python3-pexpect \
     xz-utils debianutils iputils-ping \
     python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev

Клонировать все мета-слои

mkdir yocto && cd yocto
mkdir layers && cd layers
git clone git://git.yoctoproject.org/poky -b zeus
git clone git://github.com/openembedded/meta-openembedded.git -b zeus
git clone https://github.com/agherzan/meta-raspberrypi.git -b zeus
git clone https://github.com/sbabic/meta-swupdate -b zeus

git clone https://github.com/sbabic/meta-swupdate-boards.git -b master

cd ..
. layers/poky/oe-init-build-env build

Добавление слоев. Если это не удается, измените build / conf / bblayers.conf вручную, чтобы включить все слои, указанные ниже

bitbake-layers add-layer ../layers/meta-openembedded/meta-oe
bitbake-layers add-layer ../layers/meta-openembedded/meta-python
bitbake-layers add-layer ../layers/meta-openembedded/meta-networking
bitbake-layers add-layer ../layers/meta-openembedded/meta-multimedia
bitbake-layers add-layer ../layers/meta-raspberrypi
bitbake-layers add-layer ../layers/meta-swupdate
bitbake-layers add-layer ../layers/meta-swupdate-boards

Добавьте следующее в build / conf / local.conf (Raspberry pi по умолчанию не использует загрузчик uboot . swupdate требует изображения ext4.gz.)

RPI_USE_U_BOOT = "1"
IMAGE_FSTYPES = "rpi-sdimg ext4.gz"
PREFERRED_PROVIDER_u-boot-fw-utils = "libubootenv"

Теперь наконец запекаем его. meta-swupdate -boards содержит пример для нескольких аппаратных средств. Мне удалось скопировать реализацию платы raspberrypi3 для поддержки raspberrypi2.

MACHINE=raspberrypi3 bitbake update-image

Это должно создать файлы core-image-full-cmdline-raspberrypi3.rpi-sdimg и update-image-raspberrypi3.swu в build / tmp / deploy / image / raspberrypi3 /.

Позволяет записать образ core-image-full-cmdline-raspberrypi3.rpi-sdimg на карту SD и использовать update-image-raspberrypi3.swu для его обновления.

Обновите ваш fla sh с помощью инструмента пользовательского интерфейса, такого как Balena Etcher, или через командную строку. Обратите внимание, что целевая файловая система /dev/disk2 может отличаться.

sudo dd if=core-image-full-cmdline-raspberrypi3.rpi-sdimg of=/dev/disk2 bs=1m

После запуска pi перейдите к pi_ipaddress: 8080. Перетащите update-image-raspberrypi3.swu для обновления прошивки.

...