SlideShare a Scribd company logo
Linux обновления с RAUC и Docker
Леон Анави
leon.anavi@konsulko.com
leon@anavi.org
OpenFest 2022
OpenFest 2022, Леон Анави
За какво ще говорим?
 Стратегии и open source решения за обновления на Linux вградени
устройства
 The Yocto Project
 RAUC
 RAUC на Raspberry Pi 4
 Интеграция на Docker
 Заключения
OpenFest 2022, Леон Анави
Тази презентация надгражда знания от:
 OpenFest 2015: The Yocto Project, Радослав Колев, Леон Анави
https://www.youtube.com/watch?v=8wP5yP1vOOE
 OpenFest 2017: Безжично обновяване на софтуера на устройства за
вграждане с Linux, Леон Анави
https://www.youtube.com/watch?v=uNqFstuSCPo
OpenFest 2022, Леон Анави
Време за размисъл за софтуерни обновления
 Има ли ограничения в дисковото пространство?
 Има ли ограничения в преноса на данни?
 Как управлявате приложенията?
 Трябват ли ви контейнери?
 A/B или бинарни делти за обновления?
 Как ще се извършва обновлениято: по въздуха, кабел, USB, т.н.?
 Зависят ли критични системи от устройството?
 Как управлявате обновлението на множество от устройства?
OpenFest 2022, Леон Анави
Често срещани стратегии за обновления
 A/B
 Делта
 Контейнери
 Комбинирани
OpenFest 2022, Леон Анави
A/B обновления
 Два A и B идентични rootfs дяла
 Дял за съхранение на данни, които остават постоянни и не биват променяни
при обновления на софтуера
 Типично се реализира приложение клиент, което се изпълнява на
вграденото устройство и периодично проверява за нова версия
 Ако нова версия е налична клиентът я сваля и инсталира на другия
(неактивен) дях
 При неуспех на обновлението системата продължава да работи от текущия
активен дял
OpenFest 2022, Леон Анави
Комбинирани стратегии
 Контейнерите промениха начина, по който разработчици на приложения
работят с “облака” и някои добри практики се пренасят в работния процес
за вградени устройства и Internet of Things
 Контейнерите помагат приложенията да се доставят по-бързо, да се тестват
и обновяват по-лесно както и да се подобри сигурността чрез изолация
 Съществуват редица случаи, при които на мощни вградени устройства е
практично да се комбинират контейнери с A/B обновления на базовата Linux
дистрибуция
OpenFest 2022, Леон Анави
Популярни open source решения
 Mender
 RAUC
 SWUpdate
 Swupd
 UpdateHub
 Balena
 Snap
 Pantacor
 Libostree (OSTree)
 Aktualizr
 Aktualizr-lite
 QtOTA
 Torizon
 FullMetalUpdate
 Rpm-ostree (used in Project Atomic)
 Други
OpenFest 2022, Леон Анави
Програмни средства за създаване на Linux дистро
Популярни open source системи за създаване на специализирана Linux
дистрибуция за вградени устройства и Internet of Things:
 Yocto/OpenEmbedded
 Buildroot
 PTXdist
 OpenWRT
 Други
OpenFest 2022, Леон Анави
И все пак не може ли да ползваме Debian?
 Debian e стабилна пълна дистрибуция с десетки хиляди пакети налични
като бинарни файлове за инсталация без нужда от крос-компилация от кода
 Множество производни на Debian съществуват за различни устройства за
вграждане (Armbian, Raspberry Pi OS, Ubuntu и т.н.)
 Debian or Yocto Project? Which is the Best for your Embedded Linux Project?
Chris Simmonds, Embedded Linux Conference Europe 2019
https://www.youtube.com/watch?v=iDllXa8SzUgr
OpenFest 2022, Леон Анави
The Yocto Project
 Съвместен проект под егидата на Linux Foundation с отворен код,
предоставящ удобни за ползване инструменти за създаване и развитие на
embedded Linux дистрибуции
 OpenEmbedded Build System включва BitBake и OpenEmbedded Core
 Poky e референтната дистрибуция на Yocto, която се предоставя като мета
