Monolinux - дистрибутив в одному файлі, який завантажується на CPU ARMv7 528 MHz за 0.37 секунд

Monolinux - дистрибутив в одному файлі, який завантажується на CPU ARMv7 528 MHz за 0.37 секунд
2 хв. читання
18 червня 2020

Ерік Моквіст (Erik Moqvist), автор платформи Simba та інструментарію cantools, розвиває новий дистрибутив Monolinux, орієнтований на створення вбудованих Linux-систем для відокремленого запуску певних додатків, написаних мовою Сі. Дистрибутив примітний тим, що програмна начинка оформляється у вигляді одного статично скомпонованого виконуваного файлу, що включає всі компоненти, необхідні для роботи програми (по суті дистрибутив становить ядро Linux і ram-диск зі статично зібраним init-процесом, що містить застосунок і необхідні бібліотеки). Код поширюється під ліцензією MIT.

В оточенні надаються всі підсистеми та системні виклики ядра Linux, включаючи доступ до ФС, мережевий стек і драйвери пристроїв. Для зв'язування з додатком доступні такі бібліотеки, як ml (сі-бібліотека Monolinux c shell, клієнтами DHCP і NTP, Device-mapper тощо), async (asynchronous framework), bitstream, curl (HTTP, FTP, ...), detools (delta-патчі), heatshrink (алгоритм стиснення), humanfriendly (допоміжні інструменти), mbedTLS, xz і zlib. Підтримується швидкий цикл розробки, що дозволяє протягом лічених секунд оцінити роботу нової версії після внесення змін в код.

Варіанти Monolinux підготовлені для плат Raspberry Pi 3 і Jiffy. Підсумковий розмір збірок близько 800 КБ. Плата Jiffy оснащена SoC i.MX6UL з CPU ARMv7-A (528 MHz), 1 GB DDR3 ОПЕРАТИВНОЇ пам'яті та 4 GB eMMC. Час завантаження на платі Jiffy складає всього 0.37 секунд - від включення до готовності файлової системи Ext4. З цього час 1 мс йде на апаратну ініціалізацію SoC, 184 мс на виконання коду ПЗУ, 86 мс на роботу завантажувача, 62 мс на запуск ядра Linux і 40 мс на активацію Ext4. Час перезавантаження становить 0.26 секунд. У разі використання мережевого стека з-за затримок на узгодження каналу Ethernet і отримання параметрів мережі система стає готова для мережевої взаємодії через 2.2 секунди.

В системі використано ядро Linux 4.14.78 в мінімальній конфігурації з додатковими латками які усувають зайві затримки в драйвері MMC підключається прошивкою плати й в момент запуску драйвера вже активовано) і забезпечують ініціалізацію драйверів MMC і FEC (Ethernet) в паралельному режимі.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація