ν΄λΉ νΈκ° λ°νλμμ΅λλ€. μμ€ν 리λμ€ 0.18.0 β Rustλ‘ μμ±λμμΌλ©° νΈνμ±μ λͺ©νλ‘ νλ μ€νμ μΈ μ΄μ 체μ λ° μ»€λ Linux ABI. μ΄ νλ‘μ νΈλ "μμ° μμ€"μ λμμ λ§λ€κΈ° μν μλλ‘ μ리맀κΉνκ³ μμ΅λλ€. Linux λ©λͺ¨λ¦¬ μμ μ±, μ±λ₯ λ° μ μμ μΈ μ€νμ μ€μ μ λ‘λλ€. Linux-μ¬μ©μ νκ²½. Asterinas μ½λλ μ€νμμ€μ΄λ©° νΈμ€ν λμ΄ μμ΅λλ€. GitHubμμ΄ νλ‘μ νΈμ μ£Όμ λΌμ΄μ μ€λ MPL 2.0μ λλ€. Asterinas 0.18.0 λ²μ μ 2026λ 6μ 4μΌμ μΆμλμμ΅λλ€.κ·Έλ¦¬κ³ 6μ 9μΌμ κ·Έλ μ΄ λ¬Έμ μ μ£Όλͺ©νμ΅λλ€. Phoronix.
μ΄λ² 릴리μ€μ μ£Όμ λͺ©νλ Asterinasλ₯Ό κ°μ λ¨Έμ κΈ°λ° νκ²½μ κ²μ€νΈ μ΄μ 체μ λ‘ μ¬μ©ν μ μλλ‘ μ€λΉνλ κ²μ λλ€. μΉ΄ν 컨ν μ΄λ ΠΈ κΈ°λ° μ»¨ν μ΄λμ΄λ₯Ό μν΄ μ»€λμ λλ½λ νμ μμ€ λ©μ»€λμ¦μ΄ μΆκ°λμμ΅λλ€. λ€μμ€νμ΄μ€, cgroups, virtio-fs, virtio-rng, κ·Έλ¦¬κ³ νΈμ€νΈμ κ²μ€νΈ μμ€ν κ°μ λ°μ΄ν° κ΅νμ μν μ¬μ€κ³λ vsockμ΄ κ·Έκ²μ λλ€.
μ£Όμ λ³κ²½ μ¬ν λͺ©λ‘:
Kata 컨ν μ΄λ λ° κΈ°λ° μ»¨ν μ΄λμμ μΆμλ₯Ό μ€λΉ μ€μ λλ€.
Asterinas 0.18μ 격리λ 컨ν μ΄λνλ κ°μ λ¨Έμ λ΄λΆμμ κ²μ€νΈ μ΄μ 체μ λ‘ μ€νλλ λ°©ν₯μΌλ‘ μ€μν μ§μ μ μ΄λ£¨μμ΅λλ€. μ΄λ 컨ν μ΄λκ° νΈμ€νΈ 컀λμμ μ§μ μ€νλλ κ²μ΄ μλλΌ λ³λμ κ°μ λ¨Έμ λ΄λΆμμ μ€νλλ μλ리μ€, νΉν κΈ°λ° μ»΄ν¨ν νκ²½μμ μ€μν©λλ€.λ€μμ€νμ΄μ€ μ§μ.
μ΄μ 컀λμλ IPC λ€μμ€νμ΄μ€μ cgroup λ€μμ€νμ΄μ€λ λ¬Όλ‘ , /proc/[pid]/nsλ₯Ό ν΅ν λ€μμ€νμ΄μ€ ννμ μ§μνλ nsfsκ° ν¬ν¨λμ΄ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ Asterinasλ νλ‘μΈμ€ 격리 λͺ¨λΈμ λμ± κ°κΉμμ‘μ΅λλ€. Linux-컨ν μ΄λ.cgroupsμ λν μ΄κΈ° μ§μ.
PID μλΈ μ»¨νΈλ‘€λ¬μ λΆλΆμ μΈ CPU μλΈ μ»¨νΈλ‘€λ¬ μ§μμ΄ κ΅¬νλμμ΅λλ€. ꡬ체μ μΌλ‘, cpu.stat ν΅κ³μ cpu.weight λ° cpu.max μ ν νμΌμ λν μ€ν μ΄ μΆκ°λμμ΅λλ€. μ΄λ μμ§ cgroups λ©μ»€λμ¦ μ 체λ₯Ό μλ²½νκ² κ΅¬νν κ²μ μλμ§λ§, 컨ν μ΄λ μλ리μ€μ νμν κΈ°λ°μ μ΄λ―Έ μ 곡ν©λλ€.virtio-fsλ νΈμ€νΈμ νμΌ μμ€ν μ 곡μ νκΈ° μν λꡬμ λλ€.
virtio-fs μ§μμ΄ μΆκ°λμ΄ κ²μ€νΈ μμ€ν μ΄ νΈμ€νΈμμ μ 곡νλ νμΌ μμ€ν μ μ¬μ©ν μ μκ² λμμ΅λλ€. VM 컨ν μ΄λμ κ²½μ°, μ΄λ λ²κ±°λ‘μ΄ ν΄κ²° λ°©λ² μμ΄ λ°μ΄ν°λ₯Ό μ μ‘ν μ μλ ν΅μ¬μ μΈ λ©μ»€λμ¦μ λλ€.virtio-rng λ° /dev/hwrng.
/dev/hwrngλ₯Ό ν΅ν΄ νλμ¨μ΄ μνΈλ‘νΌλ₯Ό λ΄λ³΄λ΄λ virtio-rngλ₯Ό μΆκ°νμ΅λλ€. μ΄λ κ²μ€νΈ OS λ΄μμ μνΈν μμ λ° λμ μμ±κΈ°κ° μ λλ‘ μλνλ λ° νμν©λλ€.μ¬νμ© μμ¬λ‘ λ§λ μλ§.
νΈμ€νΈμ κ²μ€νΈ κ°μ λ¨Έμ κ°μ ν΅μ λ©μ»€λμ¦μΈ vsockμ΄ μμ ν μλ‘κ² μμ±λμμ΅λλ€. Kata 컨ν μ΄λ λ° κΈ°λ° μ»¨ν μ΄λ νκ²½μμ μ΄λ VMκ³Ό μ€ν νκ²½ κ°μ μ μ΄ μ±λ, μμ΄μ νΈ λ° μλΉμ€ μνΈ μμ©μ μ€μν μν μ ν©λλ€.Ptrace λ° μ¬μ©μ κ³΅κ° λλ²κΉ μ§μ κΈ°λ₯μ΄ μΆκ°λμμ΅λλ€.
ptrace μμ€ν νΈμΆκ³Ό κΈ°λ³Έ μμ μΈ PTRACE_SETOPTIONS, PTRACE_SYSCALL, PTRACE_PEEK, PTRACE_POKEκ° κ΅¬νλμμ΅λλ€. μ΄λ₯Ό ν΅ν΄ GDB λ° straceμ κ°μ μ΅μν λλ²κΉ λꡬλ₯Ό Asterinasμμ μ€νν μ μμ΅λλ€. μ΄λ¬ν λꡬμ λν κ²μ¦λ μ¬μ©λ² λ° CI κ²μ¬ κ΄λ ¨ λ¬Έμκ° μΆκ°λμμ΅λλ€.μλ‘μ΄ NVMe λλΌμ΄λ²μ λλ€.
λΈλ‘ κ³μΈ΅μ NVMe λλΌμ΄λ²κ° μΆκ°λμμ΅λλ€. μ΄λ₯Ό ν΅ν΄ Asterinasλ μ΅μ μ€ν λ¦¬μ§ μ₯μΉμμ νΈνμ±μ νμ₯νκ³ μ€μ μλ² νλμ¨μ΄μ κ°μνλ μλ² νλμ¨μ΄ λͺ¨λμμ μμ€ν μ λμ± μ€μ©μ μΌλ‘ μ¬μ©ν μ μκ² λμμ΅λλ€.EXT2 λλΌμ΄λ²λ₯Ό μμ ν μλ‘ μμ±νμ΅λλ€.
EXT2 νμΌ μμ€ν μ΄ μ¬κ΅¬νλμμ΅λλ€. κ°λ°μλ€μ μ΄λ₯Ό μ€ν λ¦¬μ§ μ€νμ μ λ°μ μΈ νλνμ μΌνμΌλ‘ μ€λͺ νλ©°, νμΌ νμ μμ€ν μ΄ λμ± μμ μ μ΄κ³ μ€μ μ¬μ©μ νκ²½μμ μ¬μ©νκΈ°μ μ ν©νκ² κ°μ λ κ²μ΄λΌκ³ λ°νμ΅λλ€.VFS λ° νμ΄μ§ μΊμ λ³κ²½ μ¬ν.
VFSλ Dentry μ¬κ²μ¦ λ©μ»€λμ¦, μ¬μμ λ νμ΄μ§ μΊμ ꡬν, pivot_root ꡬν, open/openatμ λν O_TMPFILE μ§μ, κ·Έλ¦¬κ³ μ¬μ©μ 곡κ°μμ μ΄κΈ°νλμ§ μμ λ©λͺ¨λ¦¬ λμλ₯Ό μ λ°ν μ μλ νμ΄μ§ μΊμ λ²κ·Έ μμ μΌλ‘ μ λ°μ΄νΈλμμ΅λλ€.procfs νμ₯.
/proc/mounts, /proc/[pid]/auxv, /proc/[tid]κ° μΆκ°λμκ³ , /proc/[pid]/maps λ° mountstatsμ μΆκ° νλͺ©μ΄ ν¬ν¨λμμ΅λλ€. μ΄λ₯Ό ν΅ν΄ νΈνμ±μ΄ ν₯μλμμ΅λλ€. Linux- /proc ꡬ쑰λ₯Ό μμνλ μμ© νλ‘κ·Έλ¨ λ° μ§λ¨ λꡬ.λ€νΈμν¬ κ°μ .
μ¬μμ±λ vsock μΈμλ IPv6 μ΄κΈ° μ§μ, UDP ꡬν μμ , κΆν μλ ν¬νΈμ λ°μΈλ©ν λ κΆν νμΈ κΈ°λ₯μ΄ μΆκ°λμμ΅λλ€. μ΄μ CAP_NET_BIND_SERVICE μμ΄ μ΄λ¬ν ν¬νΈμ λ°μΈλ©νλ©΄ κ±°λΆλ©λλ€.μλ λ©μ»€λμ¦ λ° μ΄κΈ° LSM νλ μμν¬.
μ΄λ² 릴리μ€μλ κΈ°λ₯ ꡬν, κΈ°λ₯ κ²½κ³ μ§ν© μ§μ, μ격 μ¦λͺ κ΄λ ¨ μμ€ν νΈμΆ μμ λ° μ΄κΈ° LSM νλ μμν¬κ° ν¬ν¨λ©λλ€. μ΄λ Asterinas 보μ λͺ¨λΈμ λ³΄λ€ μλ²½νκ² κ΅¬ννκΈ° μν μμ μ μΌνμ λλ€. Linux.PCI, TTY λ° μ½μ κ°μ μ¬ν.
PCI μ₯μΉ κ°μ§ κΈ°λ₯μ΄ ν₯μλμκ³ , x86 μν€ν μ²μμ PCI ECAM μ§μμ΄ μΆκ°λμμΌλ©°, μ¬λ¬ κ°μ TTY, NS16550A UART μ½μ, /dev/ttyS0 λ° console=ttyS0 λ§€κ°λ³μμ λν μ§μμ΄ κ΅¬νλμμ΅λλ€. ν€λ³΄λ μ§μ λν κ°μ λμμ΅λλ€.Asterinas NixOS νμ₯ νλ‘κ·Έλ¨.
Asterinas NixOSλ μ΄μ Codex, QEMU, Firefoxλ₯Ό ν¬ν¨νμ¬ 100κ° μ΄μμ μΈκΈ° ν¨ν€μ§λ₯Ό κ²μ¬ν©λλ€. νΉν Firefoxμ κ²½μ° ARCH_GET_GS λ° ARCH_SET_GS μ§μμ΄ μΆκ°λμμ΅λλ€.μλ‘μ΄ μ§λ¨ ν€νΈ.
μ΄ νλ‘μ νΈλ ν΅ν©λμ΄ μμ΅λλ€. Linux kselftest, xfstests, νμ€ Go, Python λ° JDK ν μ€νΈλ λ¬Όλ‘ κ°μνλ μ ν리μΌμ΄μ μ© QEMU ν μ€νΈκΉμ§ ν¬ν¨λ©λλ€. μ΄λ νλ‘μ νΈμ μ±μλλ₯Ό 보μ¬μ£Όλ μ€μν μ§νμ λλ€. Asterinasκ° μ€μ μμ€ν μμ μ μ λ λ§μ΄ ν μ€νΈλκ³ μκΈ° λλ¬Έμ λλ€. Linux-μλ©.OSTD λ° OSDKμ λ³κ²½ μ¬ν.
OSTDμμλ ν¬λ μ΄νΈ λ‘κ·Έκ° μ¬μ©μ μ μ λ‘κΉ APIλ‘ λ체λμκ³ , DMA APIκ° μ¬μμ λμμΌλ©°, νμ μ΄ μ§μ λ λ©λͺ¨λ¦¬ λ³΅μ¬ μμ μ μν νλ μμν¬κ° μΆκ°λμκ³ , Podκ° μ λ‘μΉ΄νΌλ₯Ό μ¬μ©νλλ‘ λ¦¬ν©ν λ§λμμ΅λλ€. κ°λ°μ μν΄ ARM/aarch64 κΈ°λ° Docker νκ²½μ΄ μΆκ°λμμ΅λλ€.λ¬Έμ μ λ°μ΄νΈ.
Asterinas Bookμ μ½λ© κ°μ΄λλΌμΈ, OSTDμ λν 건μ μ± λΆμ, Kata 컨ν μ΄λ λ° κΈ°λ° μ»¨ν μ΄λμ λν λ¬Έμν λ΄μ©μ ν¬ν¨νμ¬ μ λ°μ΄νΈλμμ΅λλ€. μ΄λ 컨ν μ΄λ κ°μν μλ리μ€κ° νλ‘μ νΈμ ν΅μ¬ λͺ©νμμ κ°μ‘°ν©λλ€.
Asterinas 0.18μ λ체νμΌλ‘ κ°μ£Όλ μ μμ΅λλ€. Linux μΌμμ μΈ μ¬μ©μλ μ ν©νμ§ μμ§λ§, μ΄λ² 릴리μ€λ₯Ό ν΅ν΄ νλ‘μ νΈλ μ€μ©μ μΈ μλ² λ° μ»¨ν μ΄λ μλλ¦¬μ€ λ°©ν₯μΌλ‘ ν¬κ² μ§μ λμμ΅λλ€. νΉν μ€μν μΈ κ°μ§ μμμ λ€μκ³Ό κ°μ΅λλ€. νΈνμ± Linux-νλ‘κ·Έλ¨, 격리 λ©μ»€λμ¦ μ§μ λ° VM κΈ°λ° μ»¨ν μ΄λ νκ²½μμμ μλ.
μΆμ² : linux.org.ru