данни без никакви бинарни файлове, за да може бързо да я надградижте и
създадете Ваша Linux дистрибуция за специфична машина
 Нова основна версия два пъти годишно
 Long term support (LTS) версия покриваща най-малко две години
OpenFest 2022, Леон Анави
The Yocto Project
Име Версия Дата на пускане Статус
Langdale 4.1 Октомври 2022 До май 2023
Kirkstone 4.0 Май 2022 Long Term Support
Honister 3.4 Октомври 2021 EOL
Hardknott 3.3 Април 2021 EOL
Gatesgarth 3.2 Октомври 2020 EOL
Dunfell 3.1 Април 2020 Long Term Support
Zeus 3.0 Октомври 2019 EOL
OpenFest 2022, Леон Анави
Промени в синтаксиса на Yocto
 Във версия 3.4 Honister (от Октомври 2021) на Yocto синтаксисът за
предефиниране замени _ с :, например:
IMAGE_INSTALL:append = " docker-ce"
 Има скрипт от OE-Core, който помага с миграцията на стари проекти:
<oe-core>/scripts/contrib/convert-overrides.py <layerdir>
 За повече детайли:
http://docs.yoctoproject.org/next/migration-guides/migration-3.4.html#release-3-4
-honister
OpenFest 2022, Леон Анави
RAUC
 Лек клиент за обновления, който върви на вградено Linux устройство и
надеждно контролира процеса по обновяване на версията на софтуера
 Поддържа различни сценарии за обновления
 Предуставя инструменти, за да се създават, инспектират и модифицират
артефакти за обновленията, които се наричат “update bundles”
 Използва X.509 криптография, за да подпише т.нар. update bundles
 Съвместим с Yocto Project, PTXdist and Buildroot
OpenFest 2022, Леон Анави
RAUC термини
 update bundle – артефакт под формата на бинарен файл с разширение
raucb, чрез който се дистрибутира новата версия
 Slot – всяко нещо, което може да бъде обновено в системата: дисково
устройство, дял или файл
OpenFest 2022, Леон Анави
Как работи RAUC?
 Пример при инсталиране на обновление на дял B
OpenFest 2022, Леон Анави
RAUC лицензи
 RAUC – LGPLv2.1
https://github.com/rauc/rauc
 meta-rauc - MIT
https://github.com/rauc/meta-rauc
 rauc-hawkbit – LGPLv2.1
https://github.com/rauc/rauc-hawkbit
 rauc-hawkbit-updater – LGPLv2.1
https://github.com/rauc/rauc-hawkbit-updater
OpenFest 2022, Леон Анави
Стъпки за интеграция на RAUC на нова машина
 Избор на подходяща първична зареждаща програма (bootloader)
 Включване на SquashFS в конфигурацията на Linux kernel-а
 ext4 root file system (RAUC не работи с ext2 или ext3)
 Създаване на дялове според RAUC слотовете
 Конфигуриране на средата на първичната зареждаща програма и
създаване на скрипт, който да превключва между RAUC слотовете
 Създаване на сертификат и включване на ключовете в RAUC’s system.conf
OpenFest 2022, Леон Анави
RAUC дял за данни
 Поддържа схеми с един или два дяла за данни
 При схема с два дяла активния rootfs дял трябва да монтира правилния дял
за данни динамично, например с udev правило
OpenFest 2022, Леон Анави
RAUC адаптивни обновления
 Нова функционалност в RAUC версия 1.8 от 1 октомври 2022
 Адаптивни обновления се комбинират с HTTP(S) за поточно сваляне от RAUC
клиента на embedded Linux устройството само на необходими части от RAUC
update bundle без необходимост от цялостно сваляне на raucb файла
 Адаптивни обновления спестяват памет и мрежов трафик
 За детайли:
https://rauc.readthedocs.io/en/latest/advanced.html#adaptive-updates
https://rauc.readthedocs.io/en/latest/advanced.html#http-streaming
OpenFest 2022, Леон Анави
meta-rauc-community
 Yocto/OE слой с примерни интеграции за различни машини
 Стартиран през 2020
 Преместен в RAUC организацията в GitHub през 2021
 Поддържа Raspberry Pi чрез meta-raspberrypi, Sunxi (Allwinner) devices
