1 ポイント 投稿者 GN⁺ 2025-06-21 | 1件のコメント | WhatsAppで共有
  • Infinite Macがブラウザ上で初期のMac OS Xを実行できるようになり、現在は10.1と10.3が最もよくサポートされている
  • 既存のDingusPPCルートがカーネルパニックとグラフィック問題で行き詰まったため、2000年代初頭のMac OS Xエミュレーションを目標に作られたPearPCの移植へと方針転換した
  • 性能は依然として遅く、Mac OS X 10.2が完全に動作するまでほぼ2分かかり、最適化で短縮できた時間も約15秒程度にとどまる
  • PowerPCの浮動小数点処理でFPビットの検査を見落としていたバグがDockの描画やFinderウィンドウの問題を引き起こしており、修正の過程でDingusPPCの安定性も改善された
  • Infinite HDは初期Mac OS X時代のインディーソフトウェアやDeveloper CDのツールを収めるよう再構成されたが、HFS/HFS+の違いと古い.dmg互換性が制約として残っている

ブラウザで初期のMac OS Xを実行

  • Infinite Macは現在、初期のMac OS Xを実行できる
    • Mac OS X 10.1Mac OS X 10.3が最もよくサポートされているバージョン
    • 実行速度は速くないが、当時の実機もそこまで大きく優れていたわけではないという感覚に近い
  • 時代に合ったソフトウェアを同梱するInfinite HDも、初期Mac OS X期のインディーソフトウェア中心に再構成された

PearPC移植への方針転換

  • 当初はDingusPPCでMac OS XをInfinite Mac上で動かそうとしていたが、昨夏ごろにカーネルパニックとグラフィック崩れから先へ進めなくなった
    • 決定的実行モードで問題の範囲を絞ろうとしたものの、次の一手は明確ではなかった
  • 代替としてPearPCを選択した
    • PearPCは2000年代初頭、x86 WindowsおよびLinuxマシンでMac OS Xをエミュレートするために作られた
    • Intel移行後は関心が薄れ、事実上停止したコードベースとして扱われてきた
  • kanjitalk755が現代のmacOSでビルド・実行できるPearPCの実験ブランチを作っていたことが、移植の出発点になった
  • PearPCはマルチプラットフォームのコードベースで、スレッドのような移植が難しい概念を広範には使っておらず、WebAssembly/EmscriptenおよびInfinite Macランタイムへ移しやすかった
    • 数日のうちにビルド、ビデオ出力、ディスクイメージ読み込み、マウス・キーボード入力の接続まで進んだ
    • 結果として、Mac OS X 10.2をブラウザ上で以前より安定して実行できるようになった

性能最適化と残るボトルネック

  • PearPCはMac OS X 10.2をより安定して動かしたが、DingusPPCより遅く感じられた
  • DingusPPCのベンチマークハーネスをPearPCへ移し、既存のDingusPPC最適化作業をPearPCにも繰り返し適用した
    • 両エミュレータともルックアップテーブルベースの純粋インタプリタであり、作業は比較的直接的だった
    • Mac OS X 10.2の起動時間を約15秒短縮した
  • 最適化後でも、完全に操作可能な状態になるまでほぼ2分かかる
    • Infinite Mac UIには、Mac OS Xの起動が遅い可能性があるという案内を追加した
  • 最大のボトルネックはPearPCのMMUキャッシュ欠如にある
    • すべてのload/storeが複雑なアドレス計算を経由するため高コストになる
    • DingusPPCにはより成熟した階層キャッシュがあり、効果的に見える
  • PearPCは10.2〜10.4実行でDingusPPCより安定している可能性があるが、コードベースはあまり原則的ではない
    • カスタムファームウェアとビデオドライバを使っている
    • Mac OS Xに必要なPowerPC命令の一部しか実装していない
    • 長期的には、DingusPPCが高速で安定し、正確な選択肢になることが期待されている

