Monolinux - однофайловый дистрибутив, загружающийся на CPU ARMv7 528 MHz за 0.37 секунд
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 подключается прошивкой платы и в момент запуска драйвера уже активирован) и запускающими инициализацию драйверов MMC и FEC (Ethernet) в параллельном режиме.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.