ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Asterinas Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ядро Π½Π° языкС Rust, совмСстимоС с Linux

Π“Ρ€ΡƒΠΏΠΏΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ· ΠšΠΈΡ‚Π°Ρ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ядро Asterinas, написанноС Π½Π° языкС Rust ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для использования Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Для упрощСния ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с ΡƒΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ систСмными ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ядро прСдоставляСт ABI (Application Binary Interface), совмСстимый с ядром Linux ΠΈ способный ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ вмСсто Π½Π΅Π³ΠΎ. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MPL (Mozilla Public License).

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся с осСни 2022 Π³ΠΎΠ΄Π° ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ ΡƒΠΆΠ΅ Π² этом Π³ΠΎΠ΄Ρƒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ уровня, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ x86-64. Начиная со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π³ΠΎΠ΄Π° основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ оборудования ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ CPU. Из ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Ρ… областСй примСнСния Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ систСмы, завязанныС Π½Π° Linux ABI, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ высокого уровня защищённости. НапримСр, Asterinas прСдлагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для формирования систСмного окруТСния Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, для изоляции ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠ°ΠΊ ARM CCA, AMD SEV ΠΈ Intel TDX, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° сторонС хост-систСмы, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Для сниТСния вСроятности появлСния ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Π³Π»Π°Π²Π½Ρ‹ΠΌ источником Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ опасных уязвимостСй, ΠΏΡ€ΠΈ написании Asterinas задСйствован язык Rust ΠΈ Ρ‚Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ использования unsafe-Π±Π»ΠΎΠΊΠΎΠ². Π―Π΄Ρ€ΠΎ построСно с использованиСм Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ framekernel, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ возмоТности изоляции микроядСр с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹Ρ… ядСр.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ядра Π² Asterinas Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‰Π΅ΠΌ адрСсном пространствС, Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ достигаСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ логичСского раздСлСния бСзопасного ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ. Π―Π΄Ρ€ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΠΎ Π½Π° Π΄Π²Π΅ части, написанныС Π½Π° Rust: OS Framework ΠΈ OS Services. Π’ OS Services Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ unsafe-Π±Π»ΠΎΠΊΠΎΠ², Π° всС Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ выполнСния ΠΊΠΎΠ΄Π° Π² Π±Π»ΠΎΠΊΠ°Ρ… unsafe, вынСсСны Π² OS Framework ΠΈ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· высокоуровнСвый API. ВсС систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ OS Services ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ unsafe-Π±Π»ΠΎΠΊΠΈ.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ систСмных сСрвисов ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра прСдлагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнтарий OSDK (Operating System Development Kit), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ cargo-osdk для создания, сборки, тСстирования ΠΈ запуска ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ OSTD (Operating System Standard Library), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΡŽ стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Rust(crate std), Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ для использования Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru