Asterinas ပရောဂျက်သည် Rust ဖြင့်ရေးသားထားပြီး အထွေထွေရည်ရွယ်ချက် operating system များတွင်အသုံးပြုရန် ဒီဇိုင်းထုတ်ထားသော kernel ဗားရှင်း 0.19 ကို ထုတ်ပြန်ခဲ့သည်။ kernel သည် kernel နှင့် တွဲဖက်အသုံးပြုနိုင်သော ABI (Application Binary Interface) ကို ပေးစွမ်းသည်။ Linux နှင့် အစားထိုးအသုံးပြုနိုင်သည်။ Asterinas kernel ကို NixOS စနစ်ပတ်ဝန်းကျင်နှင့် ပေါင်းစပ်ထားသော Asterinas NixOS ဖြန့်ဖြူးမှုကို တစ်ပြိုင်နက်တည်း တီထွင်နေပါသည်။ ပရောဂျက်၏ ကုဒ်ကို ၂၀၂၂ ခုနှစ်မှစ၍ တီထွင်နေပြီး MPL (Mozilla Public License) အောက်တွင် ဖြန့်ဝေထားသည်။
လက်ရှိတွင် kernel တွင် system call ၂၄၀ ကျော်ကို အကောင်အထည်ဖော်ထားပါသည်။ LinuxAsterinas NixOS ဖြန့်ဖြူးမှုကို Asterinas kernel ပေါ်တွင် NixOS package ၁၀၀ ကျော်ဖြင့် လည်ပတ်ကြောင်း အတည်ပြုထားပါသည်။ ပံ့ပိုးပေးထားသော package များတွင် 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 တို့ ပါဝင်သည်။
kernel သည် x86-64 ဗိသုကာအတွက် အပြည့်အဝပံ့ပိုးမှု၊ ARM64၊ RISC-V 64 နှင့် x86-64 အတွက် တစ်စိတ်တစ်ပိုင်းပံ့ပိုးမှုအပြင် Intel TDX ကိုအခြေခံ၍ သီးခြားရပ်တည်မှုဖြင့် ပံ့ပိုးပေးသည့်အပြင် LoongArch 64 ဗိသုကာအတွက် ကနဦးပံ့ပိုးမှုလည်း ပေးပါသည်။ ဦးစားပေးအသုံးချနယ်ပယ်များတွင် အောက်ပါတို့ကို အခြေခံသည့် စနစ်များ ပါဝင်သည်- Linux ABI များဖြစ်သော်လည်း လုံခြုံရေးအဆင့်မြင့်မားရန် လိုအပ်ပါသည်။ ဥပမာအားဖြင့်၊ Asterinas ကို လုံခြုံသောစနစ်ပတ်ဝန်းကျင်တစ်ခုဖန်တီးရာတွင် အသုံးပြုရန် အဆိုပြုထားသည်။ virtual စက်များARM CCA၊ AMD SEV နှင့် Intel TDX ကဲ့သို့သော နည်းပညာများကို အသုံးပြု၍ ကွန်တိန်နာများ စတင်အသုံးပြုနိုင်စေရန်အတွက် host system ဘက်ခြမ်းအပြင်။
အန္တရာယ်အရှိဆုံး အားနည်းချက်များ၏ အဓိကရင်းမြစ်ဖြစ်သော မှတ်ဉာဏ်အမှားများ ဖြစ်နိုင်ခြေကို လျှော့ချရန်အတွက် Asterinas သည် Rust ဘာသာစကားနှင့် မလုံခြုံသော block များကို အကန့်အသတ်ဖြင့် အသုံးပြုသည်။ kernel ကို microkernels များ၏ isolation စွမ်းရည်များနှင့် monolithic kernels များ၏ စွမ်းဆောင်ရည်ကို ပေါင်းစပ်ရန် ကြိုးစားသည့် framekernel architecture ကို အသုံးပြု၍ တည်ဆောက်ထားသည်။
Asterinas ရှိ Kernel အစိတ်အပိုင်းများသည် shared address space တွင်တည်ရှိပြီး လုံခြုံမှုကို အားနည်းချက်ရှိနိုင်သော ကုဒ်မှ လုံခြုံသောကုဒ်ကို ယုတ္တိဗေဒနည်းဖြင့် ခွဲထုတ်ခြင်းဖြင့် ရရှိသည်။ kernel ကို Rust ဖြင့်ရေးသားထားသော အပိုင်းနှစ်ပိုင်းရှိသည်- OS Framework နှင့် OS Services။ OS Services သည် unsafe blocks များကို အသုံးပြုခြင်းကို တားမြစ်ထားပြီး unsafe blocks များတွင် code execution လိုအပ်သော low-level operation အားလုံးကို OS Framework သို့ ရွှေ့ပြောင်းပြီး high-level API မှတစ်ဆင့်သာ ဝင်ရောက်နိုင်သည်။ system calls၊ file systems နှင့် drivers အားလုံးကို OS Services level တွင် အကောင်အထည်ဖော်ထားပြီး unsafe blocks များ မပါဝင်နိုင်ပါ။
system service များနှင့် kernel module များ တီထွင်ရန်အတွက် OSDK (Operating System Development Kit) ကို ပံ့ပိုးပေးထားပြီး operating system components များကို ဖန်တီးခြင်း၊ တည်ဆောက်ခြင်း၊ စမ်းသပ်ခြင်းနှင့် လည်ပတ်ခြင်းအတွက် cargo-osdk utility ကို ပံ့ပိုးပေးပါသည်။ developer များသည် operating system components များတွင် အသုံးပြုရန်အတွက် လိုက်လျောညီထွေဖြစ်အောင် ပြုလုပ်ထားသော Rust standard libraries (crate std) ၏ edition ပါဝင်သော OSTD (Operating System Standard Library) set ကိုလည်း ဝင်ရောက်ကြည့်ရှုနိုင်ပါသည်။
Asterinas 0.19 မှာ ပြောင်းလဲမှုတွေ ရှိပါတယ်-
- DRM (Direct Rendering Manager) subsystem၊ /dev/dri device၊ KMS (kernel mode setting) interface နှင့် "modesetting" driver တို့ကို အကောင်အထည်ဖော်ပြီးဖြစ်သောကြောင့် framebuffer ကိုအသုံးပြုသည့် fbdev driver အစား X.Org Server နှင့် Mesa ကိုအခြေခံသည့် standard graphics stack ကိုစတင်နိုင်မည်ဖြစ်သည်။
- AArch64 (ARM64) ဗိသုကာအတွက် ပံ့ပိုးမှုကို ထည့်သွင်းထားပြီး၊ ယခုအခါ x86-64 နှင့်အတူ အဓိက ဖွံ့ဖြိုးတိုးတက်ရေး ဗိသုကာအဖြစ် ဆောင်ရွက်ပါသည်။ အခြေခံလုပ်ဆောင်ချက်၊ စဉ်ဆက်မပြတ် ပေါင်းစပ်စမ်းသပ်မှုနှင့် တစ်စိတ်တစ်ပိုင်း စမ်းသပ်မှု လွှမ်းခြုံမှုကို သေချာစေရန် AArch64 အတွက် ဒုတိယအဆင့် ပံ့ပိုးမှုကို အကောင်အထည်ဖော်ထားပါသည်။
- Kata Containers နှင့် Confidential Containers များတွင် guest system အဖြစ် လည်ပတ်ရန်အတွက် Asterinas များကို လိုက်လျောညီထွေဖြစ်အောင် လုပ်ဆောင်ခြင်းလုပ်ငန်းများ ဆက်လက်လုပ်ဆောင်နေပါသည်။ စံ kernel file system test suites များကို အောင်မြင်စွာကျော်ဖြတ်နိုင်သည့် Overlayfs အကောင်အထည်ဖော်မှုအသစ်တစ်ခုကို အဆိုပြုခဲ့ပါသည်။ Linux နှင့် xfstests။ mounting API အသစ်တစ်ခုကို အကောင်အထည်ဖော်ပြီးပါပြီ။ virtio-fs ကုဒ်ကို တည်ငြိမ်အောင် ပြုလုပ်ထားပါသည်။ Protocol ပံ့ပိုးမှုကို ထည့်သွင်းထားပါသည်။
QEMU၊ Cloud Hypervisor နှင့် Firecracker တို့တွင် အသုံးပြုသည့် direct-boot။ Boot အချိန်များကို အရှိန်မြှင့်ထားသည်။ virtual စက်များ၊ ၎င်း၏မှတ်ဉာဏ်ကို Intel TDX နည်းပညာကို အသုံးပြု၍ ကုဒ်ဝှက်ထားသည်။ - OSTD (Operating System Standard Library) framework သည် Intel VMX ကိုအခြေခံ၍ minimalistic hypervisors များဖန်တီးရန်အတွက် အခြေခံ API တစ်ခုကို အကောင်အထည်ဖော်သည်။
- Rust driver ဖွံ့ဖြိုးတိုးတက်မှု မော်ဒယ်အတွက် ပံ့ပိုးမှုကို ထည့်သွင်းထားသည်။ kernel အစိတ်အပိုင်းများနှင့် ဆင်တူသော လုပ်ဆောင်ချက်ပါရှိသော aster-device အစိတ်အပိုင်းတစ်ခုကို ထည့်သွင်းထားသည်။ Linux driver ဖွံ့ဖြိုးတိုးတက်ရေးအတွက် အခြေခံ primitives များနှင့် abstractions များပါဝင်သော်လည်း unsafe code မပါဘဲ Rust ဖြင့်ရေးသားထားသည်။
- Self-hosting လုပ်လို့ရပါပြီ - Asterinas kernel နဲ့ NixOS package တွေနဲ့ environment ကနေ Asterinas kernel ကို တည်ဆောက်နိုင်ပါပြီ။
source: opennet.ru
