SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
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/

Contenu connexe

Tendances

Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Makoto Nishimura
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 rockplace
 
Prometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start PrometeusPrometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start PrometeusTakeo Noda
 
用 Azure 快速部署與開發 LINE bot
用 Azure 快速部署與開發 LINE bot用 Azure 快速部署與開發 LINE bot
用 Azure 快速部署與開發 LINE botKo Ko
 
Fluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellFluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellN Masahiro
 
Faster Container Image Distribution on a Variety of Tools with Lazy Pulling
Faster Container Image Distribution on a Variety of Tools with Lazy PullingFaster Container Image Distribution on a Variety of Tools with Lazy Pulling
Faster Container Image Distribution on a Variety of Tools with Lazy PullingKohei Tokunaga
 
CI/CD on Google Cloud Platform
CI/CD on Google Cloud PlatformCI/CD on Google Cloud Platform
CI/CD on Google Cloud PlatformDevOps Indonesia
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Emma Haruka Iwao
 
Integrating Service Mesh with Kubernetes-based connected vehicle platform
Integrating Service Mesh with Kubernetes-based connected vehicle platformIntegrating Service Mesh with Kubernetes-based connected vehicle platform
Integrating Service Mesh with Kubernetes-based connected vehicle platformJun Kai Yong
 
kubernetes-meetup-tokyo-20210624-kubevirt
kubernetes-meetup-tokyo-20210624-kubevirtkubernetes-meetup-tokyo-20210624-kubevirt
kubernetes-meetup-tokyo-20210624-kubevirtYukinori Sagara
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Toshihiro Araki
 
C5 Instances and the Evolution of Amazon EC2 Virtualization - CMP332 - re:Inv...
C5 Instances and the Evolution of Amazon EC2 Virtualization - CMP332 - re:Inv...C5 Instances and the Evolution of Amazon EC2 Virtualization - CMP332 - re:Inv...
C5 Instances and the Evolution of Amazon EC2 Virtualization - CMP332 - re:Inv...Amazon Web Services
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0Ji-Woong Choi
 
Role Based Access Controls (RBAC) for SSH and Kubernetes Access with Teleport
Role Based Access Controls (RBAC) for SSH and Kubernetes Access with TeleportRole Based Access Controls (RBAC) for SSH and Kubernetes Access with Teleport
Role Based Access Controls (RBAC) for SSH and Kubernetes Access with TeleportDevOps.com
 
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月VirtualTech Japan Inc.
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Igalia
 

Tendances (20)

Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
 
TripleO Deep Dive
TripleO Deep DiveTripleO Deep Dive
TripleO Deep Dive
 
Kubernetes (K8s) 簡介 | GDSC NYCU
Kubernetes (K8s) 簡介 | GDSC NYCUKubernetes (K8s) 簡介 | GDSC NYCU
Kubernetes (K8s) 簡介 | GDSC NYCU
 
Prometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start PrometeusPrometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start Prometeus
 
用 Azure 快速部署與開發 LINE bot
用 Azure 快速部署與開發 LINE bot用 Azure 快速部署與開發 LINE bot
用 Azure 快速部署與開發 LINE bot
 
Fluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellFluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshell
 
Faster Container Image Distribution on a Variety of Tools with Lazy Pulling
Faster Container Image Distribution on a Variety of Tools with Lazy PullingFaster Container Image Distribution on a Variety of Tools with Lazy Pulling
Faster Container Image Distribution on a Variety of Tools with Lazy Pulling
 
Open shift 4-update
Open shift 4-updateOpen shift 4-update
Open shift 4-update
 
CI/CD on Google Cloud Platform
CI/CD on Google Cloud PlatformCI/CD on Google Cloud Platform
CI/CD on Google Cloud Platform
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
 
DSC 再入門
DSC 再入門DSC 再入門
DSC 再入門
 
Integrating Service Mesh with Kubernetes-based connected vehicle platform
Integrating Service Mesh with Kubernetes-based connected vehicle platformIntegrating Service Mesh with Kubernetes-based connected vehicle platform
Integrating Service Mesh with Kubernetes-based connected vehicle platform
 
kubernetes-meetup-tokyo-20210624-kubevirt
kubernetes-meetup-tokyo-20210624-kubevirtkubernetes-meetup-tokyo-20210624-kubevirt
kubernetes-meetup-tokyo-20210624-kubevirt
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
C5 Instances and the Evolution of Amazon EC2 Virtualization - CMP332 - re:Inv...
C5 Instances and the Evolution of Amazon EC2 Virtualization - CMP332 - re:Inv...C5 Instances and the Evolution of Amazon EC2 Virtualization - CMP332 - re:Inv...
C5 Instances and the Evolution of Amazon EC2 Virtualization - CMP332 - re:Inv...
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 
Role Based Access Controls (RBAC) for SSH and Kubernetes Access with Teleport
Role Based Access Controls (RBAC) for SSH and Kubernetes Access with TeleportRole Based Access Controls (RBAC) for SSH and Kubernetes Access with Teleport
Role Based Access Controls (RBAC) for SSH and Kubernetes Access with Teleport
 
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
 

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

