Перейти до вмісту

Embedded Linux

Матеріал з K2 ERP Wiki

Embedded-пристрої часто мають debug-порти:

OpenEmbedded сприяє: System services

Hardware / SoC

Критично: якщо немає драйвера для важливого hardware, сам факт “Linux підтримується” мало допоможе.;

Коли варто використовувати Embedded Linux

У Embedded Linux toolchain має відповідати:

конкретного пристрою забезпечується через Основна ідея: Embedded Linux — це Linux, зібраний не “для користувача за ноутбуком”, а; додатково реалізовано який має свою апаратну платформу, задачі, обмеження й життєвий цикл.; істотно: Secure Boot має сенс лише разом із правильним керуванням ключами, підписом оновлень і захистом recovery-процесу.; Водночас Embedded Linux — це не магічне рішення для бізнесу для всіх пристроїв.;

Помилка: ставити Linux на пристрій лише з цієї причини, що він популярний.; Це підхід, у якому Linux kernel, bootloader, root filesystem, драйвери, бібліотеки, системні сервіси й застосунки збираються під конкретний пристрій.; * Документація BusyBox.; істотно: Embedded Linux дає багато можливостей, але ці функціональні можливості мають ціну: пам’ять, складність, безпека, актуалізація й супровід.; * без GUI;

  • framebuffer UI;
  • Qt;
  • GTK;
  • Wayland;
  • Weston;
  • LVGL у частині сценаріїв;
  • web UI через локальний сервер;
  • Chromium kiosk;
  • custom OpenGL UI;
  • touchscreen HMI.; Багато людей користуються Embedded Linux щодня, навіть не підозрюючи про це.; * GPIO;
  • I2C;
  • SPI;
  • UART;
  • USB;
  • Ethernet;
  • Wi-Fi;
  • Bluetooth;
  • display;
  • touch screen;
  • camera;
  • audio codec;
  • sensors;
  • storage;
  • power management;
  • GPU;
  • modem.; Yocto Project застосовується для:

Практична роль: якщо Buildroot часто сприймають як простіший конструктор, то Yocto/OpenEmbedded — як потужнішу систему для великих product lines.;== Налагодження ==

OpenWrt — Linux-дистрибутив для мережевих пристроїв, особливо роутерів і gateways.; scripts/

Висновок: Embedded Linux сильний відкритістю й екосистемою, а QNX — real-time, microkernel і safety-critical track record.;

Вона сприяє бачити:

Критично: debug-порт у готовому пристрої має змогу стати шляхом до доступу до firmware, ключів або системної консолі.; BusyBox — набір маленьких UNIX-утиліт в одному виконуваному файлі.; Android / AOSP Сценарії:

|- | Тип пристрою | Потужніші embedded-процесори | Мікроконтролери й малі системи |- | Пам’ять | Потребує більше RAM і storage | Дуже компактна |- | функціональні можливості | Процеси, файлова платформа, мережа, драйвери, userspace | Tasks, queues, timers, RTOS primitives |- | Real-time | Можливо, але не завжди жорстко | ключовий фокус |- | Типові задачі | Gateways, камери, smart TV, роутери, HMI | Сенсори, контролери, low-power nodes |}

істотно: як тільки пристрій підключений до мережі, він потребує threat model, оновлень, захисту ключів і контролю відкритих сервісів.;=== Edge AI-пристрій === В Embedded Linux можуть використовуватися:

Вони корисні для розробки, але небезпечні в production.;
configs/

!; * потребує більше RAM і storage, ніж RTOS;

  • складніша збірка;
  • складне актуалізація;
  • driver issues;
  • довший boot time;
  • licensing compliance;
  • security patching;
  • складність Yocto;
  • vendor BSP quality;
  • flash wear;
  • не завжди hard real-time;
  • більше attack surface;
  • потрібні embedded Linux-спеціалісти;
  • складні production і OTA-процеси.; :contentReference [oaicite:1]{index=1}

Підходи:

Практична роль: у Embedded Linux розробник часто функціонує не лише з файлами й процесами, а й із реальними сигналами на контактах плати.; !; Критично: погане OTA-оновлення має змогу масово “зацеглити” пристрої.; Хороший Embedded Linux-продукт — це не без ускладнень зібраний образ, а продумана платформа з bootloader, kernel, rootfs, OTA, recovery, логуванням, захистом, тестуванням і довгостроковою підтримкою.;

Watchdog має змогу бути:

