ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Asterinas 0.18.0 β Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΠ΄ΡΠΎ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Rust ΠΈ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΊΡΠΌ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ Linux ABI. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ ΠΎΠΏΠΈΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Β«production-gradeΒ» Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° 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, ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ, Π°Π³Π΅Π½ΡΠΈΡΠ΅ ΠΈ ΡΡΠ»ΡΠ³ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈ ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ptrace ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΡΠΈΡΡΠ΅ΠΌΠ½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ ptrace ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ PTRACE_SETOPTIONS, PTRACE_SYSCALL, PTRACE_PEEK ΠΈ PTRACE_POKE. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π°, Π½Π° Asterinas Π²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΠΏΠΎΠ·Π½Π°ΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°ΡΠΎ GDB ΠΈ strace. ΠΠ° ΡΡΡ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΈ CI-ΡΠ΅ΡΡΠΎΠ²Π΅.ΠΠΎΠ² NVMe Π΄ΡΠ°ΠΉΠ²Π΅Ρ.
Π Π±Π»ΠΎΡΠ½ΠΈΡ ΡΠ»ΠΎΠΉ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ NVMe Π΄ΡΠ°ΠΉΠ²Π΅Ρ. Π’ΠΎΠ²Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Asterinas Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π²Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΄ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π°Π»Π½ΠΎ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΡΡΠ²ΡΡΠ½ΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅.ΠΠ°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ EXT2 Π΄ΡΠ°ΠΉΠ²Π΅Ρ.
Π€Π°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° EXT2 Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ ΡΠΎΠ²Π° Ρ ΠΎΠ±ΡΠ°ΡΠ° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ΅ΠΊ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅: ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°Π½Π΅ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π°Π»Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° ΡΡΠ΅Π΄Π°.ΠΡΠΎΠΌΠ΅Π½ΠΈ Π² VFS ΠΈ ΠΊΠ΅ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ.
Π VFS Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π½Π° Dentry, ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ΅ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° pivot_root, Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° O_TMPFILE ΠΏΡΠΈ open/openat ΠΈ Π΅ ΠΏΠΎΠΏΡΠ°Π²Π΅Π½Π° Π³ΡΠ΅ΡΠΊΠ° Π² ΠΊΠ΅ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° procfs.
ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° /proc/mounts, /proc/[pid]/auxv, /proc/[tid], Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² /proc/[pid]/maps ΠΈ mountstats. Π’ΠΎΠ²Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Ρ Linux ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ°ΠΊΠ²Π°Ρ ΠΏΠΎΠ·Π½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° /proc.ΠΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ.
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ vsock, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° IPv6, ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° UDP ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ°Π²Π°ΡΠ° ΠΏΡΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅: bind ΠΊΡΠΌ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΠΎΡΡΠΎΠ²Π΅ ΡΠ΅Π³Π° ΡΠ΅ ΠΎΡΡ Π²ΡΡΠ»Ρ Π±Π΅Π· CAP_NET_BIND_SERVICE.ΠΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π½Π°ΡΠ°Π»Π΅Π½ LSM ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ.
Π ΡΠ΅Π»ΠΈΠ·Π° Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° capability bounding set, ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅, ΠΈ Π½Π°ΡΠ°Π»Π΅Π½ ΠΊΠ°ΡΠΊΠ°Ρ Π½Π° 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