through meta-sunxi, NVIDIA Jetson TX2 чрез meta-tegra и QEMU x86-64
 https://github.com/rauc/meta-rauc-community/
Подобрения и нови функционалности са винаги добре дошли чрез
GitHub pull requests!
OpenFest 2022, Леон Анави
Кой разработва RAUC?
 RAUC e стартиран като проект от Pengutronics през 2015г
 Слоят meta-rauc-community от Konsulko Group
 72 човека са допринесли с код за RAUC клиента, 34 човека за meta-rauc и 6
човека за meta-rauc-community
OpenFest 2022, Леон Анави
RAUC пример with Raspberry Pi 4
 Код от git хранилищата (клон kirkstone):
git clone -b kirkstone git://git.yoctoproject.org/poky poky-rpi-rauc
cd poky-rpi-rauc
git clone -b kirkstone git://git.openembedded.org/meta-openembedded
git clone -b kirkstone git://git.yoctoproject.org/meta-raspberrypi
git clone -b kirkstone https://github.com/rauc/meta-rauc.git
git clone -b kirkstone https://github.com/rauc/meta-rauc-community.git"
OpenFest 2022, Леон Анави
RAUC пример with Raspberry Pi 4
 Добавяне на слоевете в bblayers.conf:
source oe-init-build-env
bitbake-layers add-layer ../meta-openembedded/meta-oe/
bitbake-layers add-layer ../meta-openembedded/meta-python/
bitbake-layers add-layer ../meta-openembedded/meta-networking/
bitbake-layers add-layer ../meta-openembedded/meta-multimedia/
bitbake-layers add-layer ../meta-raspberrypi/
bitbake-layers add-layer ../meta-rauc
bitbake-layers add-layer ../meta-rauc-community/meta-rauc-raspberrypi/
OpenFest 2022, Леон Анави
RAUC пример with Raspberry Pi 4
 Добавете към local.conf:
MACHINE = "raspberrypi4"
ENABLE_UART = "1"
RPI_USE_U_BOOT = "1"
DISTRO_FEATURES:append = " rauc"
IMAGE_INSTALL:append = " rauc"
IMAGE_FSTYPES:append = " ext4"
WKS_FILE = "sdimage-dual-raspberrypi.wks.in"
INIT_MANAGER = "systemd"
OpenFest 2022, Леон Анави
RAUC пример with Raspberry Pi 4
 Създаване на image:
bitbake core-image-minimal
 Добавяне на nano към нова версия на image директно чрез local.conf:
IMAGE_INSTALL:append = " nano"
 Създаване на RAUC update bundle с новата версия:
bitbake update-bundle
OpenFest 2022, Леон Анави
RAUC на Raspberry Pi 4
OpenFest 2022, Леон Анави
Ръчно обновление с RAUC на Raspberry Pi 4
 Изпълнете на персоналния компютър с артефактите:
cd tmp/deploy/images/raspberrypi4/
python3 -m http.server
 Изпълнете на Raspberry Pi:
wget http://example.com:8000/update-bundle-raspberrypi4.raucb -P /tmp
rauc install /tmp/update-bundle-raspberrypi4.raucb
reboot
OpenFest 2022, Леон Анави
Как става „магията“ в u-boot?
 rpi-u-boot-scr.bbappend от meta-rauc-community добавя boot.cmd.in:
OpenFest 2022, Леон Анави
Read-only rootfs
Yocto и OpenEmbedded предлагат две опции за read-only файлова система:
 През рецептата за image:
IMAGE_FEATURES += "read-only-rootfs"
 Или през local.conf:
EXTRA_IMAGE_FEATURES = "read-only-rootfs"
 Внимание: може да има специфични пакети във Вашия имидж, които да
очакват файловата система да позволява запис и поради това да не могат
да функционират според очакванията.
OpenFest 2022, Леон Анави
Комбиниране с Docker
 Yocto/OE слоя meta-virtualization осигурява поддръжка на Xen, KVM, Libvirt,
