Redox 今月の動向 - 2026年8月

Redox OS の 8 月アップデート。ARM64 マルチコア対応が入り、ユーザー空間のリングバッファ通信で NVMe などの I/O 性能が 14〜15 倍に向上した。

日本語
コピー
Redox 终端里两次存储基准测试的对照:走系统调用的 NVMe 写入 58.69 MB/s,改成用户态环形缓冲区后升到 1019.10 MB/s
作者:Ribbon と Ron Williams

2026年8月31日(月)公開

Redox OS は Rust で書かれた、Unix ライクな汎用マイクロカーネル OS です。Redox にとって8月はとても賑やかな月でした!最新の動きをまとめてお届けします。レポートが遅れてすみません——開発の忙しさ、休暇、カンファレンス参加、本業、その他もろもろが重なってしまいました。

Redox への寄付

Redox を支援したい方は、寄付やグッズの購入を検討してみてください。

さらなる起動修正

Wildan Mubarok が UEFI 互換性を改善し、MSI Modern 14 C7M ノート PC が起動するようになりました!

ARM64 のマルチコア対応

lbecher が AArch64/ARM64 のマルチコア対応を実装し、いくつか修正も行いました。どれだけ性能が上がるかは、さらにテストを重ねないと確定できません。

リングバッファ通信による並列度の向上

数か月にわたる作業の末、Ibuki Omatsu と Anhad Singh がユーザー空間ベースのリングバッファ通信 API(Redox Rings)を実装しました。Linux の io_uring システムコール API に相当するもので、対応ドライバ上での性能向上を狙ったものです。4lDO2 が指導し、Wildan Mubarok がバグ修正を手伝いました。数年前に試したカーネルベースのリングバッファ通信 API より、出来が良くなっています。この作業により、NVMe ドライバ、RedoxFS、RAMFS の I/O 性能が大幅に向上しました。以下のベンチマーク(RedoxFS ファイルシステムを経由しない)では、I/O 性能が最大14〜15倍になっています!!

  • redox_syscall(同期システムコールで NVMe の読み書き性能を測定)と redox_ring(リングバッファで NVMe の読み書き性能を測定)のベンチマーク比較

  • リングバッファを使ったメモリファイルシステム(ramfs)のベンチマーク

リングバッファを使ったメモリファイルシステム(ramfs)のベンチマーク

ネイティブコンパイル性能が大幅改善、OOM も修正

Wildan Mubarok は数か月かけて GCC のコンパイル性能がじわじわ悪化する問題を調査し、最終的にカーネルのメモリリークを突き止めて修正しました。このリークのせいで、GCC の os-test テストスイートのコンパイル時間(QEMU 上)は2時間から10時間へと伸び続け、メモリ不足(OOM)エラーも起きていました。修正後、コンパイル時間は10時間から約30分に短縮されています。

NUMA 対応

Aadarsh(別名 EuclidDivisionLemma)が NUMA ベースのメモリ管理の初期的な対応を実装しました。現在は QEMU で NUMA の挙動をテストしているため、実機でのテストをぜひお待ちしています。 あわせて、ローカルノード割り当て(データ局所性)をデフォルトで実装し、NUMA 割り当てポリシーを変更するための libredox API も用意しました。

プロセス優先度対応とスケジューラ改善——RSoC プロジェクト総括

Akshit Gaur がプロセス優先度対応を実装し、システム全体の優先度を調整して性能を引き上げました。 さらに最後の EEVDF 記事を執筆し、最適化を経た完全な解説をまとめています。Akshit の素晴らしい仕事に感謝します!

QEMU が Redox 上で動く!

Ribbon と Wildan Mubarok が、QEMU が Redox 上で動くことを確認・テストしました。Ribbon は QEMU のターミナルモードで Redox のサーバー版を、Wildan は GTK フロントエンドを含むデスクトップ版をテストしています。 Redox はまだ KVM のような仮想マシン高速化に対応していないため、性能はかなり遅くなる可能性があります。

  • QEMU のターミナルモードで動く Redox サーバー版、上は Redox デスクトップ

QEMU のターミナルモードで動く Redox サーバー版、上は Redox デスクトップ

  • QEMU のターミナルと GTK GUI 上で動く Redox サーバー版

