QEMU で起動可能な、慣用的な Rust に書き換えた Linux カーネル 0.11

2026/07/14 5:11

QEMU で起動可能な、慣用的な Rust に書き換えた Linux カーネル 0.11

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

このプロジェクトで最も重要な点は、

linux-0.11-rs
です。これは、1991 年の歴史的な Linux 0.11 カーネルの現代的な Rust リライト版であり、QEMU でエミュレートされた i386 ハードウェア上でブートし、自律開発済みの Unix スタイルのユーザーランドを実行します。もとの実装では複雑なアセンブリを必要としたが、この実装は Linux 0.11 のセマンティクス(プロセス、要求ページングによる仮想メモリ、コピーオンライトフォーク、Minix v1 ファイルシステム、ATA ディスクドライバー、VGA/PS/2/8250 コンソール、TTY レイヤー、シグナル)を保持し、低レベルのハンドメイドなシステムコールパイプリングを、
std::{fs, io, path, env, process, time}
を反映した高レベル API で置き換えています。コアユーティリティ 80 コア以上と POSIX サブセットシェル(
sh
)をサポートしており、パイプライン、制御フロー、関数、グローブ展開、コマンド/算術置換、対話型行エディタ、タブ補完、履歴という機能を持っています。フロッピーディスクのサポートは元のアーキテクチャに合わせるためスコープ外ですが、伝統的なビルドの障壁は、ワンコマンドでのイメージビルド(
tools/build-disk.sh
)、ターンキーディスクイメージ、および
mbrkit
miniximg
のような伴走ツールによって排除されています。
.devcontainer
により、開発者はリポジトリをクローンし、VS Code で開き、即座に
make run
(または
make run-console
)を実行できます。QEMU 下での
.ktest
スクリプトは堅牢なエンドツーエンドテストを提供します。このアクセスしやすいエントリーポイントを通じて、ユーザーは標準的なツールを用いて安全な Rust エコシステム内で仮想メモリなどの基礎的な OS コンセプトを学ぶことができます。

本文

Linux 0.11 カーネルのモダンな Rust リファクタリング版:linux-0.11-rs

linux-0.11-rs
は、1991 年の Linux 0.11 カーネルを現代的な Rust で完全に再構築したプロジェクトです。システムの本質的な機能や動作(Semantics)を保ちつつ、表現方法を見直し、強力な型制約や明確なモジュール境界、イディオマティックな抽象化を採用しています。

エミュレーテッドな i386 ハードウェア上で起動し、フルな初期化プロセスからシェル、

coreutils
スタックまでを実行します。また、ワンコマンドで独自のブート可能ディスクイメージを構築するためのツールセットも付属しています。

✨ ハイライト

  • Linux 0.11 の大部分を含むカーネル

    • プロセス管理の実装
    • 仮想メモリ機能:要求分页(Demand Paging)と写像フォーク(CoW fork)の実装
    • ファイルシステム:Minix v1
    • デバイスドライバー:ATA ディスク、VGA および PS/2 コンソール、8250 シリアルコンソール
    • システム基盤:TTY レイヤー、シグナル、完全なシステムコールテーブル
  • Rust ユーザーランド向け "std"

    • user_lib
      std::{fs, io, path, env, process, time}
      の公開インターフェースを模倣しています。
    • ユーザープログラムは syscall の処理 plumbing を読むのではなく、通常の Rust コードのように記述できます。
  • 真のユーザーランド

    • 80 個以上の coreutils と POSIX サブセットシェル(
      sh
      )が含まれます。
    • 機能:パイプライン制御フロー、関数定義、グローブ展開(glob)、コマンド置換、算術置換。
    • インタラクティブ要素:Tab キー補完とコマンド履歴機能を搭載したラインエディター。
  • ワンコマンドでのイメージ作成

    • tools/build-disk.sh
      コマンドで全てのユーザープログラムをコンパイルし、Unix スタイルのファイルシステムに配置してブート可能なディスクイメージにパックします。
  • 補完イメージツール

    • mbrkit
      および
      miniximg
      は独立した crates であり、MBR または Minix v1 イメージを扱うプロジェクトで役立つスタンドアロンのツールです。
  • Devcontainer の付属

    • Clone し VS Code で開き、「Reopen in Container」を押して
      make run
      を実行するだけで開発環境が整います。

🚀 クイックスタート

以下の手順でディスクイメージを構築し、QEMU で起動します。

1. ディスクイメージの構築

全てのユーザープログラムをコンパイルし、

/etc
,
/dev
,
/bin
を配置してパックします。

tools/build-disk.sh

2. カーネルのビルドと起動

QEMU でカーネルを起動します。出力デバイスを選択してください。

# VGA コンソール使用時(デフォルト)
cd kernel && make run

# シリアルコンソール使用時(-nographic モード)
cd kernel && make run-console

3. シェルコマンドの試し

シェルプロンプトが表示された後、以下のコマンドを試してみてください。

ls /bin                              # ディレクトリ内容の確認
echo $((1 + 2 * 3))                  # 算術展開の実行
for f in /etc/*; do echo $f; done    # for ループと glob 展開のテスト

# リкурレント関数の実行
fact() { if [ $1 -le 1 ]; then echo 1; else echo $(($1 * $(fact $(($1-1))))); fi; }
fact 7                               # → 出力: 5040

# タブ補完の確認
ec<TAB>                              # `echo` に自動補完される
↑                                    # コマンド履歴の移動

Devcontainer 外での動作

Devcontainer を使用しない場合、以下の依存関係をインストールする必要があります。

  • Rust toolchain:
    rust-toolchain.toml
    でピン留めされた最新の Rust nightly
  • システムツール:
    qemu-system-i386
  • クロスコンパイルツール: x86_64-linux-gnu-* binutils
  • ローカルテストツール: ローカルのイメージ・テスト用ツール

PATH 上にこれらのツールをインストールするには:

tools/install-tools.sh        # mbrkit, miniximg, ktest をインストール

✅ テスト

エンドツーエンドのテストは、QEMU 上でカーネルをブートし、

ktest/suites/
配下の
.ktest
スクリプトを使ってシリアルコンソールを操作して実行します。

# 全てのテストを実行
tools/run-tests.sh

# 特定のスイートのみ実行
tools/run-tests.sh --suite=shell

# 特定のテストセットのみ実行
tools/run-tests.sh --test-set=shell.basic

# QEMU の再起動を抑制(再利用)
tools/run-tests.sh --disable-reboot

🗂️ リポジトリ構成

  • kernel/
    カーネル本体
  • user_lib/
    std スタイルのユーザーランド用ライブラリ
  • user_lib_macros/
    proc-macro:
    #[user_lib::main]
  • user_program/
    coreutils および
    sh
    シェル
    (約 80 ツール)
  • ktest/
    シリアル経由で QEMU を操作するエンドツーエンドテストランナー
  • mbrkit/
    MBR ディスクイメージ用の CLI ツール(crates.io 入手可能)
  • miniximg/
    Minix ファイルシステム用イメージ作成およびライブラリ
  • rootfs/
    ディスクイメージのコンテンツテンプレート(
    /etc
    ,
    /root
    など)
  • tools/
    開発者向けスクリプト
    build-disk.sh
    ,
    run-tests.sh
    など)
  • tutorial/
    mdbook を使用したガイドウォークスルー(進行中)
  • .devcontainer/
    すぐに使える開発環境設定

🛣️ プロジェクトの現状

  • カーネル:Linux 0.11 に対して実質的に機能完備。フロッピーディスクへのサポートは意図的にスコープ外とされており、現在は磨き上げおよびツール整備に注力中。
  • ユーザーライブラリ:シェルと coreutils が必要とする範囲を現在カバーしている。
  • ユーザーランド:実際のインタラクティブな作業で利用可能。
  • チュートリアル:初期ドラフト段階。長期的にはゼロから構築する完全なウォークスルーの計画あり。

📚 チュートリアル

ガイドウォークスルーをローカル環境でするには:

cargo install mdbook
cd tutorial && mdbook serve --open

🙏 謝辞

開発中の重要な参考文献として提供いただいた元の Linux 0.11 カーネルソースコード(

yuan-xy/Linux-0.11
)に感謝いたします。また、本プロジェクトの実装において
rcore-os/rCore-Tutorial-v3
の影響を強く受けている部分もございます。

📄 ライセンス

詳細は

LICENSE
ファイルを参照してください。

同じ日のほかのニュース

一覧に戻る →

2026/07/14 7:19

『アジア最浄の村』が日曜日観光客禁止に

## Japanese 翻訳: 2026 年 1 月以来、インディアのメガラヤ州にある約 600 人の居住者がいるモーリャン・オン(Mawlynnong)村では、「真の村の生活」を再建する目的として、日曜日の昼間の観光客に対する厳格な禁止措置を導入しています。1902 年に設立された教会が存在し、人口の推定 100% がクリスチャンであるこのコミュニティは、日曜日には単一の道路への入口を黒い金属製のゲートで閉鎖して、 uninterrupted な礼拝を保証しています。以前からほとんどの観光関連事業所が日曜日の営業停止を選択していました(レストランは 2 カ所のみ営業)ましたが、公式な禁止措置により、今では店舗や一日利用施設が完全に閉鎖されるようになっています。一泊予約を持つゲストはこの昼間の旅行禁止からの例外扱いで、ゲストハウスに滞在することができ、一方で地元のレストランや記念品販売店は引き続き閉鎖されています。住民は、村評議会の委員でもあるプリシウス・コングドプ(Precious Khongdup)を含むコミュニティの一致した支持を受けながら、この取り組みを文化のアイデンティティ、精神的なリズム、および 2003 年に「アジアで最も清潔な村」と命名されたり、2014 年にナレンドラ・モディ首相のクリーン・インディア・ミッションキャンペーンの際に全国的な注目を得たりした功績をもたらした規律を保持するために不可欠だと考えています。この決定は、観光客による妨害に対する具体的な懸念に対応しており、観光客が地面にプラスチック製の水ボトルを置き去りにするというバイラル化した事象などが挙げられ、これにより地元からは強い反発が生じていました。言語学の教授ヴィジャヤ・デブナス(Vijaya Debnath)を含む専門家は、このイニシアチブを称賛しており、清潔さを維持しつつ、村民の静かな一日の休息と祈りの必要性にも敬意を表していると評価しています。

2026/07/14 3:22

Xcode を起動することなく Mac および iOS アプリを開発して配送する方法

## Japanese Translation: 本テキストでは、Xcode を一度設定した後の開封を不要とする堅牢で完全にヘッドレスの iOS アプリケーションの作成・デプロイワークフローが概説されています。シェルスクリプトによるライフサイクル全体のアオマティゼーションを通じて、開発者は `xcodebuild` コマンドラインツールを用いてコードをコンパイルし、`notarytool` によってビルドを保護し、`devicectl` を用いて物理デバイスにアプリを直接インストールします。セキュリティは、証明書ベースのキーチェーンおよび外部パスワードマネージャーの活用により維持され、プライベートキーなどの機密情報はバージョン管理システムへの投入を完全に防ぎます。本システムは XcodeGen を用いてプロジェクトを管理し、煩雑なローカルフォルダではなくクリーンな YAML 設定ファイル(`.yml` ファイル)によってプロジェクトを制御し、アドホックテスト版と公式開発者 ID リリースを自動的に区別します。一度設定されたリリーススクリプトは、アーカイブ、署名、認証化、スタプリング、インストールを含む厳格なパイプラインを実行し、沈黙する失敗を防ぐために堅牢なエラー処理(`set -euo pipefail`)を採用します。このアプローチは、チームが手動のマウス操作または GUI ウィンドウなしに、実際に動作するソフトウェアを効率的にデプロイするために安全で再現可能な CI パイプラインを構築することを可能にします。 ## Text to translate: The text outlines a robust, fully headless workflow for creating and deploying iOS applications that eliminates the need to open Xcode after an initial setup. By automating the entire lifecycle through shell scripts, developers utilize command-line tools such as `xcodebuild` to compile code, `notarytool` to secure builds, and `devicectl` to install apps directly onto physical devices. Security is maintained by leveraging certificate-based keychains and external password managers, ensuring sensitive secrets like private keys never enter version control. The system employs XcodeGen to manage projects via clean YAML configurations (`.yml` files) rather than cluttered local folders, automatically distinguishing between ad-hoc testing versions and official Developer ID releases. Once configured, a release script executes a rigorous pipeline involving archiving, signing, notarizing, stapling, and installation, while using strict error handling (`set -euo pipefail`) to prevent silent failures. This approach empowers teams to establish secure, repeatable CI pipelines that deploy real software efficiently without any manual mouse interactions or GUI windows.

2026/07/14 1:06

Apple が発表した新たな音声分析 API「SpeechAnalyzer」のベンチマークテストで、Whisper とその前代モデルと比較

## Japanese Translation: Apple の新しい SpeechAnalyzer API は、次期 OS 26 の一部として提供されるもので、英語の読み上げ音声に対する優れたオンデバイス音声認識を実現しており、特定ベンチマークコンテキスト内では従来のツールや人気が高い Whisper モデル(Tiny, Base, Small)を大幅に上回っています。この優位性は、M2 Pro チップなどの Apple ハードウェアで行われた厳密なローカルベンチマークを通じて証明され、オーディオを外部サーバーにアップロードすることなく、高速な処理速度——Whisper Small の計算時間の約 1/3——を実現することが示されました。清潔な LibriSpeech テストデータに対しては、従来の SFSpeechRecognizer API に比べて単語誤りを約 4 倍削減し(2.12% WER から 9.02%)、ノイズのあるデータに対しても同様の劇的な改善が見られました。この研究では、Inscribe のプロダクションコードパスと同一のテストハルネスを用い、Whisper の測定値は OpenAI が公開した値と比較しましたが、Whisper の相対的な不正確さは、これらのベンチマーク(アクセントのある音声、遠距離音声、または複数話者シナリオを含まない)に限定されたもの임을 指摘しました。重要なのは、すべてのテストが完全にオンデバイスで行われたことであり、従来の SFSpeechRecognizer もローカルで使用される場合でもクラウド処理にデフォルトで切り替わるという点です。これらの結果に基づき、Inscribe は製品ロジックを更新し、対応言語(現在約 30 のロケール)では SpeechAnalyzer を優先し、未対応の言語のみを Whisper に切り替えました。さらに、研究チームは Inscribe が SpeechAnalyzer でオーディオファイルを取り扱う際に重大なバグを見出し、生テキストデータを検証のために公開ダウンロード可能とする措置を講じました。これは、Apple エコシステム内のプライバシー重視かつ高パフォーマンスなオンデバイス AI 機能において大きな飛躍を意味します。