docker и свързаните с тях пакети нужни за изграждане на виртуализирано
решение
 virtualization трябва да бъде добавена към DISTRO_FEATURES:
DISTRO_FEATURES:append = " virtualization"
 Добавяне на Docker към дистрибуцията е лесно:
IMAGE_INSTALL:append = " docker-ce"
OpenFest 2022, Леон Анави
И още нещо: Eclipse hawkBit
 Open source сървър за управления на обновления на устройства свързани с
IP инфраструктура, който може да бъде интегриран с RAUC update bundles
(raucb файлове)
 Написан на Java
 Код в GitHub под Eclipse Public License 1.0
 https://github.com/eclipse/hawkbit
 https://www.eclipse.org/hawkbit/
OpenFest 2022, Леон Анави
Заключения
 Има много неща, които трябва да се вземат под внимание при избора на
стратегия за обновления
 Ползвайте готови open source software решения за обновления
 RAUC е мощно и удобно решение за A/B обновления с отлична
Yocto/OpenEmbedded интеграция
 Комбинирани стратегии за A/B обновления с контейнери за приложенията
стават все по-популярни в днешно време
 Много често на практика A/B схемата се нуждае от допълнителен дял за
данни, които не се променят при обновяването
OpenFest 2022, Леон Анави
Благодаря Ви!
Полезни връзки:
 https://www.yoctoproject.org/
 https://rauc.io/
 https://github.com/eclipse/hawkbit
 https://git.yoctoproject.org/cgit/cgit.cgi/meta-virtualization/
 https://www.konsulko.com/building-platforms-with-secure-ove
r-the-air-updating/
 https://www.konsulko.com/getting-started-with-rauc-on-raspb
erry-pi-2/

More Related Content

PDF
Software update for embedded systems - elce2014
PDF
Android Internals
PDF
Software update for IoT: the current state of play
PDF
Docker Advanced registry usage
PDF
Docker контейнери с Balena на вградени Linux устройства - TuxCon 2024
ODP
The Yocto Project
PDF
Практични примери за device tree overlays на Raspberry Pi
PDF
Open source: от "голо желязо" до JavaScript
Software update for embedded systems - elce2014
Android Internals
Software update for IoT: the current state of play
Docker Advanced registry usage
Docker контейнери с Balena на вградени Linux устройства - TuxCon 2024
The Yocto Project
Практични примери за device tree overlays на Raspberry Pi
Open source: от "голо желязо" до JavaScript

Similar to Linux обновления с RAUC и Docker (20)

PDF
Направи си сам Raspberry Pi HAT
PDF
Why do we need a language like go?
PPT
Embedded Gnu
PDF
Адаптация на Linux за ARM устройства
PPT
Бъдеще и настояще на Tizen
PPTX
Expect4java
PPTX
Minimal linux live
PPT
Въведение в Sailfish OS
PDF
Вграждане на умни гласови асистенти в устройства с Linux
PDF
Дистанционни обновления и поддръжка на вградени Linux системи с Mender - TuxC...
PDF
HTML5 приложения за Android, урок 1
PDF
Sdn nfv мрежова виртуализация
PPTX
PPTX
The better PHP API (BG)
PDF
Как проектът Yocto помага за създаване на Internet of Things?
DOCX
Veneta_Aleksieva_TechSys-last
PDF
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
PPTX
Демо урок по програмиране със Светлин Наков
PDF
Връщане към живота на ретро електроника с Raspberry Pi
Направи си сам Raspberry Pi HAT
Why do we need a language like go?
Embedded Gnu
Адаптация на Linux за ARM устройства
Бъдеще и настояще на Tizen
Expect4java
Minimal linux live
Въведение в Sailfish OS
Вграждане на умни гласови асистенти в устройства с Linux
Дистанционни обновления и поддръжка на вградени Linux системи с Mender - TuxC...
HTML5 приложения за Android, урок 1
Sdn nfv мрежова виртуализация
The better PHP API (BG)
Как проектът Yocto помага за създаване на Internet of Things?
Veneta_Aleksieva_TechSys-last
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Демо урок по програмиране със Светлин Наков
Връщане към живота на ретро електроника с Raspberry Pi
Ad

