Erik Moqvist, der Autor der Plattform und des Werkzeugs , entwickelt eine neue Distribution , 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 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 (C-Bibliothek Monolinux mit Shell, DHCP- und NTP-Clients, Device-Mapper usw.), (asynchrones Framework), , (HTTP, FTP, …), (Delta-Patches), (Kompressionsalgorithmus), (Hilfswerkzeuge), , und . 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 und -Platine vorbereitet. Die endgültige Größe der Builds beträgt etwa 800 KB. Die Platine 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 , 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
