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

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

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

Варіанти Monolinux підготовлені для плат Raspberry Pi 3 и Джіффі. Підсумковий обсяг збірок близько 800 КБ. Плата Джіффі оснащена 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 підключається прошивкою плати і в момент запуску драйвера вже активовано) і запускають ініціалізацію драйверів MMC та FEC (Ethernet) у паралельному режимі.

Джерело: opennet.ru

Додати коментар або відгук