Monolinux — jednofajłowy dystrybucja, uruchamiająca się na CPU ARMv7 528 MHz w ciągu 0.37 sekundy

Erik Moqvist, autor platformy Simba i narzędzi cantools, rozwija nową dystrybucję Monolinux, skupioną na tworzeniu systemów Linux do wbudowanych zastosowań uruchamiających określone aplikacje napisane w języku C. Dystrybucja wyróżnia się tym, że komponenty oprogramowania są zorganizowane w postaci jednego statycznie skompilowanego pliku wykonywalnego, który zawiera wszystkie składniki potrzebne do działania aplikacji (dystrybucja zasadniczo składa się z jądra Linux i ramdysku ze statycznie skompilowanym procesem init, obejmującym aplikację i niezbędne biblioteki). Kod rozpowszechniany na licencji MIT.

W środowisku udostępniane są wszystkie podsystemy i wywołania systemowe jądra Linux, w tym dostęp do systemu plików, stosu sieciowego i sterowników urządzeń. Do łączenia z aplikacją dostępne są takie biblioteki jak ml (biblioteka C Monolinux z powłoką, klientami DHCP i NTP, Device-mapper itd.), (196 tysięcy linii kodu, 11 autorów, 7 komiterów, 11 otwartych problemów); (framework asynchroniczny), bitstream, curl (HTTP, FTP,...), detools (łatki delta), heatshrink (algorytm kompresji), humanfriendly (narzędzia pomocnicze), mbedTLS, xz i zlib. Wspierany jest szybki cykl rozwoju, który pozwala na ocenę nowej wersji w ciągu kilku sekund po wprowadzeniu zmian w kodzie.

Wersje Monolinux są przygotowane dla płyt Raspberry Pi 3 i Jiffy. Ostateczny rozmiar kompilacji wynosi około 800 KB. Płyta Jiffy zawiera SoC i.MX6UL z CPU ARMv7-A (528 MHz), 1 GB DDR3 RAM i 4 GB eMMC. Czas bootowania na płycie Jiffy wynosi zaledwie 0.37 sekundy - od włączenia do gotowości systemu plików Ext4. Z tego czasu 1 ms zajmuje inicjalizacja sprzętowa SoC, 184 ms na wykonanie kodu EEPROM, 86 ms na działanie bootloadera, 62 ms na uruchomienie jądra Linux i 40 ms na aktywację Ext4. Czas ponownego uruchomienia wynosi 0.26 sekundy. W przypadku użycia stosu sieciowego, z powodu opóźnień przy negocjowaniu kanału Ethernet i uzyskiwaniu parametrów sieci, system jest gotowy do interakcji sieciowej po 2.2 sekundach.

W systemie użyto jądra Linux 4.14.78 w minimalnej konfiguracji z dodatkowymi łatkami, eliminującymi zbędne opóźnienia w sterowniku MMC (MMC jest podłączany przez oprogramowanie płyty i w momencie uruchamiania sterownika już aktywowany) i inicjującymi uruchamianie sterowników MMC i FEC (Ethernet) w trybie równoległym.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster