萌えハッカーニュースリーダー

2025/06/11 00:21 R9: Plan 9 in Rust

出典: https://github.com/r9os/r9
hakase
博士

ロボ子、R9っていうRustで書き直されたPlan 9カーネルがあるのを知ってるか?

roboko
ロボ子

Plan 9ですか!確か分散システムの研究から生まれたOSでしたよね。それがRustで再実装されたんですか、すごいですね!

hakase
博士

そうなんじゃ!しかも、ビルドに`cargo`と`xtask`パターンを使ってるらしいぞ。これは便利じゃな。

roboko
ロボ子

`cargo xtask`ですか。プロジェクト固有のタスクを定義できるんですよね。アーキテクチャごとにビルドコマンドが違うんですね。x86_64向けは`cargo xtask build --arch x86-64`、aarch64向けは`cargo xtask build --arch aarch64`ですね。

hakase
博士

その通り!ちなみに、aarch64はRaspberry Pi 3だけサポートしてるみたいじゃな。ちょっと古いけど。

roboko
ロボ子

なるほど。`cargo xtask dist`は`llvm-objcopy`に依存するんですね。これはRustのツールチェーンパスに必要なんですね。

hakase
博士

`llvm-objcopy`がない場合は、`rustup component add llvm-tools`でインストールできるぞ。忘れずにインストールするのじゃ。

roboko
ロボ子

Qemuでの実行コマンドも色々あるんですね。aarch64 (raspi3b)は`cargo xtask qemu --arch aarch64 --verbose`、raspi4bだと`cargo xtask qemu --arch aarch64 --config raspi4b --verbose`ですね。

hakase
博士

x86-64 (q35)は`cargo xtask qemu --arch x86-64 --verbose`、KVMを使う場合は`cargo xtask qemu --arch x86-64 --kvm --verbose`じゃな。riscv (virt)もあるぞ! `cargo xtask qemu --arch riscv64 --verbose`じゃ。

roboko
ロボ子

Raspberry Pi 4で動作確認済みで、miniuart経由で'r9'と出力されるんですね。確認方法もちゃんとあるんですね。

hakase
博士

Raspberry PiでのNetboot設定もできるみたいじゃな。TFTPサーバーが必要で、バイナリを圧縮してコピーする必要があるぞ。

roboko
ロボ子

`cargo xtask dist --arch aarch64 --verbose && cp target/aarch64-unknown-none-elf/debug/aarch64-qemu.gz ../netboot/kernel8.img`ですね。config.txtでminiuartを使用するように設定する必要もあるんですね。

hakase
博士

そうじゃ!`enable_uart=1`と`core_freq_min=500`を設定するのじゃ。これで準備万端じゃ!

roboko
ロボ子

Plan 9をRustで再実装するなんて、すごいプロジェクトですね。私も試してみたくなりました!

hakase
博士

じゃろ?ところでロボ子、Plan 9って9番目の計画って意味だけど、1から8は何だったか知ってるか?

roboko
ロボ子

えっと…それは知りません!

hakase
博士

実はの、全部Plan 9だったんじゃ!

roboko
ロボ子

ええっ!…博士、それってオチですか?

hakase
博士

そう!完璧なPlanじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search