世界を動かす技術を、日本語で。

Show HN: Oberon System 3がRaspberry Pi 3上でネイティブに動作(準備済みSDカード付き)

概要

Oberonシステムのカーネルやファイルシステムなどが32ビットARMへ完全移植。 QEMU 10.2上でRaspberry Pi 2Bエミュレーションにて起動・実行可能。 ビルドはi386版同様に非常に高速で、1分以内に完了。 QEMUイメージとツールチェーンの事前ビルド版も提供。 今後は実機でのJTAGデバッグとネットワークドライバの移植を予定。

Oberonシステム ARM移植の現状

  • OberonシステムのカーネルRealsファイルシステム (AosFs)を 32ビットARM へ完全移植
  • プラットフォーム固有ドライバ (Display、USB、Math)もARM対応
  • QEMU 10.2で Raspberry Pi 2B (raspi2b machine)をエミュレートし、 フルシステムの起動・動作 を確認
  • i386版と同等の高速ビルド を実現
    • モジュールのコンパイル
    • コアの静的リンク
    • AosFsドライブ生成
    • ランタイムファイルの格納
  • カスタムC99ツールチェーン を利用し、 T480などの現行PCで1分以内にビルド完了
  • QEMUイメージとビルドに使用したツールチェーンの事前ビルド版 を提供

今後の展望

  • JTAGデバッグ による 実機検証
    • 対象: Raspberry Pi Model 2B、3B、Zero 2
  • ベアメタル動作 の実現が目標
  • ネットワークドライバ(特にEthernet) の移植を検討
    • Wlan対応は工数的に未定

Hackerたちの意見

これいいね!MS-DOSが全盛期の頃、386でSystem 3を動かしてたのを思い出すよ。

