セガ 32X 上で Linux。ハードウェア同期プリミティブなど必要なのか?

2026/07/14 3:18

セガ 32X 上で Linux。ハードウェア同期プリミティブなど必要なのか?

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

要約

日本語訳:

まとめ:

このテキストの主な成果は、1994 年に発売され古めかしいアーキテクチャで知られるゲーム機セガ 32X に現代的な Linux オペレーティングシステムの移植に成功したことです。深刻なレガシー制約を克服し、開発者はデュアルプロセッサシステムを実用的なマルチ CPU 環境へと変えました。主な技術的ブレイクスルーとしては、メモリの制約を拡張するために FPGA ベースのフラッシュカートを使用し、オリジナルのハードウェアに必要な同期プリミティブが存在しなかったためソフトウェアによる同期アルゴリズムを実装することなどがあります。チームは、SH2 プロセッサで存在しないオペコードが原因となった重大なコンパイラエラーも解決しました。アタリジャガードおよびメディアテックスマートフォンへの移植での過去の成功を踏まえ、このプロジェクトはメモリアドレスマッピングに関する大幅なエンジニアリング努力が必要な場合でもレガシーハードウェアに現代的なシステムを実行できることを示す概念実証です。パフォーマンスはバス競合によって依然として著しく制限されていますが、最終的なセットアップでは安定性を確保するために専用の musl ツールチェーンを利用しています。提供された設定ファイルを用いて愛好家がこのユニークな移植を再現できるようにしており、特定の制約に対して十分な最適化が適用されれば、珍しいコンソールでも複雑なオペレーティングシステムを実行できることを示しています。

本文

セガ 32X への Linux 移植:
jmp _linux
から会場の集合へ

Linux on Jaguar の投稿が人気だったため、今回のエントリも linuxmd プロジェクトへの敬意と感謝から始まります。ハッカーニュースなどでも関心が寄せられました。なぜこの種のプロジェクトが続くのか?答えはシンプルです。ゼロからボードを立ち上げるスキルの向上のため、そして単純な作業以上の「結果を生むレイヤー」の実験が楽しいためです。

前例:1990 年代の携帯電話とメディアテック

開発活動が本格的になるきっかけは中学生時代でした。親から買ってもらった**MediaTek 6589 プロセッサ(1GB RAM)**搭載の初期モデル携帯電話で、Android 5.0 Lollipop を動かそうとした経験があります。

  • ベンダーによるアップデート拒否を受け、GPL に基づいてソースコード公開を要望し、ついにリークされたALPS フルソースコードを手に入れました。
  • ベンダー製画像の逆エンジニアリングを行い、欠落するデバイスドライバ(LCM、バッテリー等)を実装しました。
  • Bluetooth 非対応でも、純粋な Material Design が動作する成功体験がありました。

前例:セガ 32X のハードウェア

セガ 32X はメガドライブとサターン中間の「アドオン」として登場しましたが、実はベースコンソールよりも遥かに強力な仕様を持っています。

コンポーネントセガジェネシス/メガドライブセガ 32X
メイン CPU1 × モトローラ 68000 @ 7.6 MHz2 × ヒタチ SH2 (SH7604) @ 23 MHz
ビット数16 ビット32 ビット
最大画面上の色数64768
システム RAM64KB + 256KB SDRAM-
ビデオ RAM64KB256KB(ダブルバッファリング)
グラフィックススプライトベースソフトウェアレンダリングされた 3D

ソニープレイステーション 1 とほぼ同時発売という戦略的失敗もありましたが、Linux 移植の観点からはこの強力なアーキテクチャが魅力的でした。

移植工程:
jmp _linux
から会場の集合へ

SH2 に Linux を動作させるために、既存の Chilly Willy セット(開発キット例)をベースに独自の展開を行いました。

メモリ構成の工夫:256K + 64K

Linux を動作させるための最大の障害はメモリ確保でした。通常のフラッシュカートでは解決不可能でしたが、**Krikkz から発売されている拡張 SSFv2 マッパー(ROM->RAM)**を利用しました。

  • このマッパーにより、外部 ROM を書き込み可能な RAM として扱うことが可能になります。
  • これにより 4MB の RAM が確保でき、Linux ロードローダーと initramfs を収めるスペースを確保しました(最終的に約 540KB の ROM と残りの RAM のバランスで動作を確認)。

コンパイルと初期起動の壁

独自に作成した

sh2eb-elf
クロスコンパイラーで Linux をコンパイルしましたが、いくつかの難関を突破する必要がありました。

  • GCC 的 ICE (Internal Compiler Error):
    kernel/nstree.c
    のコンパイル時に発生し、手直しして回避しました。
  • UART デバッグ: 初期段階では 32X からの出力が制限されるため、ジェネシスの UART を介してメッセージを確認しました。
  • スタック破損の修正:
    ashlsi3
    ,
    ashrsi3
    ,
    lshrsi3
    のレジスタ操作によりスタックが破壊され、無限ループになる問題を発見し、安全な実装に修正しました。
  • 非存在命令
    shrd
    の対策
    : SH2 に存在しない命令を呼び出すとフリーズするため、関連コードから削除または代替処理を行いました。
  • ツールチェーンの選定: 難易度の高いクロストルツールで戦い抜き、
    musl-cross-make
    を利用して
    sh2eb-linux-musldpic-
    ツールチェーンを構築しました。

これにより、ELF FDPIC サポートを活用し、システムが最終的に起動するに至りました。

挑戦:SMP (対称多重プロセッシング) の実装

「ふざけているのではないか?」というレベルの困難なチャレンジとして、2 つの SH2 CPU を同時動作させることに取り組みました。

  • ハードウェア上の同期プリミティブ(互斥ロックなど)やキャッシュ一貫性が存在しないため、純粋なソフトウェア実装が必要でした。
  • Peterson のアルゴリズムを採用し、
    cmpxchg
    などの機能もソフトウェアでスピンロックを介して実装しました。
  • IPI (Inter-Processor Interrupt) の配信には 68000 CPU をバスアダプターとして活用し、68000 がインポット信号を受けて各 SH2 に割り込みを通知する仕組みを構築しました。
  • CPU ID の識別は、ハードウェア除算レジスタ
    DVSR
    にマッピングしたソフトウェア定義のレジスタにより実現しました。

結果

以下のログのように、2 つの CPU が同時に起動することが確認できました。ただし、バス競合によりパフォーマンスは劣悪でしたが、「動作すること」自体が目的でした。

smp: 二次 CPU を立ち上げ中...
MARS SMP: 二次 SH2 を 22082000 に解放しました
smp: 1 ノード、2 CPUs を立ち上げました

スケジュールのバグや

default_idle()
の修正など、開発には数多くの試行錯誤と深夜の追跡が必要でした。

まとめ:voilà

このプロジェクトは OOM (Out of Memory) やダイエットが必要な Linux/Busybox との戦いでもありましたが、非常に報われる体験となりました。

もし誰かが試すなら Misc. config ファイル

以下の設定ファイルが活用可能です。

  • Linux ツリー:
    mars_defconfig
  • Busybox 設定: ビューティボックス標準設定
  • Init スクリプト: システム起動時に必要となる初期スクリプト

同じ日のほかのニュース

一覧に戻る →

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 機能において大きな飛躍を意味します。