FPビット検査と描画バグ

  • PearPCインタプリタに「統合デコードテーブル」方式をopcode系統ごとに適用していた際、浮動小数点演算の変更でリグレッションが発生した
    • Dockに描画グリッチが生じた
    • Finderウィンドウが開かなかった
  • opcodeグループ59と63のディスパッチでは単純なルックアップだけでなく、まずMachine State RegisterFPビットを確認する必要があった
    • FPビットが設定されていなければ、“floating point unavailable”例外を投げる
  • 当時のMacで使われていたPowerPCチップにはFPUがあったが、Mac OS X起動中にはその例外が頻繁に発生する
    • 当時のxnuカーネルソースにはFPビットをクリアする箇所と例外ハンドラがある
    • コンテキストスイッチ時のFPUレジスタ保存・復元を避けるための最適化と見られる
  • 最適化したディスパッチコードにも同じFP検査を実装すると、描画問題は消えた
  • 同じバグはDingusPPCにも残っていた
    • DingusPPCはFPビットを確認せず、浮動小数点命令を常に通していた
    • 手早い修正で例外を発生させるようにすると、Mac OS Xの描画グリッチが消えた
    • その後、正式実装と性能低下回避の修正が入り、DingusPPCの安定性は大きく向上した
  • 両エミュレータを組み合わせることで、実行可能な初期Mac OS Xの範囲が広がった
    • DingusPPCは10.1を安定して実行できる
    • PearPCは10.1を安定して実行できない
    • 10.0は依然として不安定で、Public Betaは即座にカーネルパニックを起こす

Infinite HDの再構成

  • Infinite Macの魅力の一つは、時代に合ったソフトウェアを収めたInfinite HDが一緒にマウントされる点にある
  • Mac OS X対応に合わせ、80〜90年代のクラシックMacアプリを超えて、初期Mac OS X時代のソフトウェアを収めた別バージョンを作成した
    • 個人的に好んでいたアプリに加え、提案を受けて一覧を拡張した
  • ディスクイメージは既存の自動化手法を拡張して生成した
    • 初期Mac OS X期にはディスクイメージ利用が非常に多かったため、生成イメージ内の追加フォルダへ.dmgを取り込む機能を追加した
  • 古い.dmgは拡張子が同じでも複数の変種があり、現代のmacOSのhdiutilでは常にマウントできなかった
    • 最終的にdmg2imgでrawパーティションを先に抽出した
    • その後、現代のmacOSがマウントしてコピーできる新しいディスクイメージを作り直す迂回策を使った
  • 実際のソフトウェア収集では、2000年代初頭〜中盤のMac OS Xソフトウェアが空白地帯だった
    • Macintosh Gardenにも一部はあるが、優先度は高くない
    • 元ベンダー側では古すぎて削除されている場合が多い
    • Wayback Machineを多用した
  • 各Mac OS Xバージョンに対応するDeveloper CDもインストールし、Project BuilderやInterface Builderのようなツールを使えるようにした

ファイルシステムと複数ディスクのマウント

  • ディスクビルド工程はHFS中心だが、この時代の標準はHFS+だった
    • HFS+はより長いファイル名や任意のUnicode文字を含めるなど、より高度な機能を提供する
    • HFS+機能に依存するディスクイメージファイルは、損失なく変換できない
    • 大半のソフトウェアでは大きな問題にならなかった
  • 起動ディスク、Infinite HD、Saved HDまで最大3台のドライブをマウントするため、DingusPPCフォークの手法を借用した
    • 起動時に指定された任意個数のパーティションイメージから、その場でマルチパーティションのディスクイメージを生成する

AquaモードとサイトUI

  • Mac OS X追加を完成させるため、Infinite MacサイトのコントロールにもAquaモードを追加した
    • 従来はclassic、Platinum、NeXTの外観があった
  • Aquaデザインでは10.0/10.1スタイルを選んだ
    • 10.3や10.4のより抑制された版の方が好みだが、10.0/10.1の方がノスタルジーが強いと判断した
  • OSと同じ画像アセットを使うため、スクリーンショットではなく元のリソースを抽出した
    • Aquaアセットは半透明要素を多く使うため、通常のスクリーンショットでは不十分だった
    • resource_dasmpxm2tgaを使ってExtras.rsrcから元アセットを抽出した

