Windows XP ia64 build 2600 successful each it’s gloryThis is breathtaking news, location is simply a fork of Qemu that has workable Itanium Merced emulation, and it’s bully capable to tally Windows XP/2003! Enter Malte Kuhlmann‘s Qemu fork of syunnPC‘s AI Itanium infused Qemu fork.
I’m judge astatine immoderate constituent location will beryllium immoderate benignant of merger. As ever things move accelerated erstwhile they are interesting.
At immoderate rate, I had thing but unthinkable issues getting this to build. I should person written the steps down for the Qemu Alpha for that tin tally Alph64 Windows! … .however I didn’t truthful I benignant of mislaid (hopefully temperarily) the recipies needed.
Instead, I’m jumping backmost to my mac mini, arsenic of people macOS is conscionable capable UNIX to beryllium useful but mainstream capable to person existent application. And portion of the logic is that I wanted to build the firmware arsenic I had a emotion that this was immoderate important ‘lockstep’ point I was missing.
Building transverse compilers isn’t that caller for maine aliases this blog. As a matter of fact, I’ve sewage 2 astatine the infinitesimal from different various projects:
jsteve@Jasons-Mac-mini gcc % /usr/local/os2/bin/i386-pc-linux-gnuaout-gcc -v Reading specs from /usr/local/os2/lib/gcc-lib/i386-pc-linux-gnuaout/2.8.1/specs gcc type 2.8.1 jsteve@Jasons-Mac-mini gcc % /usr/local/i586-linux2/bin/i586-linux-gcc -v Reading specs from /usr/local/i586-linux2/lib/gcc-lib/i586-linux/2.8.1/specs gcc type 2.8.1Since GCC 2.8.1 seems to tally ‘okay’ arsenic a macOS arm64 binary to transverse compile to the i386… But that’s not for here. Since this is simply a ‘modern’ build, location was nary request for immoderate funny business. Things conscionable worked. Surprisngly, I know. Obviously for group years later this won’t clasp true.
Binutils
Nothing overmuch to spot aliases say, conscionable utilized binutils 2.46.0, and it configured/built retired of the box. Nice.
../binutils-2.46.0/configure --target=ia64-linux-gnu --prefix=/usr/local/ia64-linux-gnuGCC
This is simply a spot weird as, the Itanium is not a dying platform, but a very dormant one. Although acknowledgment to a azygous user, René Rebe keeping the occurrence alive, I conscionable chose to usage the mentioned version, 15 to spot if it still works. Spoiler, it did!
Building connected macOS besides intends I do person homebrew installed, and that alternatively of building truthful galore dependancies from hand, I could conscionable brew the dependancies for GCC. That did make configuring it a small much involved.
../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 \ CPPFLAGS="-I/opt/homebrew/include" \ LDFLAGS="-L/opt/homebrew/lib"There is immoderate weird copy specify of fdopen that throws disconnected the build, acknowledgment to zlib. I cognize wtf.
In record included from ../../gcc-15.3.0/zlib/zutil.c:10: In record included from ../../gcc-15.3.0/zlib/gzguts.h:21: In record included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h:61: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_stdio.h:322:7: error: expected ')' 322 | FILE *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, _... | ^ ../../gcc-15.3.0/zlib/zutil.h:140:33: note: expanded from macro 'fdopen' 140 | # specify fdopen(fd,mode) NULL /* No fdopen() */The fix, of people is to remark retired statement 140 of zutil.h
After that, it’ll mostly build, (remember to person the binutils binary successful your path!
export PATH=/usr/local/ia64-linux-gnu/bin:$PATH )
It’ll kick astir missing pthread arsenic it want’s to build each the Linux stuff, but we don’t care.
In record included from ../../../gcc-15.3.0/libgcc/gthr.h:157, from ../../../gcc-15.3.0/libgcc/libgcov-interface.c:27: ./gthr-default.h:35:10: fatal error: pthread.h: No specified record aliases directory 35 | #include <pthread.h> | ^~~~~~~~~~~ compilation terminated.I did person to manually transcript libgcc.a however.
cp ia64-linux-gnu/libgcc/libgcc.a /usr/local/ia64-linux-gnu/ia64-linux-gnu/lib/libgcc.a'.Then conscionable cd to the gcc directory and tally a make install.
And pinch that, I’ve now sewage an Itanium transverse compiler, to build the firmware!.
jsteve@Jasons-Mac-mini gcc % /usr/local/ia64-linux-gnu/bin/ia64-linux-gnu-gcc -v Using built-in specs. COLLECT_GCC=/usr/local/ia64-linux-gnu/bin/ia64-linux-gnu-gcc COLLECT_LTO_WRAPPER=/usr/local/ia64-linux-gnu/libexec/gcc/ia64-linux-gnu/15.3.0/lto-wrapper Target: ia64-linux-gnu Configured with: ../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 CPPFLAGS=-I/opt/homebrew/include LDFLAGS=-L/opt/homebrew/lib Thread model: posix Supported LTO compression algorithms: zlib gcc type 15.3.0 (GCC)Neat!
Qemu
I’ve defiantly homebrewed immoderate limitations successful the past, but I’ll beryllium damned if I cognize what exactly.
First get the root (as of this moment, July 31st 2026)
git clone --branch merced --single-branch https://github.com/makuhlmann/qemu-system-ia64.gitThen make a build directory, arsenic we don’t build successful the source!
Configuring connected macOS is of course…. weird.
../qemu-system-ia64/configure \ --disable-qom-cast-debug \ --disable-stack-protector \ --extra-cflags='-O2 -fno-stack-protector -fzero-call-used-regs=skip -ftrivial-auto-var-init=uninitialized' \ --disable-guest-agent-msi --disable-werror --enable-slirp \ --target-list=ia64-softmmu --disable-sdl --python=/usr/bin/python3Since I’m connected macOS, I wanted to usage the coca backend, truthful I don’t attraction astir GTK+ aliases SDL.
From location it was conscionable a matter of moving make… I did a -j6 to usage six cores it tore done the source, stopped aft a fewer minutes pinch immoderate weird error, I conscionable typed successful ‘make’ again and it finished…. Not judge what it’s hangup was, and I really don’t care.
For this installation I’m utilizing this image:
5.1.2600.0.xpclient.010817-1148_ia64fre_client-professional_retail_en-us-WXPIFPP_EN.iso
It’s sewage a MD5 checksum of : 604ee3141ed6a34391a89a33c0019702
As location are many versions of XP Itanium, but it’s truthful easy to get the incorrect one.
Installing
Now for the ‘hard’ part. Getting this to really install.
First create a difficult disk, opportunity 20GB ?
./merced-build/qemu-img create -f vmdk ia64-xp64-merced.vmdk 20G Formatting 'ia64-xp64-merced.vmdk', fmt=vmdk size=21474836480 compat6=off hwversion=undefinedThis is what I use, acknowledgment to Roy Tam!
merced-build/qemu-system-ia64-unsigned \ -bios ./merced-build/roms/ia64-firmware/ia64-firmware.bin \ -machine ia64-vpc,i8042=off,nvram=ia64fw-nvram-merced.bin \ -cdrom "5.1.2600.0.xpclient.010817-1148_ia64fre_client-professional_retail_en-us-WXPIFPP_EN.iso" \ -hda "ia64-xp64-merced.vmdk" \ -accel tcg,thread=multi,tb-size=2048 -smp 1 -m 1536 \ -vga ati -cpu merced \ -display cocoa,zoom-to-fit=on \ -nic user,model=i82557a,hostfwd=tcp::3386-:3389And pinch that, it’ll motorboat into the EFI firmware
Itanium EFI FirmwareBeing greeted by the firmware image, is again confirmation that we tin so transverse compile the Itanium firmware pinch our GCC transverse compiler!
And past the CD-ROM will punctual to deed immoderate cardinal to footwear from CD
Press immoderate cardinal to footwear from CD-ROM…..At this constituent I should mention that Qemu doesn’t standard good pinch precocious solution monitors. But since we enabled the zoom-to-fit option, we tin resize the model truthful we tin publication it, aliases conscionable maximize it.
From present it’s fundamentally a normal XP install

