QEMUでiPod Classic 6Gをエミュレートし、Apple純正retailOSの起動に成功
iPod Classic 6G in QEMU

筆者はSamsung S5L8702を搭載するiPod Classic 6G向けのQEMUエミュレータを開発し、暗号化された純正retailOSを無改造で起動させることに成功した。ナビゲーションや画面、音楽ライブラリは動作するが、音楽プレイヤーは描画が不完全で音が出ない状態だ。SoCのデータシートが存在しないため、各レジスタの挙動をゲスト自身の書き込みから推測し、約16個の仮説を撤回しながら実装を進めた。
There is no datasheet for the SoC. Each model register that allows unlocking some part of the guest is derived from a write operation performed by the guest itself
HNでの議論
45- dmonterocrespo
私はiPod Classic 6G(Samsung S5L8702)用のQEMUエミュレータを開発していて、それはオリジナルの未改変のApple retailOSを起動します。ナビゲーション、ディスク、画面、音楽ライブラリはしばらく動作しましたが、音楽プレイヤーは部分的にしかレンダリングされず、音も出ませんでした。4つの異なるエラーがあり、最後のものはある意味私のせいで、面白いと思ったので記事に書くことにしました。
何ヶ月もの間、引き出しに入っているiPod Classic 6Gをエミュレートしようとして、成功しませんでした。長い時間を経て、ようやく動作させることができましたが、まだかなり荒削りです。QEMUで、オリジナルの未改変のApple retailOSを起動できました。ナビゲーション、ディスク、画面、音楽ライブラリはしばらく動作しましたが、音楽プレイヤーは部分的にしかレンダリングされず、音も出ませんでした。
すでにわかっていることの1つは、ファームウェアはAppleのもので暗号化されているため、合法的なダウンロードは存在しないということです。私は2008年製のiPod Classic 6Gを持っています。Claude Codeの助けを借りて、emCOREを使ってそれを抽出するコードを作成できました。フラッシュメモリの内容を抽出し、イメージを自分で復号しました。
そして、ブートROMは動作中のデバイスから読み取ることはできません。後者は身をもって確認し、その過程で私のiPodは何度か再起動しました(中央とメニューのボタンを5秒間押して再起動します)。
SoCのデータシートはありません。ゲストの一部をアンロックできる各モデルレジスタは、ゲスト自身が実行する書き込み操作から導き出されます。
コードとノート、含 […]
- dmonterocrespo
私が非常に苦労したことの1つは、音楽プレイヤーのアンロックでした。リバースエンジニアリングは本当に困難でした。多くの可能なバリエーションを調査し、https://freemyipod.org でメモリレジスタ情報を検索してみましたが、この特定のiPodに関して音楽プレイヤーの助けになるものは何もありませんでした。今はCover Flowのアンロックに取り組んでいます。これは初めて自分のiPodで見たときに本当に気に入ったものです。
- ChrisRR
r/emulationのコメント欄で、AIコードについて延々と叫ぶだけではないのを見るのは珍しい
- dmonterocrespo
iPod Classic 6Gエミュレータをどのように作り、その過程で何に遭遇したかについての詳細はこちらです: https://x.com/DMonteroCrespo1/status/2095882094455009695
- villgax
私は20年近く前、中学1年かそこらでiPodファームウェアのカスタマイズにどっぷり浸かっていました。
FW/IPSWを探している人は https://www.felixbruns.de/iPod/firmware/