一张标题写着"Windows XP ia64 build 2600"的截图,最近在复古计算圈子里传开。图里,一台号称跑在QEMU模拟器上的安腾(Itanium)处理器,居然把这套二十多年前的操作系统装了起来。听起来像一次漂亮的技术复活,但把这条链路拆开看,截图证明的东西,可能没有标题说的那么多。
博主真正做成的事
这篇博客的作者在M系列Mac mini上,从零搭建了一条ia64-linux-gnu交叉编译工具链:binutils 2.46.0、GCC 15.3.0,目标是给开发者Malte Kuhlmann基于syunnPC所做的Itanium(Merced)QEMU分支编译IA-64固件。
过程谈不上顺利。zlib的一个宏跟macOS系统头文件里的fdopen函数打架,得手工改代码才能过;GCC想链接Linux的pthread库,没有就直接编译失败;连最后的libgcc.a都得手动拷贝到位。折腾一圈之后,固件确实编出来了,QEMU也确实能跑起EFI界面、进到CD-ROM的引导提示。这部分,是全文里唯一能被完整验证的进展。
"Merced"这个名字,容易让人会错意
Merced其实只是Itanium第一代芯片的代号。在这个QEMU分支里,它标注的是CPU型号,不是"平台已经模拟完整"的保证。有人专门核查过这份代码,结论偏保守:目前没有证据显示它能真正把Windows XP IA-64引导到安装界面或桌面,能确认的进展最多停在EFI或引导加载程序阶段。
- 风险.博主晒出的最后一张截图看起来像装完的XP桌面,但独立复核同一份代码给出的结论明显更保守,两边说法目前对不上。
真正卡脖子的从来不是CPU指令译得准不准,而是固件和平台这一层:IA-64版的EFI 1.x固件、\EFI\BOOT\BOOTIA64.EFI这条引导路径、PAL/SAL服务、正确的ACPI SAPIC/MADT表,还有跟Windows IA-64的HAL对得上号的芯片组和PCI布局。这些东西历史上大多是惠普和英特尔按具体机型定制的,版权也未必能公开分发,想复刻,只能拿EDK/EDK2的IA-64源码当起点,再一点点给QEMU的虚拟机型移植。
三个"XP 64位版",别再认错
Windows在IA-64上正式发布过两套系统:XP 64-Bit Edition 2002,基于跟XP同源的NT5.1代码,2001年10月25日发布,官方支持在2005年6月30日就到期;XP 64-Bit Edition 2003,代码换成了Windows Server 2003那套NT5.2,2003年3月28日发布。这两个都是IA-64专属,官方给出的硬件门槛也很朴素:733MHz或更快的Itanium处理器、1GB内存、约6GB硬盘空间,最多支持约16GB内存和两颗物理处理器——放在今天,这配置比一部旧手机还寒酸。
真正容易被搞混的是第三个:XP Professional x64 Edition,2005年4月25日发布,面向的是AMD64/Intel 64架构,跟安腾完全不是一回事。三个产品名字里都带着"64位",但只有前两个属于这场IA-64复活实验的范畴,搞错了产品线,聊的就不是同一台机器。
我的判断
GCC对IA-64的支持,这些年一直在生死线上晃荡。官方一度把它标成deprecated,几乎要在后续版本里彻底砍掉,靠的是René Rebe一个人坚持维护,才在GCC 15里把这条支持线又保了回来。开源项目续命的逻辑很朴素:没人用,就没理由留。这次社区里冒出来的Itanium模拟尝试,某种程度上就是给"还有人在用"提供了一份证据。
这类复古复原项目最容易犯的错,是把"能跑起来一部分"当成"跑通了"。固件层的活儿比CPU指令模拟难得多——它需要精确复刻二十年前惠普和英特尔按具体机型定制的PAL/SAL调用和ACPI表结构,而这些东西大概率没留下完整的公开文档。判断这次复原成不成功,不能只看一张截图,得等有人把固件补齐、日志晒出来、装机流程能被别人复现。
指令译对了,固件没通,系统还是一具空壳。
古人讲"其兴也勃焉,其亡也忽焉",安腾当年被英特尔和惠普当成x86的继承者力推,结果落得连GCC都懒得再维护。历史留下的不是设计有多先进,而是生态一旦散了,再想找回来,连固件文档都成了稀缺资源。这场复原实验有意思的地方也在这:能不能跑起来已经不重要,重要的是还有没有人愿意为一个"已死"架构补文档、写驱动、啃固件。答案目前是:有人在啃,但还没啃完。
