Особенности Monolinux
Monolinux – дистрибутив, разработанный для встраиваемых Linux-систем. Linux-системы востребованы в сфере коммуникаций, автомобильной индустрии, в создании решений умного дома.
Эрик Моквист – автор инструментария cantools для работы с CAN-шиной и встраиваемой платформы Simba - вместе со своей командой собрал Monolinux в одном статически скомпонованном исполняемом файле. Он включает ядро Linux, ram-диск со статически собранным процессом инициализации и всеми нужными библиотеками и приложениями.
Основа Monolinux – ядро Linux 4.14.78 в минимальной конфигурации. Дополнительно установленные патчи убирают лишние задержки в драйвере MMC и запускают параллельную инициализацию драйверов MMC и FEC (Ethernet).
В окружении Monolinux есть все ключевые системные вызовы и подсистемы ядра Linux. ОС обеспечивает доступ к файловой системе, драйверам устройств и сетевому стеку.
Код Monolinux распространяется под открытой лицензией MIT. Загрузить его можно с GitHub.
Зачем нужен Monolinux
Monolinux позволит обособленно запускать приложения, написанные на языке С.
Чтобы связать платформу с приложением, в дистрибутиве доступны:
-
библиотеки ml для работы с shell, клиентами DHCP и др.;
-
curl для HTTP, FTP и других сетевых протоколов;
-
асинхронный фреймворк async;
-
вспомогательные методы humanfriendly и другие возможности.
Моквист отметил, что Monolinux подходит для запуска быстрого цикла разработки. Вы можете оперативно внести изменения в код приложения, собрать его и через несколько минут или даже секунд оценить работу новой версии.
Сейчас дистрибутив доступен для одноплатных компьютеров Raspberry Pi 3 и Jiffy. Размер сборки – около 800 КБ.
Рекордное время запуска
Команда разработчиков протестировала Monolinux на стандартной конфигурации платы Jiffy: чипсет i.MX6UL с ядром ARMv7-A частотой 528 МГц,1 ГБ оперативной памяти DDR3 и 4 ГБ на встроенном накопителе eMMC.
Загрузить однофайловый дистрибутив, от включения платы до готовности файловой системы Ext4 к работе, удалось за 0,37 с. Аппаратная инициализация чипсета занимает 1 мс. 184 мс уходит на выполнения кода встроенного накопителя, 86 мс – работа загрузчика. Еще 62 мс запускается ядро Linux, а файловая система Ext4 активируется за 40 мс.
Разработчики также добавили, что перезагрузка системы занимает 0,26 с. Если использовать сетевой стек, то за счет задержек на согласование Ethernet-канала и приема сетевых параметров Monolinux будет готов для взаимодействия по сети за 2,2 с.