QEMU のターミナルと GTK GUI 上で動く Redox サーバー版

  • QEMU の GTK GUI 上で動く Redox デスクトップ版

QEMU の GTK GUI 上で動く Redox デスクトップ版

Linux からのデュアルブートインストール!

Wildan Mubarok が Redox インストーラの Linux 対応を改善し、Redox をデュアルブートでインストールできるようにしました。使い方と新しい GUI インストーラのオプションについては、こちらのページをご覧ください。

  • トリプルブートで動く Redox

トリプルブートで動く Redox

カーネルバイナリサイズの分析

4lDO2 がカーネルバイナリのサイズ分析を実装した。どの部分を削減できるかを測るためのもので、メモリ使用量の削減にもつながる。

カーネルバイナリサイズのフレームグラフ

名前空間とケイパビリティベースセキュリティを用いたファイルアクセス設計

Ibuki Omatsu が、ケイパビリティベースのセキュリティモデルにおいて openat 関数が名前空間マネージャを通じてパスを解決する仕組みを図にまとめた。詳細はこちらのセクションを参照。

名前空間とケイパビリティベースセキュリティモデルを用いたファイルアクセス設計図

relibc のコントリビューション方針と目標の改善

4lDO2 が relibc(POSIX/C 標準ライブラリ)のセキュリティ方針と目標を文書化した。未定義動作や論理エラーを持ち込む確率を下げるのが狙いだ。要点は、unsafe コードを relibc の「リーフ関数」に限定し、監督とレビューを容易にするとともに、unsafe コードが想定外の場所に現れるのを減らすことにある。内部で Rust 寄りのエラー処理を採用し、POSIX のエラーより豊富な情報を提供する(特定の種類のバグの調査に役立つ)ことも含まれる。

カーネルの改善

  • (カーネル)4lDO2 が IPC のオーバーヘッドを 5% 削減
  • (カーネル)4lDO2 が未到達の DTB コードを削除し、バイナリサイズを 2.2% 縮小(x86-64 イメージなど)
  • (カーネル)4lDO2 が redox_syscall ライブラリのコードを kernel リポジトリに統合し、変更しやすくした
  • (カーネル)Akshit Gaur が EEVDF スケジューラの work stealing をさらに改善・修正し、Wildan Mubarok もいくつか修正したことで性能が向上
  • (カーネル)Aadarsh(別名 EuclidDivisionLemma)がスレッドロックを減らしてメモリ解放性能を改善
  • (カーネル)Aadarsh(別名 EuclidDivisionLemma)が NUMA コードの panic を修正
  • (カーネル)Wildan Mubarok がすべての scheme パス処理をユーザ空間に移した
  • (カーネル)Wildan Mubarok が、プロセスを kill するとゾンビプロセスが生じうる潜在バグを修正
  • (カーネル)Wildan Mubarok が FUTEX_WAIT64 システムコールの panic を修正

ドライバの改善

  • (ドライバ)MJ Pooladkhay が PCI マルチベクタ MSI-X を実装。より多くのドライバ性能機能を支える
  • (ドライバ)MJ Pooladkhay が VirtIO デバイスの完了イベントが失われる問題を修正
  • (ドライバ)Wildan Mubarok が Clippy の指摘した pcid のバグを修正
  • (ドライバ)bjorn3 がコードの重複排除と整理を行った

システムの改善

  • (sys) Ibuki Omatsu が scheme のマルチスレッド対応を実装
  • (sys) Wildan Mubarok が rldd を我々の ldd ツール実装として移植
  • (sys) Wildan Mubarok が scheme パスの親収集の性能を改善
  • (sys) Wildan Mubarok がファイルロックのオフバイワンをいくつか修正。SQLite と libsoup の両方に効く
  • (sys) Wildan Mubarok がディスプレイのない環境での inputd の非致命的 panic を除去
  • (sys) bjorn3 が潜在的な inputd のデッドロックを修正
  • (sys) bjorn3 がコードの重複排除を行った