More from Leon Anavi (20)

PDF
Refactoring meta-rauc-community: Cleaner Code, Better Maintenance, More Machines
PDF
Exploring Open Source Dual A/B Update Solutions for Embedded Linux
PDF
What Makes the Raspberry Pi 5 So Special?
PDF
Side by Side Comparison of Dual A/B Update Solutions with the Yocto Project
PDF
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
PDF
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
PDF
Как да убием и последната дискета с Open Source технологии?
PDF
How to Choose a Software Update Mechanism for Embedded Linux Devices
PDF
Open Hardware Makers
PDF
Open Source Tools for Making Open Source Hardware
PDF
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
PDF
Surfing on an Interactive Kiosk
PDF
Linux дистрибуции и софтуерни обновления за вградени устройства
PDF
Getting started with AGL using a Raspberry Pi
PDF
Automotive Grade Linux on Raspberry Pi: How Does It Work?
PDF
Comparison of Open Source Software Home Automation Tools
PDF
The Software Developer’s Guide to Open Source Hardware
PDF
Making Open Source Hardware for Retrogaming on Raspberry Pi
PDF
Comparison of Voice Assistant SDKs for Embedded Linux Devices
PDF
Open Source MQTT Brokers
Refactoring meta-rauc-community: Cleaner Code, Better Maintenance, More Machines
Exploring Open Source Dual A/B Update Solutions for Embedded Linux
What Makes the Raspberry Pi 5 So Special?
Side by Side Comparison of Dual A/B Update Solutions with the Yocto Project
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Как да убием и последната дискета с Open Source технологии?
How to Choose a Software Update Mechanism for Embedded Linux Devices
Open Hardware Makers
Open Source Tools for Making Open Source Hardware
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
Surfing on an Interactive Kiosk
Linux дистрибуции и софтуерни обновления за вградени устройства
Getting started with AGL using a Raspberry Pi
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Comparison of Open Source Software Home Automation Tools
The Software Developer’s Guide to Open Source Hardware
Making Open Source Hardware for Retrogaming on Raspberry Pi
Comparison of Voice Assistant SDKs for Embedded Linux Devices
Open Source MQTT Brokers
Ad

