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 ΠΈ Ρ‚.ΠΏ.), async (asynchronous framework), bitstream, curl (HTTP, FTP, …), detools (delta-ΠΏΠ°Ρ‚Ρ‡ΠΈ), heatshrink (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия), humanfriendly (Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты), mbedTLS, xz ΠΈ zlib. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ быстрый Ρ†ΠΈΠΊΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ считанных сСкунд ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½ΠΎΠ²ΠΎΠΉ вСрсии послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Monolinux ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для ΠΏΠ»Π°Ρ‚ Raspberry Pi 3 ΠΈ Jiffy. Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ сборок ΠΎΠΊΠΎΠ»ΠΎ 800 ΠšΠ‘. ΠŸΠ»Π°Ρ‚Π° Jiffy оснащСна 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