Relibc の改善

  • (libc) 4lDO2 が安全でない socket と getaddrinfo 関数のコードの大部分をリーフ関数に変更。処理を集約することで可読性が大きく上がり、バグが減る
  • (libc) 4lDO2 が RELIBC_COMMIT_HASH 環境変数を実装。relibc のコミットハッシュを表示し、静的オブジェクトがローカルの変更を反映して更新されたのか、すでに最新なのかを完全に確認できる
  • (libc) Ibuki Omatsu が recvmsg 関数の壊れた SCM_RIGHTS を修正。このバグはファイルディスクリプタの割り当てをユーザ空間に移した後に露見した
  • (libc) bjorn3 が getsockname と getpeername 関数のアドレス長計算を修正し、いくつかの mio ライブラリのテストが通るようにした
  • (libc) Wildan Mubarok が Linux 向けに rlct_clone 関数を実装し、Linux ARM64 の pthread テストを修正
  • (libc) Wildan Mubarok が setvbuf 関数でモード付きの読み取り(行バッファリングを除く)と書き込み(借用を除く)のサポートと処理を実装
  • (libc) Wildan Mubarok が LD_DEBUG 環境変数を改善。relibc 共有オブジェクトのメモリ位置の範囲を表示し、動的リンク時のクラッシュデバッグを大幅に改善
  • (libc) Wildan Mubarok が open 関数を直接呼び出すようにして epoll の性能を改善
  • (libc) Wildan Mubarok が stdio の初期化に const 関数を使い、アプリとライブラリの起動時間を短縮
  • (libc) Wildan Mubarok が timer_t の unsafe Rust コードを削減
  • (libc) Wildan Mubarok が Unix socket のテストを追加
  • (libc) Wildan Mubarok が ARM64 の TLS ロードオフセットを修正し、パッケージマネージャ上の tokio ライブラリの panic を修正
  • (libc) Wildan Mubarok が Linux ARM64 の 64KiB ページでの ELF ロードを修正
  • (libc) Wildan Mubarok が clock_getres 関数の挙動を修正
  • (libc) Wildan Mubarok が fstatat 関数の二重クローズのバグを修正
  • (libc) Wildan Mubarok が ptsname_r の NUL オフセットを修正
  • (libc) Wildan Mubarok が pthread_kill-self テストを修正
  • (libc) Wildan Mubarok が時刻/タイマーのテストを修正
  • (libc) auronandace が tcgetsid 関数を実装
  • (libc) auronandace が SYS_DUP_INTO、SYS_READ、SYS_WRITE システムコールを SYS_CALL システムコールに置き換え、システムコールの回数を削減
  • (libc) auronandace が as の型変換の使用をさらに減らし、コードのリファクタリング時に問題が起きないようにした
  • (libc) auronandace がコードを整理
  • (libc) auronandace、Wildan Mubarok、Ibuki Omatsu が多くの Clippy lint を修正・強制し、CI で追跡を有効化
  • (libc) Ben McCann が tzset に POSIX base を実装し、mktime 関数に POSIX の処理を実装
  • (libc) Ben McCann が tzset 関数のテストを追加
  • (libc) Sunam Kang が sendto 関数に MSG_NOSIGNAL を実装

ネットワークの改善

  • (net) Wildan Mubarok が、DHCP で DNS を取得できない場合のエラーメッセージを改善

RedoxFS の改善

  • (rfs) Wildan Mubarok が O_SYMLINK を実装し、scheme をまたいだシンボリックリンクの走査に対応
  • (rfs) Wildan Mubarok がパーティションマウントのエラー処理を改善し、エラーコードを表示するように

セキュリティの改善

  • (safe) bjorn3 が inputd 上で root なしのディスプレイ起動を実装
  • (safe) Ibuki Omatsu が contain サンドボックス管理ツールを新しい名前空間管理で書き直し、プロセスごとにフィルタ scheme を作成するように。この scheme が実際の名前空間ファイルディスクリプタを保持し、プログラムにファイルディスクリプタフィルタを渡すことですべての openat 関数呼び出しを仲介する(chroot の完全な実装はまだ進行中)
  • (safe) Wildan Mubarok が CA 証明書を更新し、ついでに GnuTLS も修正

パッケージングの改善

  • (pkg) Wildan Mubarok がパッケージ展開のプログレスバーでカウントが二重になる問題を修正