Toolchain — набір інструментів для збірки програм.; * Матеріали щодо embedded systems, IoT security, OTA updates, BSP, cross-compilation, SBOM і production firmware.; Потрібно контролювати: |- | Основна мета | Працювати всередині конкретного пристрою | Бути універсальною ОС для користувача або сервера |- | Інтерфейс | Часто без GUI або з кастомним UI | Desktop environment, shell, server services |- | Пакети | Часто image-based платформа без звичного apt/dnf | Пакункові менеджери й репозиторії |- | Hardware | Конкретна плата або SoC | Ширший набір ПК/серверів |- | актуалізація | OTA, image update, A/B partitions | Пакетні актуалізація або distro upgrade |- | Обмеження | RAM, flash, boot time, power | Зазвичай більше ресурсів |}

істотно: watchdog не виправляє баг.; * Yocto Project не є собою дистрибутивом — він створює дистрибутив під ваш програмний продукт.; Buildroot

  • boot time;
  • wear leveling;
  • надійність;
  • update strategy;
  • filesystem choice;
  • logging;
  • cost;
  • recovery;
  • lifespan.; актуалізація має бути проєктоване як safety-critical механізм.; Часто систему збирають спеціально під конкретну плату, пам’ять, bootloader, драйвери й сценарій роботи.; Його сила — у Linux kernel, драйверах, мережевих можливостях, файлових системах, open source-екосистемі, Buildroot, Yocto Project, OpenWrt і гнучкості кастомізації.; Але всередині все одно є собою Linux kernel, процеси, драйвери, мережа, файлові системи й системні сервіси.; FreeRTOS

Embedded Linux не завжди є собою жорсткою real-time системою.; Потрібна реальна супровід конкретного чипа й плати.; Rootfs містить:

істотно: “Linux безкоштовний” не означає “можна ігнорувати ліцензії”.; application/ Типова Embedded Linux-система складається з кількох шарів:

Ліцензії

!; |- | ext4 | Універсальна writable файлова платформа |- | squashfs | Read-only стиснутий rootfs |- | overlayfs | Writable шар поверх read-only rootfs |- | ubifs | NAND flash-сценарії |- | tmpfs | Тимчасові інформаційні дані в RAM |}

Embedded Linux керує графікою, відеодекодуванням, HDMI, пультом, застосунками й мережевими сервісами.; :contentReference [oaicite:0]{index=0}

!; офіційно затверджений сайт описує Buildroot як simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.; * Yocto Project documentation.; !; Це boot, drivers, rootfs, security, OTA, factory test, logs, recovery і супровід на роки.;
* PREEMPT_RT;
* real-time scheduling;
* CPU isolation;
* priority tuning;
* low-latency kernel;
* IRQ affinity;
* careful driver design;
* measuring worst-case latency.; * описувати пакети;
* керувати залежностями;
* збирати images;
* працювати з layers;
* підтримувати різні архітектури;
* створювати SDK;
* будувати reproducible systems.; * Embedded Linux часто не має пакетного менеджера на пристрої — замість цього оновлюється цілий образ системи.;== Toolchain ==

</div>

* швидкого створення rootfs;
* збірки toolchain;
* збірки kernel;
* збірки bootloader;
* мінімальних embedded-систем;
* прототипів;
* простих пристроїв;
* appliance-like firmware;
* контрольованих image-based систем.; * Buildroot user manual.;</div>
{| class="wikitable"
Драйвери — одна з найважливіших частин Embedded Linux.; '''Цікавий факт:''' BusyBox іноді називають “швейцарським ножем embedded Linux”, бо він дає багато команд у дуже компактному вигляді.; * домашніх роутерів;
* Wi-Fi access points;
* gateways;
* firewall;
* VPN;
* network appliances;
* embedded networking;
* custom router firmware;
* mesh-сценаріїв;
* lab networks.;== Коли Embedded Linux має змогу бути невдалим вибором ==

<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">

* serial console;
* dmesg;
* journalctl;
* strace;
* ltrace;
* gdb;
* kgdb;
* perf;
* ftrace;
* tcpdump;
* logic analyzer;
* oscilloscope;
* JTAG;
* printk;
* remote logging.; '''Watchdog''' перезапускає систему або сервіс, якщо пристрій зависає.; '''істотно:''' у embedded-пристрої не завжди потрібен найновіший kernel.;<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
</div>
</div>

'''істотно:''' неправильний toolchain має змогу дати програму, яка зібралася успішно, але не функціонує на пристрої.; * Документація OpenWrt.; * `ls`;
* `cp`;
* `mv`;
* `sh`;
* `mount`;
* `ifconfig`;
* `ps`;
* `top`;
* `grep`;
* `awk`;
* `sed`;
* `init`;
* багато інших утиліт.; !;<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
Load kernel + device tree
|-
| Основна ідея
| Простий інструмент для генерації embedded Linux-системи
| Платформа для створення custom Linux-дистрибутивів
|-
| Складність
| Нижча
| Вища
|-
| Підходить для
| Простих і середніх пристроїв, швидких прототипів
| Складних продуктів, великих команд, довгого lifecycle
|-
| Пакунковість
| Часто image-based без runtime package management
| має змогу будувати package feeds і складніші дистрибутиви
|-
| Навчальний поріг
| Легший старт
| Більше понять: layers, recipes, BitBake
|}

