カーネルは異なるOS向けバイナリを実行するための共通の基盤を提供する
Kernel Core
ABI Module
簡単にいうと, Kernel CoreがOSに依存しない共通の基盤を提供して, ABI ModuleにOS固有の処理や環境構築を隠蔽するイメージ
実行するバイナリごとに異なるrootfsや標準ライブラリを使用する
もちろんGUIも使える
Scarlet Window System/Server (SWS)
Wayland Bridge
ついでに宣言的UIフレームワークも作った (そこそこ形になったので紹介)
Scarlet UI

impl Application for DemoApp {
fn body(&self) -> impl View {
Window::new("ScarletUI Demo",
vstack! {
Text::new("Hello ScarletUI!")
.font_size(40.0),
Text::new("ScarletUIの世界からこんにちは!")
.font_size(24.0),
hstack! {
Text::new(format!("Toggle State: {}",
if self.toggle_state.get() { "ON" } else { "OFF" }))
.font_size(20.0),
Spacer::new(),
Toggle::new(self.toggle_state.clone()),
Spacer::new(),
Button::new("Click Me")
.on_click(|| {
println!("[ui_demo] Button clicked!");
}),
}
Scarlet Build System / cargo-scarlet / Fully Modular Kernel (WIP)
Scarlet Hypervisor (SHV)
そのほか書ききれないもの

動作確認済みボード
ABI module (実行可能なOSバイナリ)
[2] Limine: https://codeberg.org/Limine/Limine
[3] Asahi Linux: https://asahilinux.org/
異なる複数のOS向けバイナリが実行可能なOS Scarletの紹介でした
発表など
ScarletのGitHubリポジトリ
https://github.com/petitstrawberry/Scarlet
Apple M1 Boot Flow
+--------+ +--------+ +--------+ +--------+ +---------+
| iBoot | -> | m1n1 | -> | U-Boot | -> | Limine | -> | Scarlet |
+--------+ +--------+ +--------+ +--------+ +---------+
Apple SoC init Runs after EFI app Scarlet
boot hand-off m1n1 loader Kernel
+---------------------------------------------------------------------------+
| User space |
| |
| +------------------------+ +-------------------------------+ |
| | U-SHV | | QEMU on Linux ABI | |
| | native userspace VMM | | uses /dev/kvm ioctls | |
| +------------------------+ +-------------------------------+ |
| | | |
+-------------|--------------------------------------|----------------------+
| |
v v
+---------------------------------------------------------------------------+
| Kernel space |
| |
| +------------------------+ +-------------------------------+ |
| | Scarlet Native | | Linux ABI module | |
| | ABI module | | - /dev/kvm compatibility | |
| +------------------------+ +-------------------------------+ |
| | | |
| +------------------+ +----------------+ |
| v v |
| +-----------------------------------+ |
| | SHV | |
| | - VM entry / VM exit | |
| | - Stage-2 page tables | |
| | - guest memory / vCPU management | |
| +-----------------------------------+ |
+-------------------------------------|-------------------------------------+
v
+-----------------------------------+
| RISC-V H-extension / AArch64 EL2 |
| (RISC-V impl, AArch64 WIP) |
+-----------------------------------+
pagenate: off