ありがとう。実は、リポジトリにはi386版のシステムもあって、カーネルを修正してMultibootで動くようにしたから、インストールがかなり楽になったんだ。両プラットフォームにとって重要な成果は、スタンドアロンツールだね。つまり、Linuxや他のプラットフォーム上でOberonシステム全体をコンパイルしてリンクできるんだ(詳細はhttps://github.com/rochus-keller/op2/を見てね)。開発用に使ったIDEも実装したよ(https://github.com/rochus-keller/activeoberon/を参照)。

おお、これは試してみなきゃ。素晴らしい仕事だね!ちょっと聞きたいんだけど、ここにいる人たちなら知ってると思うから、今のOberonの「全体像」ってどうなってるの?PascalやModulaからの系譜は知ってるし、Oberonで完全に書かれたOSがあったことも知ってる。SmalltalkやLispのマシンイメージに似てるよね。でも、後のOberonの作業は、Javaやdot netのようなマネージドランタイムとInferno OSの中間のように見えるのが混乱するんだ。ホスティングでも「ネイティブ」にも動くみたいだし。Wikipediaやウェブページをざっと見たときも、ちょっと混乱しちゃった。

ありがとう。SmalltalkやLispとは対照的に、Oberonは元々ネイティブ言語で、Oberonシステムは元々、90年代にETHチューリッヒで教育用に使われたCeresコンピュータのネイティブOSとして考案されたんだ。だから、LispやSmalltalkのようなイメージはないんだよ。Oberonは今も、いろんな方言や派生形(例えば、私のOberon+やMicron言語など)として生き続けてるよ(https://github.com/rochus-keller/oberonやhttps://github.com/rochus-keller/micronを見てね)。実際、JavaやECMA 335ランタイムで動くOberonの実装もあって、これはOberonのポインタ処理とメモリ管理が非常に制限されているおかげなんだ。

Smalltalkも、元々はXerox Altoの時代(1972年頃)にベアメタルで動いていたフルOSだったよね。

Oberonのユーザーインターフェースは、Plan 9のAcmeにインスパイアされたんだ。Oberonはプログラミングにとってとても素敵で楽しい、居心地の良いシステムと環境だよ。2010年頃に数ヶ月住んでたけど、楽しかったな。

このUIスタイル、タイル状のテキストウィンドウにマウスとグラフィックのインタラクション(実際、emacsに似てる)って、今使ってるコーディングエージェントにこそ合ってると思うんだ。情報のパネルをドッキングしたり、ただの「受け入れますか? Y/N」じゃなくてコードをリアルタイムで編集したり、サイドインタラクションがあったり、ちゃんとしたスクロールバーやクリップボードも欲しいし、リアルタイムのREPLもあれば最高なのに。なのに、Claude Codeのバグだらけでほとんどインタラクティブじゃない「60fps TUI」しかないのが残念。

これ素晴らしいね。考慮すれば、そのハードウェア上ではかなり速いんじゃないかな。

システムはめっちゃ速く立ち上がる(Linuxと比べてね)けど、その後USBハブやキーボード/マウスを見つけるのに結構時間がかかる。もうちょっと速くできるかもしれないな。

余ってるzero2で試してみるつもりだよ。ありがとう、これがまさにハッカーニュースに来た理由なんだ。

いいね、うまくいったか教えてね。残念ながら、ミニHDMIアダプタが壊れちゃって、新しいのが届くのを待ってるところ。けど、UARTピンにヘッダーをはんだ付けしたし、システムがちゃんと起動するのも確認できたよ。

Oberonが大好きなんだ! A2/ActiveOberon/BlueBottle、今の名前は何でもいいけど、小さなネイティブマシンで動かしたいな。素晴らしい!

ありがとう。A2 FoxコンパイラにはARMバックエンドがあるから、まだ誰もRaspiに移植してないとは思えないな。2003年版のAOS/Bluebottle(A2じゃないやつ)は、特にマルチコアハードウェアをサポートしてるから、興味深いシステムのリストに入ってるよ。

Oberonってまだ大文字のキーワードが必要なの?それっていつも間違ったことを強調してる気がするんだけど。IF disaster THEN abort;

うん、元のOberon(このシステムが基づいてるやつ)は大文字のキーワードがあるよ(他にもいくつかの伝統的なルールがね)。もっとモダンなものを探してるなら、https://github.com/rochus-keller/oberon、https://github.com/rochus-keller/luon、または https://github.com/rochus-keller/micron に行ってみて。

そうだね、Modula-2もそうだし。でも、みんな忘れがちだけど、私たちはNotepadでプログラミングしてるわけじゃなくて、キーワードの自動大文字化ができるプログラマー向けのエディタを使ってるんだよね。だから、括弧や空白の話みたいに、実は問題じゃないんだ。

これは素晴らしいね、特にSystem 3で、Oberonが最終的に素敵なユーザー体験に進化したことを考えると。Gadgetsシステムを使ったSystem 3では、最初のProject Oberonのシンプルな白黒のフレームワークなしの体験とは違って、ちゃんとしたメインストリームOSっぽくなってきてたし、すでに技術的な成果だったのに、メモリ安全なシステム言語を使ってたんだ。Active Oberonの進んだ道が好きだけど、今はあまり注目されてないみたいで、System 3よりも探求するのがずっと複雑だね。知らない人のために言うと、OLEみたいなもの(Xerox PARCがCedarでやったのにインスパイアされた)や、ポータビリティのためのスリムなバイナリを持つAOT/JITコンパイルシステム、そしてすべてがメモリ安全なシステム言語で動いてたんだ。

ありがとう。AOS/Bluebottleの移行準備が進んでるよ。メモリの安全性についてだけど、SYSTEMモジュールの機能を使わなければメモリ安全なんだ。でも、OberonSystem 3(以降)はその機能にかなり依存してるからね。

Oberonが何なのか理解するまで、5リンクくらい深く潜ってたよ。Oberonのエコシステムに詳しくない人のために、READMEの最初に簡単な説明があるといいな。

もう一度Wikipediaをチェックするいい機会だね(https://en.wikipedia.org/wiki/Oberon_(operating_system))、それか信頼できるLLMに聞いてみるのもアリだよ。