μμ€ν 리λμ€ νλ‘μ νΈμμ Rustλ‘ μμ±λμμΌλ©° λ²μ© μ΄μ 체μ μμ μ¬μ©νλλ‘ μ€κ³λ 컀λ λ²μ 0.19λ₯Ό μΆμνμ΅λλ€. μ΄ μ»€λμ 컀λκ³Ό νΈνλλ ABI(μ ν리μΌμ΄μ λ°μ΄λ리 μΈν°νμ΄μ€)λ₯Ό μ 곡ν©λλ€. Linux λμ μ¬μ©ν μλ μμ΅λλ€. μμ€ν 리λμ€ μ»€λκ³Ό λμ€OS μμ€ν νκ²½μ κ²°ν©ν μμ€ν 리λμ€ λμ€OS λ°°ν¬νμ΄ λ³ν κ°λ° μ€μ λλ€. μ΄ νλ‘μ νΈμ μ½λλ 2022λ λΆν° κ°λ°λμ΄ μμΌλ©° MPL(λͺ¨μ§λΌ κ³΅μ© λΌμ΄μ μ€)μ λ°λΌ λ°°ν¬λ©λλ€.
νμ¬ μ»€λμλ 240κ° μ΄μμ μμ€ν νΈμΆμ΄ ꡬνλμ΄ μμ΅λλ€. LinuxAsterinas NixOS λ°°ν¬νμ 100κ° μ΄μμ NixOS ν¨ν€μ§μ ν¨κ» Asterinas 컀λμμ μ μμ μΌλ‘ μλνλ κ²μΌλ‘ κ²μ¦λμμ΅λλ€. μ§μλλ ν¨ν€μ§μλ Xfce, Firefox, bash, systemd, Podman, QEMU, rsync, Apache httpd, nginx, SQLite, Redis, Clang, GCC, Go, Lua, Node.js, OpenJDK, Perl, PHP, Python, Ruby, Rust, Git, FFmpeg, PyTorch, TensorFlow, Ollama, Codex λ±μ΄ μμ΅λλ€.
μ΄ μ»€λμ x86-64 μν€ν μ²λ₯Ό μλ²½νκ² μ§μνκ³ , ARM64, RISC-V 64, Intel TDX κΈ°λ° κ²©λ¦¬ κΈ°λ₯μ κ°μΆ x86-64 μν€ν μ²λ₯Ό λΆλΆμ μΌλ‘ μ§μνλ©°, LoongArch 64 μν€ν μ²μ λν μ΄κΈ° μ§μλ μ 곡ν©λλ€. μ°μ μμ μμ© λΆμΌλ λ€μκ³Ό κ°μ μμ€ν μ ν¬ν¨ν©λλ€. Linux ABIλ₯Ό μ¬μ©νμ§λ§ λ λμ μμ€μ 보μμ΄ νμν©λλ€. μλ₯Ό λ€μ΄, Asterinasλ μμ ν μμ€ν νκ²½μ ꡬμΆνλ λ° μ¬μ©λ μ μλλ‘ μ μλμμ΅λλ€. κ°μ 기기격리λ₯Ό μν΄ ARM CCA, AMD SEV, Intel TDXμ κ°μ κΈ°μ μ΄ μ¬μ©λλ©°, νΈμ€νΈ μμ€ν μΈ‘μμλ 컨ν μ΄λ μ€νμ 보μ₯ν©λλ€.
κ°μ₯ μνν μ·¨μ½μ μ μ£Όμ μμΈμΈ λ©λͺ¨λ¦¬ μ€λ₯ λ°μ κ°λ₯μ±μ μ€μ΄κΈ° μν΄ Asterinasλ Rust μΈμ΄μ μ νμ μΈ unsafe λΈλ‘ μ¬μ©μ μ±ννμ΅λλ€. 컀λμ λ§μ΄ν¬λ‘컀λμ 격리 κΈ°λ₯κ³Ό λͺ¨λ리μ 컀λμ ν¨μ¨μ±μ κ²°ν©νλ €λ νλ μ컀λ μν€ν μ²λ₯Ό κΈ°λ°μΌλ‘ ꡬμΆλμμ΅λλ€.
Asterinasμ 컀λ κ΅¬μ± μμλ 곡μ μ£Όμ 곡κ°μ μμΉνλ©°, 보μμ μμ ν μ½λμ μ μ¬μ μΌλ‘ μ·¨μ½ν μ μλ μ½λλ₯Ό λ Όλ¦¬μ μΌλ‘ λΆλ¦¬ν¨μΌλ‘μ¨ λ¬μ±λ©λλ€. 컀λμ OS νλ μμν¬μ OS μλΉμ€λΌλ λ λΆλΆμΌλ‘ λλλ©°, λ λ€ Rustλ‘ μμ±λμμ΅λλ€. OS μλΉμ€λ unsafe λΈλ‘μ μ¬μ©μ κΈμ§νλ©°, unsafe λΈλ‘μμ μ½λ μ€νμ΄ νμν λͺ¨λ μ μμ€ μμ μ OS νλ μμν¬λ‘ μ΄λλμ΄ κ³ μμ€ APIλ₯Ό ν΅ν΄μλ§ μ κ·Όν μ μμ΅λλ€. λͺ¨λ μμ€ν νΈμΆ, νμΌ μμ€ν λ° λλΌμ΄λ²λ OS μλΉμ€ μμ€μμ ꡬνλλ©° unsafe λΈλ‘μ ν¬ν¨ν μ μμ΅λλ€.
μμ€ν μλΉμ€ λ° μ»€λ λͺ¨λ κ°λ°μ μν΄ OSDK(μ΄μ체μ κ°λ° ν€νΈ)κ° μ 곡λλ©°, OSDKμλ μ΄μ체μ κ΅¬μ± μμλ₯Ό μμ±, λΉλ, ν μ€νΈ λ° μ€ννλ λ° μ¬μ©ν μ μλ cargo-osdk μ νΈλ¦¬ν°κ° ν¬ν¨λμ΄ μμ΅λλ€. κ°λ°μλ λν μ΄μ체μ κ΅¬μ± μμμμ μ¬μ©νκΈ°μ μ ν©νκ² μμ λ Rust νμ€ λΌμ΄λΈλ¬λ¦¬(crate std)λ₯Ό ν¬ν¨νλ OSTD(μ΄μ체μ νμ€ λΌμ΄λΈλ¬λ¦¬) μΈνΈμλ μ κ·Όν μ μμ΅λλ€.
Asterinas 0.19μ λ³κ²½ μ¬νμ λ€μκ³Ό κ°μ΅λλ€.
- DRM(Direct Rendering Manager) μλΈμμ€ν
, /dev/dri μ₯μΉ, KMS(컀λ λͺ¨λ μ€μ ) μΈν°νμ΄μ€ λ° "modesetting" λλΌμ΄λ²κ° ꡬνλμ΄ κΈ°μ‘΄μ νλ μλ²νΌλ₯Ό μ¬μ©νλ fbdev λλΌμ΄λ² λμ X.Org μλ² λ° Mesa κΈ°λ°μ νμ€ κ·Έλν½ μ€νμ μ€νν μ μκ² λμμ΅λλ€.
- AArch64(ARM64) μν€ν μ² μ§μμ΄ μΆκ°λμμΌλ©°, μ΄μ x86-64μ ν¨κ» μ£Όμ κ°λ° μν€ν μ²λ‘ μ¬μ©λ©λλ€. AArch64μ λν 2λ¨κ³ μ§μμ΄ κ΅¬νλμ΄ κΈ°λ³Έ κΈ°λ₯, μ§μμ ν΅ν© ν μ€νΈ λ° λΆλΆ ν μ€νΈ 컀λ²λ¦¬μ§κ° 보μ₯λ©λλ€.
- Kata 컨ν
μ΄λ λ° κΈ°λ° μ»¨ν
μ΄λμμ κ²μ€νΈ μμ€ν
μΌλ‘ μ€νλ μ μλλ‘ Asterinasλ₯Ό μ μ©νλ μμ
μ΄ κ³μλμμ΅λλ€. νμ€ μ»€λ νμΌ μμ€ν
ν
μ€νΈ μ€μνΈλ₯Ό μ±κ³΅μ μΌλ‘ ν΅κ³Όνλ μλ‘μ΄ Overlayfs ꡬνμ΄ μ μλμμ΅λλ€. Linux xfstestsλ ν¬ν¨λ©λλ€. μλ‘μ΄ λ§μ΄ν
APIκ° κ΅¬νλμμ΅λλ€. virtio-fs μ½λκ° μμ νλμμ΅λλ€. νλ‘ν μ½ μ§μμ΄ μΆκ°λμμ΅λλ€.
QEMU, ν΄λΌμ°λ νμ΄νΌλ°μ΄μ λ° νμ΄μ΄ν¬λ컀μμ μ¬μ©λλ λ€μ΄λ νΈ λΆν λ°©μμ λλ€. λΆν μλκ° ν₯μλμμ΅λλ€. κ°μ λ¨Έμ ν΄λΉ λ©λͺ¨λ¦¬λ μΈν TDX κΈ°μ μ μ¬μ©νμ¬ μνΈνλ©λλ€. - OSTD(μ΄μ체μ νμ€ λΌμ΄λΈλ¬λ¦¬) νλ μμν¬λ Intel VMXλ₯Ό κΈ°λ°μΌλ‘ νλ μ΅μνμ νμ΄νΌλ°μ΄μ λ₯Ό μμ±νκΈ° μν κΈ°λ³Έ APIλ₯Ό ꡬνν©λλ€.
- Rust λλΌμ΄λ² κ°λ° λͺ¨λΈμ λν μ§μμ΄ μΆκ°λμμ΅λλ€. 컀λ κ΅¬μ± μμμ μ μ¬ν κΈ°λ₯μ κ°μ§ aster-device κ΅¬μ± μμκ° μΆκ°λμμ΅λλ€. Linux λλΌμ΄λ² κ°λ°μ μν κΈ°λ³Έμ μΈ μμμ μΆμν κΈ°λ₯μ κ°μΆκ³ μμ§λ§, μμ νμ§ μμ μ½λ μμ΄ Rustλ‘ μμ±λμμ΅λλ€.
- μ΄μ μ체 νΈμ€ν μ΄ κ°λ₯ν©λλ€. Asterinas 컀λκ³Ό NixOS ν¨ν€μ§κ° ν¬ν¨λ νκ²½μμ Asterinas 컀λμ λΉλν μ μμ΅λλ€.
μΆμ² : opennet.ru
