Monolinux – аднафайлавы дыстрыбутыў, які загружаецца на CPU ARMv7 528 MHz за 0.37 секунд

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

У асяроддзі прадастаўляюцца ўсе падсістэмы і сістэмныя выклікі ядра Linux, уключаючы доступ да ФС, сеткавы стэк і драйверы ўстойлівасцяў. Для звязвання з дадаткам даступны такія бібліятэкі, як ml (сі-бібліятэка Monolinux c shell, кліентамі DHCP і NTP, Device-mapper і да т.п.), асінхроннай (asynchronous framework), бітавы паток, завітак (HTTP, FTP, …), detools (delta-патчы), heatshrink (алгарытм сціску), humanfriendly (дапаможныя інструменты), 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

Дадаць каментар