Classic実行、verboseモード、小さな発見

  • 複数イメージをマウントできるため、Mac OS 9パーティションを併置してClassic互換環境を起動できる
    • この機能は10.1でのみ動作する
    • PearPCはClassicをサポートしていなかった
    • 結果として、WebAssembly仮想マシン内でエミュレートされたMac OS Xの中で、クラシックMacアプリをエミュレートできる
  • Mac OS Xイメージにより、Calculatorの動作変化も確認できた
    • 10.3までは=を繰り返し押す動作がなかった
    • 10.4にはその動作があった
  • Mac OS Xの起動が遅いため進行状況をより見せる目的で、verboseモードを露出させた
    • PearPCには内蔵方式があった
    • DingusPPCには起動時にOpen Firmware変数を指定する機能を追加した
    • Infinite Macのカスタムインスタンスダイアログでは「Debug Mode」スイッチとして公開される
  • macosx.appドメインも確保しようとしたが、すでに登録されていた
    • そのドメインは特定のYouTube動画へリダイレクトされる
    • 動画のYouTuberは自分が登録したものではないと答えた

次の候補とQEMUの可能性

  • Mac OS X対応により、Infinite Macは現代のmacOSにかなり近い地点まで到達した
    • その先にも2回のCPU移行と、いくつかの小さな変化が残っている
    • Tigerは現在のmacOSユーザーにも基本的に認識できる姿をしている
  • より深い、あるいはより特殊なレトロコンピューティング対象としては、A/UX、Lisa、Pippin、Newtonが残っている
    • A/UXはクラシックMac OSと同時代のシステムで、NeXTStepと比較に値する対象だ
    • ShoebillはA/UXを動かし、コードベースも移植可能に見える
    • Lisa、Pippin、Newton via Einsteinも候補として残っている
  • 以前はQEMUをWebAssemblyへ移植するのは大きすぎるプロジェクトだと考えており、qemu.jsの性能も実用性が低そうに見えた
  • 最近、qemu-wasmとFOSDEM発表を通じて可能性を再確認した
    • Linuxゲストのデモ性能は心強い
    • 100MBデータのMD5チェックサムを計算する即席ベンチマークでは、qemu-wasmは8秒、DingusPPCは13秒、PearPCは18秒かかった
    • グラフィカルなゲストであるMac OS Xとは、なお大きな隔たりがある

