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

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 18 Jun 2020.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    Эрик Моквист (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) в параллельном режиме.

     
    4Fun, fandor9, user100 and 1 other person like this.
  2. user100

    user100 Moderator

    Joined:
    24 Dec 2011
    Messages:
    4,497
    Likes Received:
    16,632
    Reputations:
    373
    Нормальный такой live дистрибутивчик:D
     
    _________________________
    4Fun likes this.