PDA

Просмотр полной версии : Monolinux - однофайловый дистрибутив, загружающийся на CPU ARMv7 528 MHz за 0.37 секунд


Suicide
18.06.2020, 20:13
Эрик Моквист (Erik Moqvist), автор платформы Simba (https://github.com/eerimoq/simba) и инструментария cantools (https://github.com/eerimoq/cantools), развивает новый дистрибутив Monolinux (https://github.com/eerimoq/monolinux), ориентированный на создание встраиваемых Linux-систем для обособленного запуска определённых приложений, написанных на языке Си. Дистрибутив примечателен тем, что программная начинка оформляется в виде одного статически скомпонованного исполняемого файла, включающего все компоненты, необходимые для работы приложения (по сути дистрибутив составляет ядро Linux и ram-диск со статически собранным init-процессом, включающим в себя приложение и необходимые библиотеки). Код распространяется (https://github.com/eerimoq/monolinux) под лицензией MIT.

В окружении предоставляются все подсистемы и системные вызовы ядра Linux, включая доступ к ФС, сетевой стек и драйверы устойств. Для связывания с приложением доступны такие библиотеки, как ml (https://github.com/eerimoq/monolinux-c-library) (си-библиотека Monolinux c shell, клиентами DHCP и NTP, Device-mapper и т.п.), async (https://github.com/eerimoq/async) (asynchronous framework), bitstream (https://github.com/eerimoq/bitstream), curl (https://curl.haxx.se/) (HTTP, FTP, ...), detools (https://github.com/eerimoq/detools) (delta-патчи), heatshrink (https://github.com/atomicobject/heatshrink) (алгоритм сжатия), humanfriendly (https://github.com/eerimoq/humanfriendly) (вспомогательные инструменты), mbedTLS (https://tls.mbed.org/), xz (https://tukaani.org/xz/) и zlib (https://zlib.net/). Поддерживается быстрый цикл разработки, позволяющий в течение считанных секунд оценить в работу новой версии после внесения изменений в код.

Варианты Monolinux подготовлены для плат Raspberry Pi 3 (https://github.com/eerimoq/monolinux-raspberry-pi-3) и Jiffy (https://github.com/eerimoq/monolinux-jiffy). Итоговый размер сборок около 800 КБ. Плата Jiffy (https://github.com/jonasblixt/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 в минимальной конфигурации с дополнительными патчами (https://github.com/eerimoq/linux/compare/e7405910ca5553eae8744af4e5c03e64ee048cb1..a3f1f66a b66b1c03731530e86dcc7262237a437d), устраняющими лишние задержки в драйвере MMC (MMC подключается прошивкой платы и в момент запуска драйвера уже активирован) и запускающими инициализацию драйверов MMC и FEC (Ethernet) в параллельном режиме.

18.06.2020

https://www.opennet.ru/opennews/art.shtml?num=53180​

user100
21.06.2020, 12:50
Нормальный такой live дистрибутивчик