The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto ProjectLeon Anavi
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiLeon Anavi
 
Open source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScriptOpen source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScriptLeon Anavi
 
Направи си сам Raspberry Pi HAT
Направи си сам Raspberry Pi HATНаправи си сам Raspberry Pi HAT
Направи си сам Raspberry Pi HATLeon Anavi
 
Адаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваАдаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваLeon Anavi
 
Бъдеще и настояще на Tizen
Бъдеще и настояще на TizenБъдеще и настояще на Tizen
Бъдеще и настояще на TizenLeon Anavi
 
Minimal linux live
Minimal linux liveMinimal linux live
Minimal linux liveIvan Davidov
 
Въведение в Sailfish OS
Въведение в Sailfish OSВъведение в Sailfish OS
Въведение в Sailfish OSLeon Anavi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxLeon Anavi
 
HTML5 приложения за Android, урок 1
HTML5 приложения за Android, урок 1HTML5 приложения за Android, урок 1
HTML5 приложения за Android, урок 1Leon Anavi
 
Sdn nfv мрежова виртуализация
Sdn nfv мрежова виртуализацияSdn nfv мрежова виртуализация
Sdn nfv мрежова виртуализацияmartin.ivanov
 
The better PHP API (BG)
The better PHP API (BG)The better PHP API (BG)
The better PHP API (BG)boen_robot
 
Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Leon Anavi
 
Veneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastVeneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastIvailo Jelqzkov
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Leon Anavi
 

Similaire à Linux обновления с RAUC и Docker (20)

The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
Open source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScriptOpen source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScript
 
Направи си сам Raspberry Pi HAT
Направи си сам Raspberry Pi HATНаправи си сам Raspberry Pi HAT
Направи си сам Raspberry Pi HAT
 
Why do we need a language like go?
Why do we need a language like go?Why do we need a language like go?
Why do we need a language like go?
 
Embedded Gnu
Embedded GnuEmbedded Gnu
Embedded Gnu
 
Адаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваАдаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройства
 
Бъдеще и настояще на Tizen
Бъдеще и настояще на TizenБъдеще и настояще на Tizen
Бъдеще и настояще на Tizen
 
Expect4java
Expect4javaExpect4java
Expect4java
 
Minimal linux live
Minimal linux liveMinimal linux live
Minimal linux live
 
Въведение в Sailfish OS
Въведение в Sailfish OSВъведение в Sailfish OS
Въведение в Sailfish OS
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
SVN
SVNSVN
SVN
 
HTML5 приложения за Android, урок 1
HTML5 приложения за Android, урок 1HTML5 приложения за Android, урок 1
HTML5 приложения за Android, урок 1
 
Sdn nfv мрежова виртуализация
Sdn nfv мрежова виртуализацияSdn nfv мрежова виртуализация
Sdn nfv мрежова виртуализация
 
Using NAOqi
Using NAOqiUsing NAOqi
Using NAOqi
 
The better PHP API (BG)
The better PHP API (BG)The better PHP API (BG)
The better PHP API (BG)
 
Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?
 
Veneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-lastVeneta_Aleksieva_TechSys-last
Veneta_Aleksieva_TechSys-last
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 

Plus de Leon Anavi

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Leon Anavi
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedLeon Anavi
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Leon Anavi
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware MakersLeon Anavi
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareLeon Anavi
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive KioskLeon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Leon Anavi
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiLeon Anavi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsLeon Anavi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareLeon Anavi
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiLeon Anavi
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux DevicesLeon Anavi
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT BrokersLeon Anavi
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiLeon Anavi
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source HardwareLeon Anavi
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxLeon Anavi
 
Връщане към живота на ретро електроника с Raspberry Pi
Връщане към живота на ретро електроника с Raspberry PiВръщане към живота на ретро електроника с Raspberry Pi
Връщане към живота на ретро електроника с Raspberry PiLeon Anavi
 
Open Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHParkOpen Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHParkLeon Anavi
 
Rapid IoT Prototyping with Tizen on Raspberry Pi
Rapid IoT Prototyping with Tizen on Raspberry PiRapid IoT Prototyping with Tizen on Raspberry Pi
Rapid IoT Prototyping with Tizen on Raspberry PiLeon Anavi
 

Plus de Leon Anavi (20)

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
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
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry Pi
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source Hardware
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
 
Връщане към живота на ретро електроника с Raspberry Pi
Връщане към живота на ретро електроника с Raspberry PiВръщане към живота на ретро електроника с Raspberry Pi
Връщане към живота на ретро електроника с Raspberry Pi
 
Open Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHParkOpen Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHPark
 
Rapid IoT Prototyping with Tizen on Raspberry Pi
Rapid IoT Prototyping with Tizen on Raspberry PiRapid IoT Prototyping with Tizen on Raspberry Pi
Rapid IoT Prototyping with Tizen on Raspberry Pi
 

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/