QEMU-iOS - 古き良きiOSデバイスのエミュレーター

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

S 20231215 153015

AppleのOSは基本的に、MacやiPhone、iPadなどの自社製ハードウェアでだけで動作するように設計されており、他のハードウェア(仮想マシン含む)で動作させるのは困難となっています。

本日紹介する「QEMU-iOS」は、この困難を乗り越えるための開発がすすめられているオープンソースプロジェクトです。古いレガシーAppleデバイスをQEMU上で動かすたための作業が行われており、現在はiPod Touch(第1世代)と、iPod Touch(第2世代)をサポートしています。

2022年末頃に話題となったプロジェクトですが、今回は実際に手元の環境で実行する方法を説明したいと思います。

目次

QEMU-iOSを実行する方法

今回はM1 MacBook Air(Homebrew環境)上で、iPod Touch(第1世代)/iPhoneOS 1.0をビルドしてみました。Intel MacやMacPortsでも実行可能なはずですが、ライブラリのインストールやパス指定など、適宜変更する必要があると思います。

インストールは公式ドキュメントに従って進めます。

まず、必要なソースファイルをチェックアウトします:

git clone https://github.com/devos50/qemu
cd qemu
git checkout ipod_touch_1g

ソースコードをビルドします(エラーが発生した場合は後述):

mkdir build
cd build
../configure --enable-sdl --disable-cocoa --target-list=arm-softmmu --disable-capstone --disable-pie --disable-slirp --extra-cflags=-I/usr/local/opt/openssl@3/include --extra-ldflags='-L/usr/local/opt/openssl@3/lib -lcrypto'
make

--extra-cflags=-I/opt/homebrew/opt/openssl@3/include--extra-ldflags='-L/opt/homebrew/opt/openssl@3/lib -lcrypto'はopenssl3のヘッダファイルとライブラリファイルのパスを正しく指定してください。AppleシリコンMacでHomebrewをデフォルト設定で使用している場合、上記のパスで良いはずです。

ビルドが成功したら起動に必要なファイルをこちらからダウンロードします。すべてダウンロードし任意のフォルダに保存しておきます。nand_n45ap.zipは展開しておきます。

  • bootrom_s5l8900
  • iboot_204_n45ap.bin
  • nand_n45ap.zip
  • nor_n45ap.bin

これで準備が完了です。

以下のコマンドで実行します。bootrom、iboot、nand、norファイルのパスは適宜変更し、先ほど保存したファイルを正しく指すように変更してください。

./arm-softmmu/qemu-system-arm -M iPod-Touch,bootrom=/Users/sora/evaluate/ipod1/bootrom_s5l8900,iboot=/Users/sora/evaluate/ipod1/iboot_204_n45ap.bin,nand=/Users/sora/evaluate/ipod1/nand -serial mon:stdio -cpu max -m 1G -d unimp -pflash /Users/sora/evaluate/ipod1/nor_n45ap.bin

実行に成功すると、しばらく待った後にiPod Touchのホーム画面が表示されます。クリックで操作でき、ホームボタンは、「H」キーでエミュレートされています。

エミュレーター内で、ネットワーク関連のアプリは使えませんが、単体アプリは使用することができます。

S 20231215 153032

▲例えば計算機アプリ。

S 20231215 153046

▲設定画面。

ビルドできない場合

環境によってconfigureやmakeでエラーがでることがあります。個人的には以下のインストールが必要でした。

brew install ninja
brew install sdl2

また、
configure実行時に「ERROR: "cc" cannot build an executable (is your linker broken?)」というエラーが表示されたのは、--extra-ldflags='-L/opt/homebrew/opt/openssl@3/lib -lcrypto'のパス指定が間違えていたからでした。

まとめ

QEMU-iOSを実行する方法を説明しました。実際に自分の環境で動かしてみたい方は試してみてはいかがでしょうか。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次