ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Asterinas 0.18.0 β Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΠ΄ΡΠΎ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Rust ΠΈ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΊΡΠΌ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Ρ Linux ABI. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ ΠΎΠΏΠΈΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° "ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²Π°" Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° Linux Ρ Π°ΠΊΡΠ΅Π½Ρ Π²ΡΡΡ Ρ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° ΡΡΠ΅Π΄Π° Π½Π° Linux. ΠΠΎΠ΄ΡΡ Π½Π° Asterinas Π΅ ΠΎΡΠΊΡΠΈΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π½Π° GitHub, ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° β MPL 2.0. Π Π΅Π»ΠΈΠ·ΡΡ Asterinas 0.18.0 Π±Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π½Π° 4 ΡΠ½ΠΈ 2026 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° Π½Π° 9 ΡΠ½ΠΈ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Phoronix.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π» Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° Asterinas Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΊΠ°ΡΠΎ Π³ΠΎΡΡΡΠ²Π°ΡΠ° ΠΠ‘ Π·Π° Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° VM Kata Containers ΠΈ Confidential Containers. ΠΠ° ΡΠ°Π·ΠΈ ΡΠ΅Π» Π² ΡΠ΄ΡΠΎΡΠΎ Π±ΡΡ Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π»ΠΈΠΏΡΠ²Π°ΡΠΈΡΠ΅ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ: ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΡΠ° Π½Π° ΠΈΠΌΠ΅Π½Π°, cgroups, virtio-fs, virtio-rng ΠΈ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡ vsock Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Ρ ΠΎΡΡΠ° ΠΈ Π³ΠΎΡΡΡΠ²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
Π‘ΠΏΠΈΡΡΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π² Kata Containers ΠΈ Confidential Containers.
Asterinas 0.18 ΠΏΡΠ°Π²ΠΈ Π²Π°ΠΆΠ½Π° ΡΡΡΠΏΠΊΠ° ΠΊΡΠΌ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΊΠ°ΡΠΎ Π³ΠΎΡΡΡΠ²Π°ΡΠ° ΠΠ‘ Π²ΡΡΡΠ΅ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ. Π’ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π½Π΅ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Ρ ΠΎΡΡΠ°, Π° Π²ΡΡΡΠ΅ Π² ΠΎΡΠ΄Π΅Π»Π½Π° VM, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π² ΡΡΠ΅Π΄ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ.ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Π·Π° namespaces.
Π ΡΠ΄ΡΠΎΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ Π° IPC namespace ΠΈ cgroup namespace, ΠΊΠ°ΠΊΡΠΎ ΠΈ nsfs Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΡΠ° Π½Π° ΠΈΠΌΠ΅Π½Π° ΡΡΠ΅Π· /proc/[pid]/ns. Π’ΠΎΠ²Π° ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π²Π° Asterinas Π΄ΠΎ ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΡ Linux ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.ΠΠ°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Π·Π° cgroups.
Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ PID sub-controller ΠΈ ΡΠ°ΡΡΠΈΡΠ½Π° ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Π·Π° CPU sub-controller. Π ΡΠ°ΡΡΠ½ΠΎΡΡ, ΡΠ²Π΅ΡΠ½Π°Ρ Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° cpu.stat ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈΡΠ΅ Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Ρ Π»ΠΈΠΌΠΈΡΠΈ cpu.weight ΠΈ cpu.max. Π’ΠΎΠ²Π° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΡΡΠ»ΠΎΡΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ cgroups, Π½ΠΎ Π²Π΅ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΎΡΠ½ΠΎΠ²Π° Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ.virtio-fs Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ Ρ ΠΎΡΡΠ°.
ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° virtio-fs, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π½Π° Π³ΠΎΡΡΡΠ²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° ΠΎΡ Ρ ΠΎΡΡΠ°. ΠΠ° VM-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΡΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π±Π΅Π· ΡΠ΅ΠΆΠΊΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ.virtio-rng ΠΈ /dev/hwrng.
ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ virtio-rng Ρ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½Π° Π΅Π½ΡΡΠΎΠΏΠΈΡ ΠΏΡΠ΅Π· /dev/hwrng. Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° Π½ΠΎΡΠΌΠ°Π»Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΠΈΡΠ»Π° Π²ΡΡΡΠ΅ Π² Π³ΠΎΡΡΡΠ²Π°ΡΠ°ΡΠ° ΠΠ‘.ΠΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½ vsock.
ΠΠ°ΠΏΡΠ»Π½ΠΎ Π΅ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ vsock β ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Ρ ΠΎΡΡΠ° ΠΈ Π³ΠΎΡΡΡΠ²Π°ΡΠ°ΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Kata Containers ΠΈ Confidential Containers ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈ ΠΊΠ°Π½Π°Π»ΠΈ, Π°Π³Π΅Π½ΡΠΈ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ VM ΠΈ ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.ΠΠΎΡΠ²ΠΈ ΡΠ΅ ptrace ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² userspace.
Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΏΠΎΠ²ΠΈΠΊ ptrace ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ PTRACE_SETOPTIONS, PTRACE_SYSCALL, PTRACE_PEEK ΠΈ PTRACE_POKE. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π° Π½Π° Asterinas ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ·Π½Π°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΡΠΎ GDB ΠΈ strace. ΠΠ° ΡΡΡ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΈ CI ΡΠ΅ΡΡΠΎΠ²Π΅.ΠΠΎΠ² NVMe Π΄ΡΠ°ΠΉΠ²Π΅Ρ.
Π Π±Π»ΠΎΠΊΠΎΠ²ΠΈΡ ΡΠ»ΠΎΠΉ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ NVMe Π΄ΡΠ°ΠΉΠ²Π΅Ρ. Π’ΠΎΠ²Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Asterinas Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈ Π½ΠΎΡΠΈΡΠ΅Π»ΠΈ ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π²Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΄ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ°ΡΡ Π½Π° ΡΠ΅Π°Π»Π½ΠΈ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.ΠΠ°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ EXT2 Π΄ΡΠ°ΠΉΠ²Π΅Ρ.
Π€Π°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° EXT2 Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡΠ½ΠΎΠ²ΠΎ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ ΡΠΎΠ²Π° Ρ ΠΎΠ±ΡΠ°ΡΠ° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° storage stack: ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°Π½Π΅ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π°Π»Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° ΡΡΠ΅Π΄Π°.ΠΡΠΎΠΌΠ΅Π½ΠΈ Π² VFS ΠΈ page cache.
Π VFS Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Dentry revalidate, ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° page cache, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ pivot_root, Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° O_TMPFILE Π·Π° open/openat, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΏΠΎΠΏΡΠ°Π²Π΅Π½Π° Π³ΡΠ΅ΡΠΊΠ° Π² page cache, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² userspace.Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° procfs.
ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° /proc/mounts, /proc/[pid]/auxv, /proc/[tid], Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² /proc/[pid]/maps ΠΈ mountstats. Π’ΠΎΠ²Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Ρ Linux ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ°ΠΊΠ²Π°Ρ ΠΏΠΎΠ·Π½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° /proc.Π‘Π΅ΡΠ΅Π²ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ.
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ vsock, ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π½Π°ΡΠ°Π»Π΅Π½ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° IPv6, ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° UDP ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ°Π²Π°ΡΠ° ΠΏΡΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅: bind ΠΊΡΠΌ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΠΎΡΡΠΎΠ²Π΅ ΡΠ΅Π³Π° ΡΠ΅ ΠΎΡΡ Π²ΡΡΠ»Ρ Π±Π΅Π· CAP_NET_BIND_SERVICE.ΠΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ capabilities ΠΈ Π½Π°ΡΠ°Π»Π΅Π½ LSM framework.
Π ΡΠ΅Π»ΠΈΠ·Π° Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° capabilities, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° capability bounding set, ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ credentials, ΠΈ Π½Π°ΡΠ°Π»Π΅Π½ ΠΊΠ°ΡΠΊΠ°Ρ LSM. Π’ΠΎΠ²Π° Π΅ ΡΠ°ΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π½Π° Asterinas Π΄ΠΎ Linux.ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² PCI, TTY ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ°.
ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ Π΅ ΠΎΡΠΊΡΠΈΡΠΈΠ΅ Π½Π° PCI ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° PCI ECAM Π½Π° x86, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ TTY, ΠΊΠΎΠ½Π·ΠΎΠ»Π° NS16550A UART, /dev/ttyS0 ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ console=ttyS0. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°ΡΠ° Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π°.Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Asterinas NixOS.
Π Asterinas NixOS ΡΠ΅Π³Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ Π½Π°Π΄ 100 ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Codex, QEMU ΠΈ Firefox. ΠΠ° Firefox Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ARCH_GET_GS ΠΈ ARCH_SET_GS.ΠΠΎΠ²ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠΈ.
Π ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ΠΈ Linux kselftest, xfstests, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Π° Go, Python ΠΈ JDK, ΠΊΠ°ΠΊΡΠΎ ΠΈ QEMU ΡΠ΅ΡΡΠΎΠ²Π΅ Π·Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π» Π·Π° Π·ΡΡΠ»ΠΎΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°: Asterinas ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π²ΡΠ΅ ΠΏΠΎ-Π°ΠΊΡΠΈΠ²Π½ΠΎ Π² ΡΠ΅Π°Π»Π½ΠΈ Linux Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ.ΠΡΠΎΠΌΠ΅Π½ΠΈ Π² OSTD ΠΈ OSDK.
Π OSTD crate log Π΅ Π·Π°ΠΌΠ΅Π½Π΅Π½ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ API Π·Π° Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅, DMA API Π΅ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½, Π΄ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π·Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ Π½Π° Pod Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° zerocopy. ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Docker ΡΡΠ΅Π΄Π° Π½Π° ARM/aarch64.ΠΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°.
Π Asterinas Book ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅, Π°Π½Π°Π»ΠΈΠ· Π½Π° soundness Π·Π° OSTD, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° Kata Containers ΠΈ Confidential Containers. Π’ΠΎΠ²Π° ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°, ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΎ-Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΈΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΅ ΡΡΠ°Π½Π°Π» Π΅Π΄Π½Π° ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π½Π°ΡΠΎΠΊΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Asterinas 0.18 Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ Π·Π°ΠΌΡΠ½Π° Π·Π° Linux Π·Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, Π½ΠΎ ΡΠ΅Π»ΠΈΠ·ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΏΡΠ΅Π΄Π²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π° ΡΡΡΠ²ΡΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. ΠΡΠΎΠ±Π΅Π½ΠΎ Π²Π°ΠΆΠ½ΠΈ ΡΠ° ΡΡΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ: ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ Linux ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΠ° Π² VM-Π±Π°Π·ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
