Asterinas 專案發布了 0.19 版本,這是一個用 Rust 編寫的內核,專為通用作業系統設計。此核心提供了一個與核心相容的應用程式二進位介面 (ABI)。 Linux 並且可以作為替代方案。 Asterinas NixOS 發行版將 Asterinas 核心與 NixOS 系統環境結合,目前正在並行開發中。該專案的程式碼自 2022 年以來一直在開發中,並以 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 架構,部分支援 ARM64、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)版本。
Asterinas 0.19 版本更新內容包括:
- DRM(直接渲染管理器)子系統、/dev/dri 裝置、KMS(核心模式設定)介面和「modesetting」驅動程式已經實現,從而可以啟動基於 X.Org Server 和 Mesa 的標準圖形堆疊,而不是先前使用的 fbdev 驅動程式(該驅動程式使用幀緩衝區)。
- 已新增對 AArch64 (ARM64) 架構的支持,現在它與 x86-64 一起作為主要開發架構。此外,還為 AArch64 實現了第二層支持,確保基本功能、持續整合測試和部分測試覆蓋率。
- 我們繼續致力於使 Asterinas 能夠作為 Kata Containers 和 Confidential Containers 中的客戶系統運作。我們提出了一種新的 Overlayfs 實作方案,該方案成功通過了標準核心檔案系統測試套件。 Linux 以及 xfstests。已實作新的掛載 API。 virtio-fs 程式碼已穩定。已新增協議支援。
直接啟動功能已應用於 QEMU、Cloud Hypervisor 和 Firecracker 中,啟動速度得到了顯著提升。 虛擬機其記憶體採用 Intel TDX 技術進行加密。 - OSTD(作業系統標準庫)框架實作了一個基本 API,用於建立基於 Intel VMX 的極簡虛擬機器管理程式。
- 新增了對 Rust 驅動開發模型的支援。新增了一個功能類似內核組件的 aster-device 元件。 Linux 具備驅動程式開發的基本原語和抽象概念,但使用 Rust 編寫,沒有不安全程式碼。
- 現在可以進行自託管了——您現在可以從包含 Asterinas 核心和 NixOS 軟體包的環境中建立 Asterinas 核心。
來源: opennet.ru