Linux обновления с RAUC и Docker

  • 1. Linux обновления с RAUC и Docker Леон Анави leon.anavi@konsulko.com leon@anavi.org OpenFest 2022
  • 2. OpenFest 2022, Леон Анави За какво ще говорим?  Стратегии и open source решения за обновления на Linux вградени устройства  The Yocto Project  RAUC  RAUC на Raspberry Pi 4  Интеграция на Docker  Заключения
  • 3. OpenFest 2022, Леон Анави Тази презентация надгражда знания от:  OpenFest 2015: The Yocto Project, Радослав Колев, Леон Анави https://www.youtube.com/watch?v=8wP5yP1vOOE  OpenFest 2017: Безжично обновяване на софтуера на устройства за вграждане с Linux, Леон Анави https://www.youtube.com/watch?v=uNqFstuSCPo
  • 4. OpenFest 2022, Леон Анави Време за размисъл за софтуерни обновления  Има ли ограничения в дисковото пространство?  Има ли ограничения в преноса на данни?  Как управлявате приложенията?  Трябват ли ви контейнери?  A/B или бинарни делти за обновления?  Как ще се извършва обновлениято: по въздуха, кабел, USB, т.н.?  Зависят ли критични системи от устройството?  Как управлявате обновлението на множество от устройства?
  • 5. OpenFest 2022, Леон Анави Често срещани стратегии за обновления  A/B  Делта  Контейнери  Комбинирани
  • 6. OpenFest 2022, Леон Анави A/B обновления  Два A и B идентични rootfs дяла  Дял за съхранение на данни, които остават постоянни и не биват променяни при обновления на софтуера  Типично се реализира приложение клиент, което се изпълнява на вграденото устройство и периодично проверява за нова версия  Ако нова версия е налична клиентът я сваля и инсталира на другия (неактивен) дях  При неуспех на обновлението системата продължава да работи от текущия активен дял
  • 7. OpenFest 2022, Леон Анави Комбинирани стратегии  Контейнерите промениха начина, по който разработчици на приложения работят с “облака” и някои добри практики се пренасят в работния процес за вградени устройства и Internet of Things  Контейнерите помагат приложенията да се доставят по-бързо, да се тестват и обновяват по-лесно както и да се подобри сигурността чрез изолация  Съществуват редица случаи, при които на мощни вградени устройства е практично да се комбинират контейнери с A/B обновления на базовата Linux дистрибуция
  • 8. OpenFest 2022, Леон Анави Популярни open source решения  Mender  RAUC  SWUpdate  Swupd  UpdateHub  Balena  Snap  Pantacor  Libostree (OSTree)  Aktualizr  Aktualizr-lite  QtOTA  Torizon  FullMetalUpdate  Rpm-ostree (used in Project Atomic)  Други
  • 9. OpenFest 2022, Леон Анави Програмни средства за създаване на Linux дистро Популярни open source системи за създаване на специализирана Linux дистрибуция за вградени устройства и Internet of Things:  Yocto/OpenEmbedded  Buildroot  PTXdist  OpenWRT  Други
  • 10. OpenFest 2022, Леон Анави И все пак не може ли да ползваме Debian?  Debian e стабилна пълна дистрибуция с десетки хиляди пакети налични като бинарни файлове за инсталация без нужда от крос-компилация от кода  Множество производни на Debian съществуват за различни устройства за вграждане (Armbian, Raspberry Pi OS, Ubuntu и т.н.)  Debian or Yocto Project? Which is the Best for your Embedded Linux Project? Chris Simmonds, Embedded Linux Conference Europe 2019 https://www.youtube.com/watch?v=iDllXa8SzUgr
  • 11. OpenFest 2022, Леон Анави The Yocto Project  Съвместен проект под егидата на Linux Foundation с отворен код, предоставящ удобни за ползване инструменти за създаване и развитие на embedded Linux дистрибуции  OpenEmbedded Build System включва BitBake и OpenEmbedded Core  Poky e референтната дистрибуция на Yocto, която се предоставя като мета данни без никакви бинарни файлове, за да може бързо да я надградижте и създадете Ваша Linux дистрибуция за специфична машина  Нова основна версия два пъти годишно  Long term support (LTS) версия покриваща най-малко две години
  • 12. OpenFest 2022, Леон Анави The Yocto Project Име Версия Дата на пускане Статус Langdale 4.1 Октомври 2022 До май 2023 Kirkstone 4.0 Май 2022 Long Term Support Honister 3.4 Октомври 2021 EOL Hardknott 3.3 Април 2021 EOL Gatesgarth 3.2 Октомври 2020 EOL Dunfell 3.1 Април 2020 Long Term Support Zeus 3.0 Октомври 2019 EOL
  • 13. OpenFest 2022, Леон Анави Промени в синтаксиса на Yocto  Във версия 3.4 Honister (от Октомври 2021) на Yocto синтаксисът за предефиниране замени _ с :, например: IMAGE_INSTALL:append = " docker-ce"  Има скрипт от OE-Core, който помага с миграцията на стари проекти: <oe-core>/scripts/contrib/convert-overrides.py <layerdir>  За повече детайли: http://docs.yoctoproject.org/next/migration-guides/migration-3.4.html#release-3-4 -honister
  • 14. OpenFest 2022, Леон Анави RAUC  Лек клиент за обновления, който върви на вградено Linux устройство и надеждно контролира процеса по обновяване на версията на софтуера  Поддържа различни сценарии за обновления  Предуставя инструменти, за да се създават, инспектират и модифицират артефакти за обновленията, които се наричат “update bundles”  Използва X.509 криптография, за да подпише т.нар. update bundles  Съвместим с Yocto Project, PTXdist and Buildroot
  • 15. OpenFest 2022, Леон Анави RAUC термини  update bundle – артефакт под формата на бинарен файл с разширение raucb, чрез който се дистрибутира новата версия  Slot – всяко нещо, което може да бъде обновено в системата: дисково устройство, дял или файл
  • 16. OpenFest 2022, Леон Анави Как работи RAUC?  Пример при инсталиране на обновление на дял B
  • 17. OpenFest 2022, Леон Анави RAUC лицензи  RAUC – LGPLv2.1 https://github.com/rauc/rauc  meta-rauc - MIT https://github.com/rauc/meta-rauc  rauc-hawkbit – LGPLv2.1 https://github.com/rauc/rauc-hawkbit  rauc-hawkbit-updater – LGPLv2.1 https://github.com/rauc/rauc-hawkbit-updater
  • 18. OpenFest 2022, Леон Анави Стъпки за интеграция на RAUC на нова машина  Избор на подходяща първична зареждаща програма (bootloader)  Включване на SquashFS в конфигурацията на Linux kernel-а  ext4 root file system (RAUC не работи с ext2 или ext3)  Създаване на дялове според RAUC слотовете  Конфигуриране на средата на първичната зареждаща програма и създаване на скрипт, който да превключва между RAUC слотовете  Създаване на сертификат и включване на ключовете в RAUC’s system.conf
  • 19. OpenFest 2022, Леон Анави RAUC дял за данни  Поддържа схеми с един или два дяла за данни  При схема с два дяла активния rootfs дял трябва да монтира правилния дял за данни динамично, например с udev правило
  • 20. OpenFest 2022, Леон Анави RAUC адаптивни обновления  Нова функционалност в RAUC версия 1.8 от 1 октомври 2022  Адаптивни обновления се комбинират с HTTP(S) за поточно сваляне от RAUC клиента на embedded Linux устройството само на необходими части от RAUC update bundle без необходимост от цялостно сваляне на raucb файла  Адаптивни обновления спестяват памет и мрежов трафик  За детайли: https://rauc.readthedocs.io/en/latest/advanced.html#adaptive-updates https://rauc.readthedocs.io/en/latest/advanced.html#http-streaming
  • 21. OpenFest 2022, Леон Анави meta-rauc-community  Yocto/OE слой с примерни интеграции за различни машини  Стартиран през 2020  Преместен в RAUC организацията в GitHub през 2021  Поддържа Raspberry Pi чрез meta-raspberrypi, Sunxi (Allwinner) devices through meta-sunxi, NVIDIA Jetson TX2 чрез meta-tegra и QEMU x86-64  https://github.com/rauc/meta-rauc-community/ Подобрения и нови функционалности са винаги добре дошли чрез GitHub pull requests!
  • 22. OpenFest 2022, Леон Анави Кой разработва RAUC?  RAUC e стартиран като проект от Pengutronics през 2015г  Слоят meta-rauc-community от Konsulko Group  72 човека са допринесли с код за RAUC клиента, 34 човека за meta-rauc и 6 човека за meta-rauc-community
  • 23. OpenFest 2022, Леон Анави RAUC пример with Raspberry Pi 4  Код от git хранилищата (клон kirkstone): git clone -b kirkstone git://git.yoctoproject.org/poky poky-rpi-rauc cd poky-rpi-rauc git clone -b kirkstone git://git.openembedded.org/meta-openembedded git clone -b kirkstone git://git.yoctoproject.org/meta-raspberrypi git clone -b kirkstone https://github.com/rauc/meta-rauc.git git clone -b kirkstone https://github.com/rauc/meta-rauc-community.git"
  • 24. OpenFest 2022, Леон Анави RAUC пример with Raspberry Pi 4  Добавяне на слоевете в bblayers.conf: source oe-init-build-env bitbake-layers add-layer ../meta-openembedded/meta-oe/ bitbake-layers add-layer ../meta-openembedded/meta-python/ bitbake-layers add-layer ../meta-openembedded/meta-networking/ bitbake-layers add-layer ../meta-openembedded/meta-multimedia/ bitbake-layers add-layer ../meta-raspberrypi/ bitbake-layers add-layer ../meta-rauc bitbake-layers add-layer ../meta-rauc-community/meta-rauc-raspberrypi/
  • 25. OpenFest 2022, Леон Анави RAUC пример with Raspberry Pi 4  Добавете към local.conf: MACHINE = "raspberrypi4" ENABLE_UART = "1" RPI_USE_U_BOOT = "1" DISTRO_FEATURES:append = " rauc" IMAGE_INSTALL:append = " rauc" IMAGE_FSTYPES:append = " ext4" WKS_FILE = "sdimage-dual-raspberrypi.wks.in" INIT_MANAGER = "systemd"
  • 26. OpenFest 2022, Леон Анави RAUC пример with Raspberry Pi 4  Създаване на image: bitbake core-image-minimal  Добавяне на nano към нова версия на image директно чрез local.conf: IMAGE_INSTALL:append = " nano"  Създаване на RAUC update bundle с новата версия: bitbake update-bundle
  • 27. OpenFest 2022, Леон Анави RAUC на Raspberry Pi 4
  • 28. OpenFest 2022, Леон Анави Ръчно обновление с RAUC на Raspberry Pi 4  Изпълнете на персоналния компютър с артефактите: cd tmp/deploy/images/raspberrypi4/ python3 -m http.server  Изпълнете на Raspberry Pi: wget http://example.com:8000/update-bundle-raspberrypi4.raucb -P /tmp rauc install /tmp/update-bundle-raspberrypi4.raucb reboot
  • 29. OpenFest 2022, Леон Анави Как става „магията“ в u-boot?  rpi-u-boot-scr.bbappend от meta-rauc-community добавя boot.cmd.in:
  • 30. OpenFest 2022, Леон Анави Read-only rootfs Yocto и OpenEmbedded предлагат две опции за read-only файлова система:  През рецептата за image: IMAGE_FEATURES += "read-only-rootfs"  Или през local.conf: EXTRA_IMAGE_FEATURES = "read-only-rootfs"  Внимание: може да има специфични пакети във Вашия имидж, които да очакват файловата система да позволява запис и поради това да не могат да функционират според очакванията.
  • 31. OpenFest 2022, Леон Анави Комбиниране с Docker  Yocto/OE слоя meta-virtualization осигурява поддръжка на Xen, KVM, Libvirt, docker и свързаните с тях пакети нужни за изграждане на виртуализирано решение  virtualization трябва да бъде добавена към DISTRO_FEATURES: DISTRO_FEATURES:append = " virtualization"  Добавяне на Docker към дистрибуцията е лесно: IMAGE_INSTALL:append = " docker-ce"
  • 32. OpenFest 2022, Леон Анави И още нещо: Eclipse hawkBit  Open source сървър за управления на обновления на устройства свързани с IP инфраструктура, който може да бъде интегриран с RAUC update bundles (raucb файлове)  Написан на Java  Код в GitHub под Eclipse Public License 1.0  https://github.com/eclipse/hawkbit  https://www.eclipse.org/hawkbit/
  • 33. OpenFest 2022, Леон Анави Заключения  Има много неща, които трябва да се вземат под внимание при избора на стратегия за обновления  Ползвайте готови open source software решения за обновления  RAUC е мощно и удобно решение за A/B обновления с отлична Yocto/OpenEmbedded интеграция  Комбинирани стратегии за A/B обновления с контейнери за приложенията стават все по-популярни в днешно време  Много често на практика A/B схемата се нуждае от допълнителен дял за данни, които не се променят при обновяването
  • 34. OpenFest 2022, Леон Анави Благодаря Ви! Полезни връзки:  https://www.yoctoproject.org/  https://rauc.io/  https://github.com/eclipse/hawkbit  https://git.yoctoproject.org/cgit/cgit.cgi/meta-virtualization/  https://www.konsulko.com/building-platforms-with-secure-ove r-the-air-updating/  https://www.konsulko.com/getting-started-with-rauc-on-raspb erry-pi-2/