Asterinas 專案發布了 0.18 版本,這是一個用 Rust 編寫的內核,專為通用作業系統設計。此核心提供了一個與核心相容的應用程式二進位介面 (ABI)。 Linux 並且可以作為替代方案。同時,我們正在並行開發結合了 Asterinas 核心和 NixOS 系統環境的 Asterinas NixOS 發行版。該專案的程式碼以 MPL(Mozilla 公共授權)發布。
目前核心中已實現約 240 個系統呼叫。 Linux經驗證,Asterinas NixOS 發行版可在 Asterinas 核心上運行,並包含 100 多個 NixOS 軟體包。支援的軟體包包括:Xfce、Firefox、bash、systemd、Podman、QEMU、rsync、Apache httpd、nginx、SQLite、Redis、Clang、GCC、Go、Lua、Node.js、OpenJDK、Perl、PHP、Python、Ruby、Lua、Node.FF、OpenJDK、Perl、PHP、Python、Ruby、Rust、Git、FFeg、Mxorx、Mak 它、MMxS、Rust、M
此核心完全支援 x86-64 架構,部分支援 RISC-V 64 和基於 Intel TDX 隔離的 x86-64 架構,並初步支援 LoongArch 64 架構。優先應用領域包括基於下列架構的系統: Linux ABI,但需要更高的安全性。例如,Asterinas 被提議用於創建安全的系統環境。 虛擬機為了實現隔離,使用了 ARM CCA、AMD SEV 和 Intel TDX 等技術,以及主機系統端的技術,從而確保容器的啟動。
為了降低記憶體錯誤(這是最危險漏洞的主要來源)的發生機率,Asterinas 使用了 Rust 語言,並限制了不安全程式碼區塊的使用。核心採用 framekernel 架構構建,該架構力求將微內核的隔離能力與單一核心的效率結合。
Asterinas 的核心元件位於共用位址空間中,其安全性透過將安全程式碼與潛在漏洞程式碼進行邏輯分離來實現。核心分為兩部分,均以 Rust 編寫:作業系統框架和作業系統服務。作業系統服務禁止使用不安全程式碼區塊,所有需要在不安全程式碼區塊中執行的底層操作都被移至作業系統框架,並且只能透過進階 API 存取。所有系統呼叫、檔案系統和驅動程式都在作業系統服務層實現,且不能包含不安全程式碼區塊。
為了開發系統服務和核心模組,我們提供了 OSDK(作業系統開發工具包),其中包含 cargo-osdk 工具,用於建立、建置、測試和運行作業系統元件。開發者也可以使用 OSTD(作業系統標準函式庫)集,其中包含一個專為作業系統元件設計的 Rust 標準函式庫(crate std)版本。
0.18版本的變化包括:
- 為了確保 Asterinas 能在 Kata Containers 和 Confidential Containers VM 容器中作為客戶系統運行,我們實現了對 IPC 和 cgroup 命名空間、nsfs (/proc/[pid]/ns)、cgroups、virtio-fs(用於存取與主機系統共享的檔案系統)、virtio熵-wrng(////值) vsock(用於主機和客戶系統之間的通訊)的支援。
- 使用 GDB 和 strace 實作了 ptrace 系統呼叫和使用者空間偵錯功能。
- ext2 檔案系統提出了一種新的實作方案,並新增了 NVMe 驅動程式。 VFS 中新增了目錄項目 (Dentry) 機制,並且重新設計了頁面快取的實作。
- Asterinas NixOS 發行版能夠運行 Codex、QEMU 和 Firefox。
- 新增了系統呼叫 pidfd_getfd、pidfd_send_signal、pivot_root。
- 新增初始 IPv6 支援.
- 已實施權限系統,用於委派個人特權操作。
- 新增了 LSM 框架的初始實作(Linux 安全模組)。
來源: opennet.ru