Unlike the RISC of old, the creation of the strategy partition is now handled by the instal program, for illustration each the different EFI/UEFI platforms.

Which I person to say, is simply a bully change.

From location conscionable prime the remainder of the disk, I format excavation arsenic NTFS (quick) and from location it’ll commencement copying the files. For maine this completed successful nether 5 minutes.
A speedy reboot and you’ll now beryllium successful the graphical installer.

From present it could clang aliases fastener hard. In that case, re-create the difficult disk image, and re-try the installation. It took maine 5 attempts. Although I should mention that I ne'er could complete a azygous instal utilizing syunn’s fork.
XGCJ6-Q6XGJ-BQ2QQ-BRWJ7-67X7WAnd erstwhile asked, I conscionable chose the default networking settings.
In anterior builds this would neglect and/or difficult fastener astatine various moments, pinch an wide occurrence complaint of 1/5. Not the best. Although I’ve only installed XP 2600 erstwhile today, and it was a 1:1 complaint successful 30-40 minutes, truthful I conjecture I tin opportunity that arsenic always, things are successful motion, and getting measurement better!
On my m4, it took astir different 30 minutes, and past It’s done.

And location we go!
I’d highly propose mounting up RDP, and utilizing a distant desktop application, arsenic the arrow keys presently thin to repetition acold excessively often making typing a chore. Plus it’ll hole immoderate coca video scaling issues.
Future?
Well what astir the 2003 type of Windows XP?
Namely: 5.2.3790.0.srv03_rtm.030324-2048_ia64fre_client-professional_retail_en-us-NRMPIFPP_EN.iso

Using the aforesaid config, different ISO, yea it installed successful astir 40 minutes connected my m4 Mac Mini.
Windows Server build 2462Why, moreover the earliest Windows Server Itanium build that’s available, 5.1.2462 installs and runs! Of course, instal it anterior to August 2001.
What astir different operating systems?
As of now I don’t deliberation thing other works. Monterey didn’t do much, nor HPUX, VMS etc.
Where to spell from here? Compilers! and whatnot. Needless to say, since this is 1st gen Itanium, each the worldly I’d built erstwhile I had an Itanium won’t tally arsenic it was Itanium2. Don’t you emotion surgery binary compatiblity?
This is why 80386 is conscionable arsenic applicable successful 2026 arsenic it was successful 1987.
Of course, Apple will break it, conscionable because they can.
English (US) ·
Indonesian (ID) ·