Разработчик Эрик Моквист создал однофайловый дистрибутив Linux под названием Monolinux. Проект ориентирован на встраиваемые системы и одноплатные ПК, но для каждой модели необходимо собирать отдельную его версию. Запуск модификации для ПК Jiffy занимает всего 0,37 секунды.
Сверхкомпактный дистрибутив
Выпущен новый дистрибутив Linux, состоящий в буквальном смысле из одного файла. Над его созданием трудится девелопер Эрик Моквист (Erik Moqvist), ранее разработавший набор инструментов Cantools и платформу Simba.
Исходный код своей разработки Моквист опубликовал на сервисе GitHub, принадлежащем Microsoft. Код распространяется под лицензией открытого ПО Массачусетского технологического института (MIT), созданной в конце 80 годов XX века.
Согласно приложенному описанию, Monolinux создается для работы на встраиваемых системах, а его дистрибутив ориентирован на запуск программ, написанных на языке C и встроенных непосредственно в него.
Из чего состоит дистрибутив
По заявлению Эрика Моквиста, Monolinux представляет собой статически связанный исполняемый файл. При статическом связывании, в отличие от динамического, содержимое библиотек включается непосредственно в сам исполняемый файл, а не находится в отдельных файлах. Статическое связывание позволяет в том числе, исключить какие-либо конфликты версий этих файлов в целевой системе.
В составе файла Monolinux, утверждает разработчик, есть полноценное ядро Linux со всеми его возможностями, а также RAM-диск с программой для запуска и требуемыми для этого библиотеками.
Такой подход и позволил Моквисту создать однофайловый дистрибутив, в котором присутствуют все подсистемы ядра Linux, в том числе сетевой стек, драйверы для устройств компьютера, на котором он запускается, и алгоритмы работы с файловой системой. Моквист также привел список библиотек, поместившихся в его дистрибутив – это heatshrink, mbedTLS, xz, zlib, bitstream, curl, detools, humanfriendly и ml (си-библиотека Monolinux).
За основу своего детища Моквист взял дистрибутив Linux версии 4.14.78, несмотря на то, что в настоящее время самой актуальной является версия 5.7.4, вышедшая 18 июня 2020 г. В дистрибутиве используется минимальная его конфигурация, дополненная, в то же время, различными улучшениями. В частности, в составе есть патч для устранения задержек в работе драйвера флеш-памяти MMC, что позволяет Monolinux быстрее запускаться на встраиваемых системах с такой памятью.
Узкоспециализированный дистрибутив
В текущей версии Monolinux невозможно установить на любой подходящий компьютер. Эрик Моквист по подготовил две редакции своего дистрибутива, по одной для одноплатных компьютеров Raspberry Pi 3 и Jiffy, и попутно рассказал, как быстро загружается его творение в версии для Jiffy. Итоговый размер дистрибутива для этого ПК составил немногим больше 4,9 МБ – в него вошли ядро Linux (3,5 МБ), RAM-диск (1,4 МБ) и дерево устройств (4 КБ).
Одноплатный ПК Jiffy базируется на однокристальной системе i.MX6UL, в составе которой есть процессорный модуль ARMv7-A на 528 МГц. Также у компьютера имеются 1 ГБ оперативной памяти стандарта DDR3 и флеш-память eMMC на 4 ГБ. В такой конфигурации Jiffy позволяет Monolinux загружаться, по подсчетам разработчика, за 0,37 секунды – это промежуток времени с момента включения и до полной готовности файловой систему Ext4.
Jiffy, компьютер, на котором Monolinux запускается за треть секунды
0,37 секунды включают в себя 1 мс, затрачиваемые на аппаратную инициализацию системы на чипе, 184 мс на выполнение кода ПЗУ, 86 мс на отработку загрузчика, плюс еще 62 мс нужны для запуска ядра Linux. Оставшиеся 40 мс занимает активация файловой системы.
В качестве загрузчика автор проекта использовал бутлоадер Punchboot. Свой выбор он обосновал тем, что он работает достаточно быстро для Monolinux, хотя с другими загрузчиками, по его словам, он его в этом проекте не сравнивал.
На перезагрузку такой ПК под управлением Monolinux затрачивает еще меньше времени – 0,26 секунды. Выкладки по Raspberry Pi 3 Моквист не предоставляет, как и список ПК, для которых он планирует сделать сборки своего дистрибутива.
Источник: cnews.ru