AIX on Itanium

From DisNCord Community Wiki
Jump to navigation Jump to search
AIX/ia64 attempting to boot on a zx6000

AIX, IBM's own flavor of UNIX, has long been relegated to a portion of IBM's own hardware, most of which has been built around the PowerPC processor architecture. However, IBM worked in combination with SCO to create a port of AIX to Intel's Itanium architecture. This page documents current known information, attempts to boot, historical context, and more combining everything we known up to this point.

Right now, the dumped images were successfully booted and installed on HP i2000, a rare semi-prototype Itanium 1 machine. Officially supported hardware is Intel's original Merced Software Development Vehicle, and unspecified "Itanium-based OEM systems"[1] presumed to include the HP i2000 (Itanium-hardware was announced in July 2001[2], thus it is likely the AIX/ia64 pre-dates the annoncement, hence the vague specification). Similar hardware is emulated by Simics[3], but the emulator was primarily intended to boot Linux and doesn't contain necessary firmware for booting AIX. However, there's some hope it might be possible to boot it on something else...


Project Monterey Summary

In the mid to late 90s, IBM alongside SCO looked at creating a new version of UNIX to act as a common base for UNIX on Intel's new 64-bit platform[4]. The idea was that there would be a common core creating the basis of the next System V release, which would then be licensed and branded by any interested parties.

With Itanium slated to be the successor of DEC Alpha, PA-RISC, and POWER, there was hope that UNIX would be successful on the new platform. For their part, HP-UX was ported to Itanium, and it's known that Sun also looked at porting Solaris to Itanium[5]. However, the unexpected success of Linux displaced most of these plans, with IBM itself eventually embracing Linux[6].

This set up the group for the later IBM vs SCO lawsuits, which partially alleged that IBM included components from Project Monterey in Linux. What is known from the case files is that there was very little demand for Project Monterey[7], although it's not entirely clear if that's due to the relatively low adoption of Itanium in general, or due to the availability of HP-UX and Linux on the platform.

In mid-2022, an archive of the Project Monterey disks from the 2001 Early Adopters Release was uploaded to the Internet Archive which NCommander did initial explorations of, forming the initial basis of knowledge.

Relationship with other versions of AIX

Initially, the neutral codename Project Monterey was used to refer to the system, being presented as a combination of AIX (from IBM) and UnixWare (from SCO)[4]. With the Early Adopters Release, the name was officially changed to AIX 5L for Itanium-Based Systems[1]. Variants of this are used in the documentation, including AIX 5.1 for IA-64 systems and AIX 5.1 for IA64, both being used next to AIX 5.1 for PowerPC, signifying IBM marketed them together as AIX 5L version 5.1 supporting two architectures, PowerPC and IA-64.

Despite the marketing, there are noticable differences between the two versions of AIX. Most notably AIX/ia64 is, unlike HP-UX and AIX/ppc, little endian. Another difference is the binary format used for executables, shared libraries and the kernel: AIX/ia64 uses ELF, while AIX/ppc uses XCOFF. Both of these seem like being from SCO, matching UnixWare's ABI. AIX/ia64 also supports Uniform Driver Interface drivers, unlike AIX/ppc and like UnixWare.

NCommander's Initial Explorations

Current Boot Status

Booting was attempted on several Itanium machines, mostly servers from the HP Integrity line featuring the zx1 chipset and Itanium 2 CPUs[8], Compaq ProLiant DL590/64 featuring Itanium 1 CPUs and the Intel 82460GX chipset[9], and HP i2000, which uses the same CPUs and chipsets as the DL590/64[10].

From the Integrity line, rx1620 and rx2620 were tested. Both go through the bootloader menu and start to load the kernel, but hang on a message referencing changing pProcLocalAPIC->len. Surprisingly, the closely related HP workstation zx6000, which is the predecessor of rx2600[11], hangs before displaying the bootloader menu at a message saying "Booting from CDROM drive".

Output on HP Integrity rx2620 with single Itanium 9040, booting AIX/ia64 from CD:

* AIX/IA64 Boot Loader! *
built on Apr 15 2001 at 21:39:17
Vendor Info (CPUID[0&1])= GenuineIntel
Processor Serial Number (CPUID[2])= 0x0
Version Info (CPUID[3])= 0x20000704
status= 0x800000000000000E
Cannot find MPS table!
Obtained ACPI 2.0 Table..
Acpi table = 0x3FE2C000
Booting from CDROM drive
Waiting for key input.................
loading:               size:         source device:          dest. address:
boot filesystem        0059EB40      system partition        00000040FCA5F000
kernel                 0088D960      system partition        00000040FC1D1000
kernel sdf file        00276B00      system partition        00000040FF069000
change pProcLocalAPIC->len= 0 to 8change pProcLocalAPIC->len= 0 to 8change pProcLocalAPIC->len= 0 to 8bldr_malloc: Trying to allocate 0 pages ...                                                               
change pProcLocalAPIC->len= 0 to 8

Booting on Compaq ProLiant DL590/64 gets further, likely thanks to it sharing its chipset with the HP i2000. However, the kernel fails to start, displaying various errors onto the serial console, including one about ID_SALCB_GETMEDIAINFO callback error (Could not load UNDI. Status = Not Found) and several console-IO-related variables missing (ConInDev, ConOutDev, ErrOutDev, ConOut, ConIn, ErrOut). On HP i2000, the installation boots and the system can be installed on disk without issue, fitting the hypothesis of this system being supported[12].

Toolchain support

AIX contains native assembler, linker, and development headers. Binutils 2.12 supports AIX out of the box as triplet ia64-*-aix. There exists a patch by Timothy Wall for trunk GCC from 2001 that can be applied on GCC 3.0.1. Work to integrate and fix up that page is happening on GitHub, currently it can build a simple Hello world, but more complex code doesn't build, since the compiler gets into an infinite loop for unknown reasons.

A separate native toolchain ported from scratch by Jeffrey H. Johnson (trn) includes a native GCC 3.1.1 and a few up-to-date packages including Nano, wget, LibreSSL, Bash, and coreutils.

Get Involved

Work is happening in a dedicated DisNCord channel and in the GitHub repos mentioned above.