1件のコメント

 
GN⁺ 2025-06-21
Hacker Newsの意見
  • PearPCが数年よく持ちこたえたのは確かだが、元のメンテナーが列車事故で亡くなったあと、勢いの大半を失った
    当時は熱心なユーザーでありコミュニティの一員でもあって、今思い出しても涙が出る
    https://www.wired.com/2004/07/pearpc-coauthor/

    • 優れた開発者たちが突然この世を去ったのに訃報もなく、別の開発者が一人だけ何か知っているらしい、ということが多くて、時々、宇宙人が彼らを地球に置いておくにはあまりに貴重だと見なして連れて行ったのだと信じたくなる
    • 誰かが彼の成果をコピーして、cherryosという名前で販売していた
    • この記事はペイウォールの向こうにある
  • Infinite Macは、クラシックMacintoshとNeXTのシステムリリースやソフトウェアを集め、Webブラウザから簡単にアクセスできるようにしたコレクション
    https://infinitemac.org/

    • ブログ記事だけでも単独で理解できるように、Infinite Macへリンクするか定義しておくべきだった
    • このページにリンクしてくれてよかった。ブログ著者が大きく見落としていた部分で、このコメントがなければこの素晴らしいサイトを見つけられなかったと思う
  • 記事で最も興味深かった部分の一つは、700行未満のPPC CPUエミュレータへのリンクだった
    https://github.com/kwhr0/macemu/blob/master/SheepShaver/src/...
    6502エミュレータではこうした簡潔さを見かけるが、比較的現代的なアーキテクチャでは珍しい

    • RISCなので、そこまで驚くことではない。MIPSエミュレータもだいたいそのくらいのサイズ
  • 今20歳の技術好きがOS X 10.4や10.5、10.6に触れたらどう感じるのか、想像がつかない
    ほろ苦いことに、暗黒時代の人が古典彫刻を前にして「人類はかつてどうやってこんなものを作れたのだろう?」と思う場面が浮かぶ
    ただし好みは変わる。実際の暗黒時代の人々は「この異教的な退廃は何だ?」と思ったかもしれないし、今なら「写真みたいなアイコンなんてダサい!」と見るかもしれない

    • 10.4は、最新のmacOSが何であれ、基本的にほぼ同じように見え、同じように動作する。Liquid Glassがあっても似たように動く
      アプリのインストールも相変わらず「IKEA式のdmgからアプリをドラッグして置く」方式で、たまにzipやpkgがある。Finderウィンドウにはすでに左サイドバーのブックマークがあり、Dockも同じように動作する。変な3D Dockの時期はあったが、Leopardだった気がする
      Mac App Storeはないが、今でもほとんど誰も使っていないほうだし、SpotlightはTigerで新登場した。Windows XPと11の違いよりずっと見分けやすい。XPは11とは動作方式がかなり違う
    • 20歳だけど、子どもの頃に10.5や10.6を使っていたぼんやりした記憶があるので、懐かしく感じる
    • 10.4/10.5の頃に開発者として始めた。主に半分ダークモードみたいに見せようとして、いろいろ実行したりテーマをいじったりしていた時期だった
      当時はシステムフォルダを触ることが今ほど複雑ではなかった
    • 「暗黒時代」が何を意味するのか分からない。能力が失われたというより、帝国がお金を使う対象と独立王国がお金を使う対象が違っていた、ということに近い
      初期中世にも美しい遺物や建築物はたくさんあった。多くは残っていないが、サットン・フーの船葬やアングロ・サクソンの教会のように、実際に見たものだけでも例はある
  • スクリーンショットが本当に驚き。個人的にはMac OS Xのほうが今日のMac OSよりずっと良く見える
    明確で整然としていて、「よし、この環境なら仕事ができそうだ!」という感じがする
    今のMac OSは「助けて、キャンディの袋に落ちたんだけど、どうやって出ればいいの?」みたいな感じ。他の人もこう感じるのか気になる

    • 昔のグレーのインターフェース(Windows 95、macOS 9)のファンになりつつある気がする。電卓がただの道具であるように、そうしたUIも道具のように感じられて落ち着く
    • 正直、そうは思わない。実際に見て操作するUIは、メニューバー、三点リーダー、たまにSpotlightバーくらいに限られる
      Windowsも同じ。OSそのもの上で作業することはほとんどなく、ネイティブアプリもまれで、大半はブラウザベースか、サードパーティのデザインシステムを使うクロスプラットフォームアプリだ
    • 現代のMacOSでも、こうした外観と操作感を提供できない理由は実質的にない。明白な理由があるとすれば、モジュール性に乏しいひどいソフトウェア設計だけだ
      ソフトウェア企業がソフトウェアをうまく作っているふりをするのにも、もううんざりだ
    • 一番好きなのは10.3 PantherのAquaとブラッシュドメタルが混ざった見た目
      10.4 Tigerも似ているが、上部メニューバーが光沢仕上げで、時間がたつといまいちに感じた。10.5 Leopardには派手で野暮ったい3D Dock、透明な上部メニューバー、より現代的なグラデーションがあった
      当時は格好よかったが、グラデーションはブラッシュドメタルとAquaほど格好よくはない。その後は全部ちょっと退屈
    • ウィンドウの縞模様は少しやりすぎで、なくなったときはかなりうれしかった
  • 10年以上最後のコミットがなかったpearpcプロジェクトで成功したというのが意外: https://github.com/sebastianbiallas/pearpc
    彼のフォークは https://github.com/mihaip/pearpc にある
    WebAssemblyターゲットを追加したが、x86-64対応も維持しているようだ
    さらに、NextStepをInfinite Macに入れた過程についてもブログに書いている: https://blog.persistent.info/2024/03/infinite-mac-nextstep.h...

  • こういうものは本当に良い。当時の Aqua は啓示のような存在だった

    • あらゆる Linux のウィンドウマネージャに Aqua テーマがあった。Apple は「Linux デスクトップの年」の人々が何年も作ろうとしていて、今も作っている OS を実際に世に出した
      祖母でも使える使いやすさを備えたメインストリームの Unix で、主要なサードパーティアプリまで対応していたのだから、完全なホームランだった
    • Aqua は今でも啓示のようだ。ウィンドウコントロールを一目で識別できる力という点では、大きく後退してしまった
      Liquid Glass でそうした要素が一部戻ってくることを願っているが、正直 Aqua は今見ても格好いい
      Windows Vista や Linux テーマのような模倣が見落としていたのは、すべてがどれほど一貫していて使いやすかったかだった。見た目は格好よかったが、それ以上に重要なのは本当にうまく機能していたことだ
    • Steve Jobs は「この18か月間、まったく新しいユーザーインターフェースを秘密裏に設計してきた。Apple の遺産を次の世紀へ引き継ぐものだ。私たちはこの新しい UI を Aqua と呼ぶ。液体のようだからだ。デザイン目標の一つは、見た瞬間になめたくなるものにすることだった」と語った
    • Liquid Glass は、あの時代をもう一度思い出させるように見える
  • 懐かしい UI が見えてうれしい。Macintosh OS 8 あたりの Platinum、OS X 10.3 と 10.4 あたりの、なめたくなるような MacOS X UI が恋しい
    SunOS/Slowlaris の OpenLook、NeXTStep/OpenStep UI、オレンジと緑を決して混ぜるべきではなかった Winblows XP 以前の頂点だった Microsoft Windows 2000 も良かったし、SGI の IRIX と Motif 系の楽しさも思い出す
    UI 要素はほとんど常に区別でき、理解でき、一貫していた。標準 UI コントロールを操作すれば、実行前から何が起こるか正確に分かり、実際にもその通りになった
    カスタマイズ可能で、テーマを当てられ、置き換え可能で、より格好よくした結果が、今日私たちが手にしているものなのだろう

  • 初期の OS X 時代は Mac の本当の 黄金期 だった。ハードウェアは x86 とかなり競争力があり、OS は史上最高レベルだった
    結局どちらもきしみ始めたが、今はハードウェアの第二の黄金期なので、いつか近いうちに Mac OS が再び素晴らしくなるかもしれないと夢見ることはできる
    ただし新しいハードウェア黄金期であっても、ここでのエミュレーション性能は M1 と Safari ではほとんど使い物にならないレベルに近い

    • Mac OS が再び素晴らしくなる方向に進んでいるとは思わない
    • 初期の x86 モデルを使っていたが、価格面で競争力はなく、OS X も思ったほど良くなかった
      カーネルパニックは毎日のようにあり、動画を見ていると QuickTime がセグメンテーションエラーで落ちることもあった
      wmv や divx のようなファイル形式を再生するには、適切なコーデックを探してインストールするクエストをしなければならなかった
      見た目を良くしようとして空気の流れのための通気口をきちんと入れなかったため、過熱もあった
    • 68k から PPC、Intel、Silicon まで、ずっと Think Different™ に使い続けてきた。性能向上が最も大きかったのは直近2回の CPU 移行で、絶対性能とワット当たり性能の両方でそうだった
      エントリー向けの標準 M4 mini は驚異的だ。コンピュータ全体が、同程度の性能の x86 GPU 1個より少ない電力で動く
    • 昔からある問題そのままだ。ハードウェア が性能を与えると、ソフトウェア がそれを持っていく
  • Dark Castle! 子どもの頃、父が Apple Lisa を持っていた。Apple 向けの会計ソフト製品群を開発していたので、Apple が親切にも提供してくれたマシンだった
    当時はこの驚くべきマシンを当たり前のものと思っていて、ゲームと MacPaint にしか使っていなかった。父の 3.5 インチディスクのコレクションの中に「Dark Castle」と書かれたディスクがあったが、覚えていない理由で Lisa では動かなかった
    ゲームだろうとは思っていたがプレイできず、とても残念で、その謎めいたディスクに魅了されていた
    2025年になって Infinite Mac System 7 エミュレータを起動した: https://infinitemac.org/1991/System%207.0
    心臓がどきりとした。「Games」フォルダの中にまさに Dark Castle があった
    30年を経て、ついにこのゲームを遊べるようになった。グラフィックは魅力的で、Sierra の古典である King’s Quest や Prince of Persia の要素も感じられる
    https://en.wikipedia.org/wiki/Dark_Castle
    今夜の予定はこれで決まりだ