โครงการ Asterinas ได้ปล่อยเวอร์ชัน 0.18 ซึ่งเป็นเคอร์เนลที่เขียนด้วยภาษา Rust และออกแบบมาเพื่อใช้ในระบบปฏิบัติการทั่วไป เคอร์เนลนี้มี ABI (Application Binary Interface) ที่เข้ากันได้กับเคอร์เนล Linux และสามารถใช้แทนกันได้ ระบบปฏิบัติการ Asterinas NixOS ซึ่งรวมเคอร์เนล Asterinas เข้ากับสภาพแวดล้อมระบบ NixOS กำลังได้รับการพัฒนาควบคู่กันไป รหัสของโครงการนี้เผยแพร่ภายใต้สัญญาอนุญาต MPL (Mozilla Public License)
ปัจจุบัน เคอร์เนลของเคอร์เนลมีการเรียกใช้ระบบประมาณ 240 รายการ Linuxระบบปฏิบัติการ Asterinas NixOS ได้รับการตรวจสอบแล้วว่าสามารถทำงานบนเคอร์เนลของ Asterinas ได้ โดยมีแพ็กเกจ NixOS มากกว่า 100 แพ็กเกจ แพ็กเกจที่รองรับ ได้แก่: 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 การสนับสนุนบางส่วนสำหรับ RISC-V 64 และ x86-64 โดยใช้การแยกส่วนตาม Intel TDX รวมถึงการสนับสนุนเบื้องต้นสำหรับสถาปัตยกรรม LoongArch 64 พื้นที่การใช้งานที่มีความสำคัญลำดับต้นๆ ได้แก่ ระบบที่ใช้สถาปัตยกรรมเหล่านี้ Linux ABI (Assisted Integrity Index) ก็เช่นกัน แต่ต้องการระดับความปลอดภัยที่สูงกว่า ตัวอย่างเช่น มีการเสนอให้ใช้ Asterinas ในการสร้างสภาพแวดล้อมระบบที่ปลอดภัย เครื่องเสมือนโดยใช้เทคโนโลยีต่างๆ เช่น ARM CCA, AMD SEV และ Intel TDX ในการแยกส่วน รวมถึงในฝั่งระบบโฮสต์ ซึ่งช่วยให้สามารถเรียกใช้คอนเทนเนอร์ได้
เพื่อลดโอกาสเกิดข้อผิดพลาดเกี่ยวกับหน่วยความจำ ซึ่งเป็นแหล่งที่มาหลักของช่องโหว่ที่อันตรายที่สุด Asterinas จึงใช้ภาษา Rust และบล็อกที่ไม่ปลอดภัยอย่างจำกัด เคอร์เนลถูกสร้างขึ้นโดยใช้สถาปัตยกรรมเฟรมเคอร์เนล ซึ่งพยายามรวมความสามารถในการแยกส่วนของไมโครเคอร์เนลเข้ากับประสิทธิภาพของเคอร์เนลแบบโมโนลิธิก
ส่วนประกอบหลักของ Asterinas ตั้งอยู่ในพื้นที่แอดเดรสที่ใช้ร่วมกัน และการรักษาความปลอดภัยทำได้โดยการแยกโค้ดที่ปลอดภัยออกจากโค้ดที่อาจมีช่องโหว่ เคอร์เนลแบ่งออกเป็นสองส่วน ซึ่งเขียนด้วยภาษา Rust ทั้งคู่ ได้แก่ OS Framework และ OS Services OS Services ห้ามการใช้บล็อกที่ไม่ปลอดภัย และการดำเนินการระดับต่ำทั้งหมดที่ต้องการการเรียกใช้โค้ดในบล็อกที่ไม่ปลอดภัยจะถูกย้ายไปยัง OS Framework และเข้าถึงได้ผ่าน API ระดับสูงเท่านั้น การเรียกใช้ระบบ ระบบไฟล์ และไดรเวอร์ทั้งหมดถูกนำไปใช้ในระดับ OS Services และไม่สามารถมีบล็อกที่ไม่ปลอดภัยได้
สำหรับการพัฒนาระบบบริการและโมดูลเคอร์เนล มี OSDK (Operating System Development Kit) ให้ใช้งาน ซึ่งมีเครื่องมือ cargo-osdk สำหรับสร้าง คอมไพล์ ทดสอบ และรันส่วนประกอบของระบบปฏิบัติการ นักพัฒนายังสามารถใช้ชุด OSTD (Operating System Standard Library) ซึ่งประกอบด้วยไลบรารีมาตรฐานของ Rust (crate std) ที่ดัดแปลงสำหรับการใช้งานในส่วนประกอบของระบบปฏิบัติการได้อีกด้วย
ท่ามกลางการเปลี่ยนแปลงในเวอร์ชัน 0.18:
- เพื่อเป็นการดำเนินการให้มั่นใจว่า Asterinas สามารถทำงานเป็นระบบแขกในคอนเทนเนอร์ VM ของ Kata Containers และ Confidential Containers ได้นั้น ได้มีการนำการสนับสนุนสำหรับเนมสเปซ IPC และ cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (สำหรับการเข้าถึงระบบไฟล์ที่ใช้ร่วมกับระบบโฮสต์), virtio-rng (/dev/hwrng สำหรับเอนโทรปีของตัวสร้างเลขสุ่มเทียม) และ vsock (สำหรับการสื่อสารระหว่างระบบโฮสต์และระบบแขก) มาใช้
- ได้นำระบบเรียกใช้ ptrace และความสามารถในการดีบักในพื้นที่ผู้ใช้มาใช้โดยใช้ GDB และ strace
- มีการเสนอการใช้งานระบบไฟล์ ext2 รูปแบบใหม่ และเพิ่มไดรเวอร์ NVMe เข้าไป นอกจากนี้ยังเพิ่มกลไก Dentry (Directory Entry) เข้าไปใน VFS และออกแบบการใช้งานแคชเพจใหม่ด้วย
- ระบบปฏิบัติการ Asterinas NixOS สามารถใช้งาน Codex, QEMU และ Firefox ได้
- เพิ่มการเรียกใช้ระบบ pidfd_getfd, pidfd_send_signal, pivot_root
- เพิ่มค่าเริ่มต้น รองรับ IPv6.
- มีการนำระบบความสามารถในการมอบหมายสิทธิ์ในการดำเนินการเฉพาะบุคคลมาใช้แล้ว
- เพิ่มการใช้งานเบื้องต้นของเฟรมเวิร์ก LSM (Linux โมดูลรักษาความปลอดภัย)
ที่มา: opennet.ru
