Monolinux — ein Ein-Datei-Distribution, die auf einem ARMv7 528 MHz CPU in 0,37 Sekunden bootet.

Erik Moqvist, der Autor der Plattform Simba und des Werkzeugs cantools, entwickelt eine neue Distribution Monolinux, die sich auf die Erstellung von Embedded-Linux-Systemen für den isolierten Betrieb bestimmter in C geschriebenen Anwendungen konzentriert. Die Distribution zeichnet sich dadurch aus, dass die Software in Form einer einzigen statisch zusammengestellten ausführbaren Datei präsentiert wird, die alle Komponenten enthält, die für den Betrieb der Anwendung erforderlich sind (im Wesentlichen stellt die Distribution den Linux-Kernel und ein ram-Disk mit einem statisch zusammengestellten Init-Prozess dar, der die Anwendung und die erforderlichen Bibliotheken umfasst). Der Code wird verbreitet unterliegt der MIT-Lizenz.

stellt alle Subsysteme und Systemaufrufe des Linux-Kernels zur Verfügung, einschließlich Zugriff auf das Dateisystem, Netzwerk-Stack und Gerätetreiber. Für die Anbindung an die Anwendung stehen Bibliotheken wie ml (C-Bibliothek Monolinux mit Shell, DHCP- und NTP-Clients, Device-Mapper usw.), async (asynchrones Framework), bitstream, curl (HTTP, FTP, …), detools (Delta-Patches), heatshrink (Kompressionsalgorithmus), humanfriendly (Hilfswerkzeuge), mbedTLS, xz und zlib. Ein schneller Entwicklungszyklus wird unterstützt, der es ermöglicht, innerhalb weniger Sekunden eine neue Version nach Änderungen am Code zu testen.

Versionen von Monolinux sind für die Raspberry Pi 3 und Jiffy-Platine vorbereitet. Die endgültige Größe der Builds beträgt etwa 800 KB. Die Platine Jiffy ist mit SoC i.MX6UL und CPU ARMv7-A (528 MHz), 1 GB DDR3 RAM und 4 GB eMMC ausgestattet. Die Bootzeit auf der Jiffy-Platine beträgt nur 0,37 Sekunden — von der Einschaltung bis zur Bereitschaft des Ext4-Dateisystems. Davon entfallen 1 ms auf die Hardwareinitialisierung des SoC, 184 ms auf die Ausführung des Bootrom-Codes, 86 ms auf die Arbeit des Bootloaders, 62 ms auf den Start des Linux-Kernels und 40 ms auf die Aktivierung von Ext4. Die Neustartzeit beträgt 0,26 Sekunden. Bei Verwendung des Netzwerk-Stacks benötigt das System aufgrund von Verzögerungen bei der Aushandlung des Ethernet-Kanals und beim Empfang von Netzwerkinformationen 2,2 Sekunden, um bereit für die Netzwerkinteraktion zu sein.

Im System wurde der Linux-Kernel 4.14.78 in minimaler Konfiguration mit zusätzlichen Patches, die unnötige Verzögerungen im MMC-Treiber beseitigen (MMC wird durch die Firmware der Platine angeschlossen und ist zum Zeitpunkt der Aktivierung des Treibers bereits aktiv) und die Initialisierung der MMC- und FEC (Ethernet)-Treiber im parallelen Modus starten.

Quelle: opennet.ru

60GB SSD 8Gb DDR4