デスクトップの改善

  • (desk) bjorn3 が Orbital ログインマネージャを winit と softbuffer ライブラリに移植し、将来 Wayland をテストできるように
  • (desk) bjorn3 が Orbital の全画面ウィンドウでウィンドウ装飾を無効化
  • (desk) bjorn3 がディスプレイサイズ変更時に全画面・最大化された Orbital ウィンドウのスケーリングが崩れる問題を修正

インストーラの改善

  • (install) Wildan Mubarok が新しい GUI インストーラのオプション入力の処理を修正
  • (install) Wildan Mubarok がパッケージ展開時に進捗状況を表示するように

アプリケーション

  • (app) Wildan Mubarok が GNU nano を 7.2 から 9.2 に更新
  • (app) Aadarsh が GNU Binutils GDB 版のビルドを修正
  • (app) Wildan Mubarok が Kibi を 0.3.2 から 0.3.3 に更新
  • (app) Wildan Mubarok が WebKit の TLS バグを修正
  • (app) Wildan Mubarok が GTK3 移植版の EGL サポートを修正
  • (app) Wildan Mubarok が Mesa3D 上の EGL で一部レンダリングがおかしくなる問題を修正

テストの改善

  • (test) 4lDO2 が acid テストスイートにベンチマーク指標を実装し、性能の劣化を検出できるように
  • (test) Wildan Mubarok が CI で Clippy を使い始め、有効化
  • (test) Wildan Mubarok が Redox イメージの CI 検証時間を約 25 分から約 7 分に短縮

ビルドシステムの改善

  • (build) Wildan Mubarok が Cookbook recipe のターゲットリスト項目の組み合わせ方を更新し、--all-* オプションを使えるように(例:make r.base,--all-binaries)
  • (build) Wildan Mubarok が COOKBOOK_TREELESS_CLONE 環境変数を実装し、すべての recipe で treeless clone を有効化。ストレージを大幅に節約し、ダウンロード時間も短縮
  • (build) Wildan Mubarok がスクリプトの保守コストを下げるため、スクリプトのロジックの大部分を Cookbook で再実装。Ribbon が一部のリグレッションを修正
  • (build) Wildan Mubarok が make rebuild-push コマンド(recipe のソースやパッケージの変更を検証し、差分だけ再ビルドするか、新しい変更をダウンロードしてプッシュする)がファイルシステム設定の recipe を更新しない問題を修正。既存の Redox ファイルシステムイメージでもシステムを正しく素早く更新できるように
  • (build) Konstantin Shabanov が Podman と Native ビルドの Nix flake を修正
  • (build) Konstantin Shabanov がコードに cargo fix を適用
  • (build) Ribbon が show-package.sh スクリプトで ls ツールを tree に置き換え、すべての recipe のパッケージディレクトリとファイルを表示できるようになり、実用性が大幅に向上

ドキュメントの改善

ウェブサイトの改善

  • (web) Wildan Mubarok が LaTeX 数式のサポートを追加し、サイトのダークモードを改善して LaTeX 数式がはっきり見えるように。前回の EEVDF 記事の数式表示の問題も修正

これらの変更をテストする方法

今月の変更をテストするには、デイリービルドの server または desktop バリアントをダウンロードしてください。 GUI が必要な場合は desktop バリアントを使用してください。ターミナル風の画面を好む場合や、desktop バリアントが利用できない場合は server バリアントをお試しください。

  • 仮想マシンでテストする場合は「harddrive」イメージ
  • 実機でテストする場合は「livedisk」イメージ

イメージを仮想マシンや実機で使用する方法については、以下のページを参照してください。

デイリービルドのイメージは期限切れになることがあり、その場合はソースから Redox をビルドする必要があります。 手順は Redox のビルド ページに記載されています。

プログラム

アプリケーションやライブラリの変更をテストするには、目的のプログラムが以下のリストにあるか確認し、次のコマンドでインストールしてください: sudo pkg install package-name

パッケージの詳細情報が必要な場合は、Web インターフェースも用意されています。

Matrix チャットに参加する

コードを貢献したい方、フィードバックを送りたい方、あるいは単にみんなが何を話しているか聞いてみたい方は、Matrix Chat にご参加ください。

出典: Redox OS← ホームへ戻る