Itaniumは生きている:QEMUフォークがIA-64でWindows XPを起動
Mercedエミュレーションを備えたQEMUフォークが、Itanium上でWindows XP/2003を実行可能に。クロスコンパイラとファームウェアの構築が難所で、インストール成功率は5回に1回。
Itaniumは死んだ。Itanium万歳。動作するMercedエミュレーションを備えたQEMUフォークが、IA-64上でWindows XPとServer 2003を起動できるようになり、実際にインストールに成功した者もいる。難所は、クロスコンパイラの構築、ファームウェアのコンパイル、そして複数回のインストール試行に祈りを捧げることだ。
QEMUフォーク
Malte Kuhlmann氏のQEMUフォークは、syunnPC氏のAI-Itanium組み込み作業を基にしている。Mercedブランチは初代Itaniumプロセッサをターゲットとしており、32ビット時代のWindows XP IA-64エディションを実行するのに十分な出来だ。著者は、物事が面白くなると動きが速いことを踏まえ、2つのフォークの統合が行われる可能性が高いと述べている。
ツールチェーンの構築
エミュレータの実行には、まずクロスコンパイラが必要だ。著者はbinutils 2.46.0とGCC 15.3.0を使用し、ia64-linux-gnuをターゲットにした。GCC 15がItaniumをまだサポートしているのは、René Rebe氏がアーキテクチャの非推奨化を防いだおかげだ。macOSでのビルドには、GMP、MPFR、MPC用のHomebrewと、zutil.hにおけるzlibのfdopen競合の回避策が必要だった。
../gcc-15.3.0/configure \
--target=ia64-linux-gnu \
--prefix=/usr/local/ia64-linux-gnu \
--disable-bootstrap \
--disable-multilib \
--enable-languages=c \
--with-gmp=/opt/homebrew \
--with-mpfr=/opt/homebrew \
--with-mpc=/opt/homebrewビルドはほぼ成功するが、libgcc.aを手動でコピーし、欠落しているpthreadヘッダを無視する必要がある。これらはLinux専用のもので、ファームウェアには関係ない。
エミュレータのセットアップ
QEMU自体のビルドは簡単だ。mercedブランチをクローンし、--target-list=ia64-softmmuとCocoaディスプレイで設定して、makeを実行するだけだ。著者は一時的なエラーに遭遇したが、2回目のmake実行で解決した。最先端のエミュレーションではよくあることだ。
OSイメージには、Internet Archiveの市販XP IA-64 ISO(MD5: 604ee3141ed6a34391a89a33c0019702)を使用した。XP Itaniumのバージョンは多数存在し、間違ったものを入手しやすいと警告している。
インストール・ルーレット
EFIファームウェアへのブートにより、クロスコンパイルされたファームウェアが動作することが確認できる。インストーラは他のEFIプラットフォームと同様にシステムパーティションを作成する。RISC時代の手動パーティショニングからの改善だ。ファイルコピーは5分未満で完了するが、グラフィカルインストーラがクラッシュしたり、完全にフリーズしたりすることがある。著者は5回の試行を要し、syunn氏のフォークではインストールを完了できなかった。一度動作すればシステムは動くが、矢印キーのリピートが頻発するため、RDPの使用が推奨される。
成功率:5回に1回。素晴らしいとは言えないが、著者は状況が急速に改善していると述べている。
次のステップ
当然の次のターゲットはWindows Server 2003 IA-64(ビルド5.2.3790)だ。同じエミュレーション基盤があれば、手の届く範囲にあるはずだ。著者は今後の投稿でこれを取り上げることを示唆している。
Itaniumは死んだ。Itanium万歳。動作するMercedエミュレーションを備えたQEMUフォークが、IA-64上でWindows XPとServer 2003を起動できる。