<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
</div>
'''істотно:''' rootfs для embedded-пристрою часто роблять мінімальним.; У embedded-сценаріях kernel важливий для:

</div>

* Багато роутерів, smart TV і NAS працюють на Linux, хоча користувач системи бачить лише web-інтерфейс або меню.; project/

* bootloader;
* kernel;
* device tree;
* initramfs;
* rootfs;
* application image;
* firmware components.;</div>

</div>

{| class="wikitable"

!;== Цікавий факт ==
'''Практична роль:''' для телевізора, автомагнітоли або industrial HMI користувач системи не хоче чекати хвилину.;<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
</div>
!; '''Serial console''' — один із найважливіших інструментів embedded-розробника.; * Serial console часто рятує більше часу, ніж будь-який красивий IDE.; Embedded Linux
Embedded Linux використовує open source-компоненти з різними ліцензіями.; Без неї kernel має змогу не знати, де підключений дисплей, сенсор або мережевий контролер.; Зазвичай охоплює:

* думати, що Raspberry Pi OS дорівнює production Embedded Linux;
* не планувати OTA;
* не робити recovery partition;
* залишати default password;
* відкривати SSH без потреби;
* логувати на flash без обмежень;
* ігнорувати device tree;
* використовувати поганий BSP;
* не перевіряти power loss;
* вимикати security features для “зручності”;
* не вести SBOM;
* не тестувати upgrade/downgrade;
* не враховувати license compliance;
* збирати систему вручну без відтворюваного build process.;== SBOM ==
'''істотно:''' flash-пам’ять має обмежену кількість циклів запису.;<syntaxhighlight lang="text">
Цікаво, що Embedded Linux часто має дуже мало спільного з “звичайним Linux на комп’ютері”.; * У embedded-світі “перезавантажити” не завжди без ускладнень: пристрій має змогу бути на даху, у полі, на заводі або в іншій країні.; У комерційному пристрої open source compliance є собою обов’язковою частиною роботи.; * драйверів;
* scheduler;
* memory management;
* файлових систем;
* GPIO;
* SPI;
* I2C;
* UART;
* USB;
* Ethernet;
* Wi-Fi;
* display;
* audio;
* camera;
* power management;
* real-time features;
* security features.; Критерій

Спрощена схема:
 kernel/
'''Проста аналогія:''' Device Tree — це “карта місцевості” для ядра Linux.;== GPIO, I2C, SPI і UART ==

</div>
</div>
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

</div>

<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">

</div>

</div>

* роутерів;
* smart TV;
* медіаплеєрів;
* NAS;
* камер;
* IoT gateways;
* edge devices;
* промислових контролерів;
* робототехніки;
* автомобільних систем;
* медичних пристроїв;
* мережевого обладнання;
* касових і платіжних терміналів;
* цифрових табло;
* побутової техніки;
* development boards;
* Raspberry Pi-подібних пристроїв;
* custom hardware.; Вона надає metadata, recipes і build infrastructure для створення embedded Linux-систем.;== Висновок ==

'''Buildroot''' — інструмент для створення Embedded Linux-систем через cross-compilation.; Для простого датчика температури має змогу вистачити bare-metal firmware або FreeRTOS.; '''Практична порада:''' Embedded Linux варто обирати, коли пристрій уже схожий на маленький комп’ютер, а не без ускладнень на мікроконтролер із кількома сенсорами.;== Хороші практики Embedded Linux ==

* Ethernet;
* Wi-Fi;
* Bluetooth;
* LTE/5G modem;
* MQTT;
* HTTP/HTTPS;
* SSH;
* VPN;
* firewall;
* routing;
* DNS;
* DHCP;
* Zeroconf;
* cloud connectivity;
* remote diagnostics;
* telemetry.;<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">

як ілюстрація, розробник збирає код на x86_64 Linux-комп’ютері, а запускає його на ARM-платі.;</div>

</div>
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
== Secure Boot ==

Embedded Linux часто має вимоги до часу старту.; Зайві пакети — це зайва flash-пам’ять, attack surface і час актуалізація.;</div>
!;== Buildroot і Yocto Project ==

Embedded Linux і desktop/server Linux мають спільну основу, але різні цілі.; Buildroot застосовується для:
== Контейнери в Embedded Linux ==
'''Bootloader''' запускає систему до Linux kernel.; Але якщо пристрій має web-інтерфейс, Wi-Fi, Ethernet, USB, камеру, графіку, TLS, OTA-оновлення, локальну базу даних і кілька процесів, Linux стає дуже привабливим.;</div>

<div style="background:#f0eaff; border-left:6px solid #8e44ad; padding:12px; margin:12px 0;">

* RAM;
* flash;
* Ethernet;
* Wi-Fi;
* Bluetooth;
* display;
* buttons;
* sensors;
* audio;
* camera;
* serial number;
* MAC address;
* calibration data;
* secure keys;
* firmware version.;=== Smart TV або медіаплеєр ===
<syntaxhighlight lang="text">
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">

'''Цікавий момент:''' у embedded-пристрої “вимкнути зайве” іноді важливіше, ніж “прискорити код”.; BSP має змогу включати:
Embedded Linux має змогу мати або не мати GUI.; * CPU frequency scaling;
* suspend/resume;
* device runtime PM;
* display backlight;
* Wi-Fi power save;
* modem sleep;
* wake sources;
* battery monitoring;
* thermal throttling;
* regulators;
* clocks;
* sensors.; У embedded-системах rootfs має змогу бути:

Embedded Linux часто функціонує з низькорівневими інтерфейсами.; Поширені інтерфейси:
'''Критично:''' пристрій має переживати не лише “правильне вимкнення”, а й висмикнутий кабель живлення, слабку мережу, повну flash-пам’ять і невдале актуалізація.;<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
'''Практична роль:''' якщо завтра знайдуть уразливість у бібліотеці, SBOM допоможе оперативно зрозуміти, чи є собою вона у вашому пристрої.;<div style="background:#f0eaff; border-left:6px solid #8e44ad; padding:12px; margin:12px 0;">
Embedded Linux добре підходить, якщо потрібно:
</div>
 device-tree/

== Flash-пам’ять і storage ==
!; Cross-compilation потрібна для:

<div style="background:#fef2f2; border-left:6px solid #ef4444; padding:12px; margin:12px 0;">

Мережеві сценарії:

* дуже простого датчика;
* MCU з маленькою RAM;
* ultra-low-power пристрою;
* задач із жорсткими real-time deadlines;
* простого firmware без мережі;
* пристрою, де важлива миттєва готовність;
* проєкту без Linux-компетенції;
* системи, де немає підтримки SoC;
* продукту без плану security updates;
* маленької батарейної електроніки.;<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

* security;
* license compliance;
* vulnerability management;
* audits;
* supply chain;
* customer requirements;
* incident response;
* long-term maintenance.;== Мережа ==
== A/B partitions ==

'''Проста аналогія:''' Embedded Linux — це не один файл, а “бутерброд” із bootloader, kernel, root filesystem, драйверів і застосунку пристрою.;<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">

== Файлові системи ==

* GPL;
* LGPL;
* MIT;
* BSD;
* Apache 2.0;
* MPL;
* proprietary licenses для vendor blobs.; Для маленького пристрою вони можуть бути надмірними, а для edge gateway — дуже зручними.; :contentReference [oaicite:4]{index=4}
* У production Embedded Linux важливий не лише kernel, а й update strategy, recovery, ключі, логи й заводське тестування.; '''Практична роль:''' Buildroot часто обирають, коли потрібна проста, компактна й контрольована Embedded Linux-збірка без надмірної складності.; Device Tree описує:
!;<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
</div>
Логування в Embedded Linux потрібно планувати дуже обережно.;

Embedded Linux — це підхід до створення Linux-систем для конкретних пристроїв: роутерів, smart TV, камер, gateways, промислового обладнання, автомобільних систем, edge-пристроїв і спеціалізованої електроніки.; Linux відповідає за camera driver, video encoding, network streaming, storage, web UI і remote update.; Практична роль: розуміння boot flow сприяє швидше знайти, де саме зламався пристрій: до kernel, під час kernel boot, у rootfs або вже в застосунку.; Воно керує процесами, пам’яттю, драйверами, файловими системами, мережами, security primitives і взаємодією з hardware.; Часто важливіші стабільність, супровід SoC, security patches і довгий життєвий цикл.; Secure Boot має змогу перевіряти:

Камера відеоспостереження

Embedded Linux керує Wi-Fi, NAT, firewall, DHCP, DNS, web-інтерфейсом і оновленнями.; Підказка: хороший Embedded Linux-проєкт починається з питань: який hardware, який boot time, як оновлювати, як відновлювати, як захищати і як тестувати на виробництві.; істотно: systemd має змогу бути зручним для складних пристроїв, але для дуже маленьких систем BusyBox init часто простіший і легший.;

Embedded Linux має змогу бути не найкращим вибором для:

  • обсяг flash;
  • wear leveling;
  • log rotation;
  • persistent logs;
  • RAM logs;
  • remote logging;
  • privacy;
  • crash logs;
  • boot logs;
  • kernel logs;
  • application logs;
  • diagnostics;
  • production support.; * Kernel.org active kernel releases.; Критерій

Тематичні мітки

  • Ethernet або Wi-Fi;
  • складний networking;
  • web UI;
  • camera або multimedia;
  • файлова платформа;
  • TLS;
  • SSH;
  • кілька процесів;
  • OTA-оновлення;
  • storage;
  • GUI;
  • edge processing;
  • container-like deployment;
  • складні драйвери;
  • супровід USB;
  • gateway-функції;
  • довготривала embedded-платформа.; QNX
SBOM або Software Bill of Materials — список програмних компонентів у продукті.; Boot ROM Практична роль: good factory test економить багато грошей, бо виявляє проблеми до того, як пристрій потрапить до користувача.; * bootloader;
  • kernel configuration;
  • device probing;
  • rootfs type;
  • init system;
  • services;
  • storage speed;
  • hardware initialization;
  • logging;
  • network waits;
  • application startup.;== Приклад спрощеного boot flow ==
OpenWrt застосовується для: Варіанти UI: Головна думка: Embedded Linux — це Linux для реальних пристроїв.; Start system services
  • edge gateways;
  • industrial edge;
  • application isolation;
  • modular deployment;
  • OTA for applications;
  • Docker або containerd у відповідних системах;
  • Kubernetes at the edge;
  • testing;
  • service separation.; Power on
  • ресурсів;
  • складності пристрою;
  • часу старту;
  • потреби в dependency management;
  • logging;
  • service supervision;
  • розміру rootfs;
  • звичок команди.; Він потребує більше ресурсів, ніж RTOS, має складніші актуалізація, security-вимоги, ліцензійні зобов’язання, BSP-залежності й production-ризики.; * hardware watchdog;
  • software watchdog;
  • systemd watchdog;
  • application heartbeat;
  • external supervisor.; * secure boot;
  • signed firmware;
  • rootfs integrity;
  • read-only rootfs;
  • Linux capabilities;
  • SELinux або AppArmor у відповідних системах;
  • firewall;
  • TLS;
  • SSH hardening;
  • update signing;
  • key storage;
  • debug ports;
  • default passwords;
  • open services;
  • supply chain;
  • SBOM;
  • vulnerability scanning;
  • physical access risks.; Типові інструменти:
Bootloader

Linux kernel

Головне правило: Embedded Linux-проєкт — це не тільки “зібрати образ”.;</syntaxhighlight>

Embedded Linux не є собою одним конкретним дистрибутивом.;== OpenWrt ==

OpenEmbedded — важлива основа екосистеми Yocto.; Найцікавіше: Embedded Linux — це операційна платформа, яку часто ніхто не бачить, але вона керує великою кількістю “розумних” речей навколо нас.; * ініціалізацію hardware;

  • завантаження kernel;
  • завантаження device tree;
  • вибір boot partition;
  • recovery mode;
  • boot arguments;
  • secure boot у відповідних сценаріях;
  • network boot;
  • firmware update;
  • діагностику раннього старту.;== Debug-порти ==
  • підписані образи;
  • rollback;
  • A/B partitions;
  • atomic update;
  • power loss during update;
  • delta updates;
  • bandwidth;
  • recovery mode;
  • bootloader integration;
  • versioning;
  • fleet management;
  • security;
  • staging rollout.; Поганий BSP має змогу з’їсти місяці розробки.;=== Домашній роутер ===

Device tree

Power management важливий для battery-powered і thermal-limited пристроїв.; Він має змогу працювати у Wi-Fi роутері, телевізорі, NAS, камері відеоспостереження, автомобільній мультимедійній системі, платіжному терміналі або домашньому smart hub.;=== Industrial gateway ===

Потрібно контролювати:

; завдяки наявності Yocto Project — open source collaboration project, який користувачі можуть створювати custom Linux-based systems незалежно від апаратної архітектури.; Boot time стає частиною якості продукту.; Цікавий факт: багато людей уперше стикаються з Embedded Linux саме через роутер, навіть якщо ніколи не думали про нього як про Linux-пристрій.;
  • Linux Kernel Archives.;

Buildroot

update/

Linux kernel — ядро системи.; Потрібно враховувати:

Виробниче тестування

Yocto Project

Пристрій збирає інформаційні дані з Modbus, CAN або інших industrial bus, обробляє їх і надсилає в cloud або SCADA.;
factory-test/

істотно: у реальному продукті структура залежить від Buildroot, Yocto, vendor SDK, CI/CD, hardware і вимог виробництва.; * CPU;

  • memory;
  • buses;
  • GPIO;
  • I2C;
  • SPI;
  • UART;
  • Ethernet;
  • display;
  • sensors;
  • regulators;
  • clocks;
  • interrupts;
  • storage;
  • pin configuration.; * compiler;
  • assembler;
  • linker;
  • C library;
  • debugger;
  • binutils;
  • headers;
  • sysroot;
  • build tools.;

Приклади сценаріїв використання

  • ext4;
  • squashfs;
  • ubifs;
  • jffs2;
  • overlayfs;
  • tmpfs;
  • initramfs;
  • erofs;
  • FAT для boot partitions у частині платформ.; Критерій

{{SEO

Вибір init system залежить від:

Storage впливає на:

Embedded-пристрої можуть використовувати різні типи storage:

recipes-or-packages/

В Embedded Linux використовують різні файлові системи:

Див.; додатково

Embedded Linux застосовується тоді, коли пристрою потрібні функціональні можливості повноцінної ОС: мережа, драйвери, файлова платформа, багатозадачність, безпека, актуалізація, графіка, контейнери або складні застосунки.; Desktop / Server Linux

Kernel.org публікує mainline, stable і longterm kernel-релізи; для embedded-продуктів часто важливі саме longterm-гілки, бо пристрої мають підтримуватися роками.; Embedded Linux-пристрій часто має працювати місяцями або роками.; Найлюдяніший факт: Embedded Linux — це Linux, який не просить уваги.;

Безпека Embedded Linux

Start product application

Практична роль: вибір C library впливає на розмір системи, сумісність програм і поведінку runtime.; Embedded Linux

  • watchdog;
  • read-only rootfs;
  • recovery partition;
  • A/B updates;
  • log rotation;
  • memory leak control;
  • service supervision;
  • hardware health monitoring;
  • brownout behavior;
  • filesystem resilience;
  • thermal design;
  • testing under load;
  • power loss testing.; rootfs/

OpenEmbedded

істотно: логів має бути достатньо для діагностики, але не стільки, щоб вони зношували flash або розкривали приватні інформаційні дані.;

SBOM корисний для:

Тип Open source Linux-based платформа Комерційна UNIX-подібна RTOS
технічна архітектура Monolithic Linux kernel Microkernel
програмний пакет Дуже широка open source-екосистема Automotive, safety-critical, real-time ecosystem
Вартість Залежить від підтримки й інтеграції Комерційне ліцензування
Типові задачі IoT, routers, edge, smart devices, industrial Automotive, medical, industrial safety-critical

Init system

Mount root filesystem Практична роль: read-only rootfs часто робить пристрій стабільнішим, бо випадкове вимкнення живлення менше шкодить системним файлам.; * Документація Linux kernel щодо device tree, drivers, filesystems, networking, PREEMPT_RT і security.; * Buildroot official website.; A/B partitions — схема, де пристрій має два системні слоти.; Типова роль

  • GPIO — цифрові входи й виходи;
  • I2C — шина для сенсорів, EEPROM, PMIC;
  • SPI — швидша шина для дисплеїв, ADC, flash;
  • UART — серійний порт для debug console, модемів, простих протоколів.; :contentReference [oaicite:3]{index=3}
  • Buildroot люблять за простоту й швидкість старту.; * open source-екосистема;
  • Linux kernel;
  • велика кількість драйверів;
  • мережеві функціональні можливості;
  • файлові системи;
  • процеси й багатозадачність;
  • security features;
  • BusyBox;
  • Buildroot;
  • Yocto Project;
  • OpenWrt;
  • container support на потужних пристроях;
  • гнучкість кастомізації;
  • велика спільнота;
  • супровід багатьох архітектур;
  • можливість довгострокової підтримки.; !; C library
  • boot ROM;
  • bootloader;
  • Linux kernel;
  • device tree;
  • kernel modules;
  • root filesystem;
  • C library;
  • init system;
  • system services;
  • device drivers;
  • application layer;
  • update mechanism;
  • configuration;
  • logging;
  • diagnostics;
  • security policies.; Найвідоміший bootloader у Embedded Linux — U-Boot.;
; істотно: Embedded Linux — це не без ускладнень “поставити Ubuntu на пристрій”.; У нього має змогу не бути графічного робочого столу, браузера, пакункового менеджера або навіть звичного логіну для користувача.;

Bootloader

; Надмірне логування має змогу скоротити життя пристрою.; Потужніший embedded Linux-пристрій має змогу запускати inference, камери, GPU/NPU-драйвери, локальну обробку й контейнеризовані сервіси.; Проста аналогія: cross-compiler — це перекладач, який пише програму мовою не вашого комп’ютера, а цільового пристрою.; !; Файлова платформа </syntaxhighlight> Secure Boot у embedded-системах сприяє перевіряти, що пристрій завантажує довірений код.; * Yocto Project official website.; Типовий сценарій

Джерела

  • ARM;
  • ARM64;
  • RISC-V;
  • MIPS;
  • PowerPC;
  • custom SoC;
  • embedded boards;
  • швидшої збірки;
  • CI/CD;
  • SDK.; Сам проєкт підкреслює: “It’s not an embedded Linux distribution, it creates a custom one for you.” :contentReference [oaicite:2]{index=2}

Watchdog

Можливі проблеми:

Перевага: Embedded Linux дає виробнику пристрою величезну екосистему драйверів, мережевих стеків, бібліотек і open source-компонентів.;
Висновок: Buildroot зручний для простоти й швидкості, а Yocto Project — для масштабованості, кастомних дистрибутивів і складних продуктів.;

Поширені помилки:

Cross-compilation — збірка програм на одному комп’ютері для іншої архітектури.;

Висновок: FreeRTOS краще для маленьких MCU, а Embedded Linux — для пристроїв, яким потрібні мережа, файлова платформа, процеси, складні драйвери й більша програмний пакет.; !; Embedded Linux-пристрій потрібно тестувати не лише під час розробки, а й на виробництві.; Yocto Project

Ідея:

Linux kernel

  • `/bin`;
  • `/sbin`;
  • `/etc`;
  • `/lib`;
  • `/usr`;
  • `/var`;
  • init system;
  • system services;
  • бібліотеки;
  • shell;
  • застосунки;
  • конфігурації;
  • scripts;
  • logs у відповідних сценаріях.; Він дуже популярний у Embedded Linux.; Критерій

BusyBox

Критично: найгірший embedded-пристрій — це той, який має Linux, мережу, стандартний пароль, відкритий SSH і ніколи не отримує оновлень.; Потрібно контролювати:

На потужніших embedded і edge-пристроях можуть використовуватися контейнери.;
  • CPU architecture;
  • ABI;
  • C library;
  • kernel headers;
  • target rootfs;
  • floating point settings;
  • vendor SDK.;== Real-time Linux ==
  • eMMC;
  • NAND flash;
  • NOR flash;
  • SD card;
  • UFS;
  • USB storage;
  • SPI flash;
  • NVMe у потужніших edge-пристроях.;== Embedded Linux і FreeRTOS ==

Embedded Linux має обмеження.;== Device Tree ==

Приклад структури Embedded Linux-проєкту

Основа Linux kernel + кастомний userspace Linux kernel + Android Framework
Застосунки Linux applications, custom software Android apps
UI Відсутній, Qt, GTK, web UI, custom UI Android UI framework
Типові пристрої Роутери, gateways, промисловість, edge Смартфони, планшети, TV, automotive infotainment
Коли краще Коли не потрібна Android app ecosystem Коли потрібні Android apps і Android UX

Надійність

Типові помилки початківців

Init system запускає перший user-space бізнес-процес і керує сервісами.; Надійність залежить від:

Практична роль: графічний інтерфейс embedded-пристрою часто створюється не для “універсального desktop”, а для одного дуже конкретного сценарію.; Людською мовою: Linux має змогу бути достатньо “real-time” для багатьох задач, але для жорстких safety-critical deadline-сценаріїв іноді потрібні RTOS або спеціальні архітектури.; Але для багатьох задач можна використовувати real-time функціональні можливості Linux.; * Документація U-Boot.;

Рекомендовано:

істотно: якість BSP часто визначає, наскільки болісним буде весь embedded-проєкт.;
  • source code obligations;
  • notices;
  • license compliance;
  • SBOM;
  • modifications to GPL components;
  • distribution terms;
  • third-party packages;
  • commercial obligations.;== Root filesystem ==

Продуктивність і boot time

технічна архітектура Embedded Linux

Embedded Linux і Android

Практична роль: Yocto Project — це не готовий дистрибутив, а фабрика для створення власного Linux-дистрибутива під конкретний програмний продукт.;
docs/

Налагодження Embedded Linux має змогу бути складним, бо проблема має змогу бути в hardware, bootloader, kernel, драйвері, rootfs або застосунку.; Критерій

glibc Повніша сумісність, більший розмір musl Компактність, простота, часто для мінімальних систем uClibc-ng Embedded-сценарії, де потрібна компактність і сумісність із legacy-підходами
Application

Cross-compilation

Bootloader відповідає за:

Цікавий факт: у embedded-світі маленький USB-UART адаптер іноді важливіший за великий монітор, бо саме він показує, чому плата не завантажується.; Безпека Embedded Linux дуже важлива, особливо для пристроїв у мережі.;

Embedded Linux дуже часто використовують саме через сильні мережеві функціональні можливості Linux.; Embedded Linux

Embedded Linux і звичайний Linux

  • bootloader patches;
  • kernel patches;
  • device tree;
  • drivers;
  • firmware;
  • board configuration;
  • toolchain;
  • hardware documentation;
  • example images;
  • vendor libraries;
  • flashing tools.;

Перевага: A/B update надає можливість зменшити ризик невдалого актуалізація, бо стара робоча платформа має змогу залишатися як fallback.; Root filesystem або rootfs — файлова платформа, з якої функціонує Linux після старту.; BusyBox має змогу замінювати:

переважні аспекти Embedded Linux

Обмеження Embedded Linux

Висновок: Android — теж embedded-подібний Linux-напрям, але з окремою платформою застосунків і framework; Embedded Linux часто простіший і гнучкіший для спеціалізованих пристроїв.; Потрібні драйвери для:

  • UART;
  • JTAG;
  • SWD;
  • USB debug;
  • test pads;
  • recovery buttons;
  • boot mode pins.;== Графічний інтерфейс ==

Start init

Boot ROM

Embedded Linux і QNX

Загальний характеристика

Board Support Package або BSP — набір компонентів, які дозволяють Linux працювати на конкретній апаратній платі.; істотно: контейнери потребують ресурсів.;

Серійна консоль

C library

; Основні переважні аспекти Embedded Linux:

Практична роль: якщо kernel — це двигун, то bootloader — це стартер, який має правильно підготувати пристрій до запуску.; це використання Linux у вбудованих системах: роутерах, медіаплеєрах, smart TV, промислових контролерах, IoT-пристроях, автомобільних системах, роботах, камерах, мережевому обладнанні, POS-терміналах, медичних пристроях, edge gateways і спеціалізованих апаратних платформах виступає ключовою рисою Embedded Linux.;== Цікаві факти про Embedded Linux ==

Embedded Linux OTA має враховувати:

  • починати з якісного BSP;
  • обирати Buildroot або Yocto за складністю продукту;
  • мінімізувати rootfs;
  • вимикати зайві сервіси;
  • використовувати read-only rootfs, якщо можливо;
  • планувати OTA з першого дня;
  • мати recovery mode;
  • підписувати firmware;
  • захищати debug ports;
  • перевіряти ліцензії;
  • вести SBOM;
  • контролювати flash writes;
  • налаштувати watchdog;
  • тестувати power loss;
  • оновлювати kernel і пакети;
  • документувати build process;
  • робити reproducible builds, якщо можливо.; Boot time залежить від:
  • складних embedded-продуктів;
  • промислових систем;
  • automotive;
  • long-term product development;
  • reproducible builds;
  • layers;
  • metadata;
  • BSP;
  • SDK;
  • package feeds;
  • custom distributions;
  • enterprise embedded Linux.; Небезпека: найбільші проблеми Embedded Linux часто з’являються не в перший день, а через рік: актуалізація, вразливості, зношена flash, забуті ключі й неповторювана збірка.; * read-only;
  • squashfs;
  • ext4;
  • ubifs;
  • initramfs;
  • overlayfs;
  • A/B partition;
  • network rootfs для розробки.;

Логування

Важливі ліцензії:

  • glibc;
  • musl;
  • uClibc-ng.; OTA update — актуалізація пристрою через мережу.; Device Tree — характеристика апаратної платформи, який kernel використовує, щоб зрозуміти, які пристрої є собою на платі.;

Embedded Linux має змогу використовувати різні C libraries:

  • зараз функціонує slot A;
  • актуалізація записується в slot B;
  • після перезавантаження пристрій пробує slot B;
  • якщо щось не функціонує, bootloader має змогу повернутися до slot A.;== Board Support Package ==

Power management

Головна перевага: Embedded Linux надає можливість створювати складні пристрої, використовуючи зрілу ОС, величезну екосистему й відкриті компоненти.; Практична роль: embedded-debug — це детективна робота: іноді треба одночасно читати kernel log, дивитися осцилограф і перевіряти device tree.;== OTA-оновлення ==

Root filesystem

Bootloader

  • BusyBox init;
  • systemd;
  • SysV init;
  • OpenRC у частині систем;
  • custom init;
  • minimal init scripts.; Embedded Linux
bootloader/

Драйвери

Factory test має змогу перевіряти:

  • bootloader logs;
  • kernel boot logs;
  • login shell;
  • panic messages;
  • early boot errors;
  • init messages;
  • debug output;
  • recovery console.; Embedded Linux застосовується для:
; Якщо задачі прості й ресурсів мало, RTOS або bare-metal можуть бути кращими.; Він лише сприяє пристрою повернутися до життя після збою.; Якщо все зроблено правильно, пристрій без ускладнень вмикається й роками робить свою роботу.; Його цінність у з цієї причини, що він дає маленькому або спеціалізованому hardware функціональні можливості великої операційної системи, але вимагає інженерної дисципліни.; * Іноді найкраще покращення embedded-системи — не нова функція, а видалення зайвого сервісу.; * Embedded Linux