The second gift from Jochen is a Powerstack II mainboard with an AT power supply unit and a SCSI disk. The SCSI disk has "AIX" written on it, which looks promising, but Jochen doesn't remember if it was really installed, or just planned.
The board has Serial/Parallel/Ethernet/SCSI and even a couple of unsoldered IDE connectors.
The boot log shows it has a Firmworks based Open Firmware:
Then it gets to a windowed menu interface (which doesn't look like the typical OFW at all), but under "Administrative options" it's possible to choose "Invoke the Command Line Prompt", which gives the famous "ok" prompt.
AIX starts booting from the SCSI disk:
And here it hangs. Probably it tries to perform a NFS mount, which I don't have.
Anyways it's much further than QEMU currently gets, so it's definitely can be used as a reference.
I don't have a UW-SCSI cdrom drive to boot from the Powerstack II media. But it can be netbooted via tftp.
Surprisingly booting the Solaris/PPC did not work out. The floppy is not recognized, tried to netboot SOLARIS.ELF from the cd got an interesting error:
so, obviously after switching to the Little-Endian mode the Motorola network driver doesn't work anymore. Looks like in 1998 netbooting Solaris and Windows NT was not relevant for Motorola anymore, otherwise it would have been tested.
Overall it looks like Motorola did heavily modify the OFW. For instance, there are no hidden words. Which is nice. It should be possible to peek if it has any quirks in creation of the residual data. Or better to say it could have been. It is all a one single quirk, there is no residual data.
Initially I thought that this would be a perfect firmware which would boot both PReP images and the later OFW-compatible ones. But alas. After poking around, I googled and found a couple of mails on the NetBSD mailing list stating that:
1. The firmware doesn't provide any residual data
2. The firmware doesn't have the PCI, DMA and interrupt mapping properties in the device tree.
Looking at the code I see that the first point is clearly caused by the second one. In the OFW the residual data is generated from the device tree. The code was not removed, but Motorola forgot to add the properties.
Which makes it a worst possible firmware.
But still it can boot the AIX from the supplied SCSI disk. This explains at least one reason for a custom AIX: the Motorola version should be able to live without the residual data.
Probably the developers were in a rush, so instead of fixing the firmware properties, they just added a hack to the OS. Maybe the OS department had more resources than the firmware one, or maybe the developers who were able to do Forth, were on vacation or fired.
The result is ugly, but I think every software developer has done something similar at least once.
Anyway now I have a sort of reference machine which can sort of boot AIX.
P.S. And by the way, if you wonder why I keep writing "Powerstack II Utah" instead of just "Powerstack II". It turned out multiple machines called "Powerstack II" were produced. And indeed they are incompatible. More gory details in the Linux kernel sources.
The board has Serial/Parallel/Ethernet/SCSI and even a couple of unsoldered IDE connectors.
The boot log shows it has a Firmworks based Open Firmware:
WARNING: NVRAM Header Test Failed - Auto Initializing Starting real time clock... screen not found. Can't open input device. Keyboard not present. Using com1 for input and output. , Serial #0, 64 MB memory Power Firmware(TM) by FirmWorks , Built Thu Jun 4 10:20:43 MST 1998 Copyright (c) 1995-1996 FirmWorks. All Rights Reserved. PowerPC Open Firmware Version 1.2 RM11 Thu Jun 4 10:20:43 MST 1998 Copyright Motorola 1995-96, All Rights Reserved Copyright FirmWorks 1995-96, All Rights Reserved CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . =PowerPC,604e MicroProcessor Internal Clock Speed (MHZ) . . . . . . . . =300 MicroProcessor External Clock Speed (MHZ) . . . . . . . . =67 PCI Bus Clock Speed (MHZ) . . . . . . . . . . . . . . . . =33 Local Memory Size . . . . . . . . . . . . . . . . . . . . =4000000 (64 MB) Memory Type . . . . . . . . . . . . . . . . . . . . . . . =EDO Memory Error Checking . . . . . . . . . . . . . . . . . . =ECC Memory Speed. . . . . . . . . . . . . . . . . . . . . . . =50 NS L2 Cache Size . . . . . . . . . . . . . . . . . . . . . . =256KB L2 Cache Type . . . . . . . . . . . . . . . . . . . . . . =Asynchronous L2 Cache Parity . . . . . . . . . . . . . . . . . . . . . =Disabled Configuration Checksum. . . . . . . . . . . . . . . . . . =Failed
Then it gets to a windowed menu interface (which doesn't look like the typical OFW at all), but under "Administrative options" it's possible to choose "Invoke the Command Line Prompt", which gives the famous "ok" prompt.
AIX starts booting from the SCSI disk:
Trying..., fdisk0 Recalibrate failed. The floppy drive is either missing, improperly connected, or defective. Failed Trying..., hdisk0 Booting Please wait while the system is booting Boot device: /pci/scsi@2/disk@6,0 File and args: ******* Please define the System Console. ******* Type a 1 and press Enter to use this terminal as the system console. cvga0 + swcons -c Saving Base Customize Data to boot disk Starting the sync daemon Starting the error daemon System initialization completed. Starting Multi-user Initialization Performing auto-varyon of Volume Groups Activating all paging spaces swapon: Paging device /dev/hd6 activated. Performing all automatic mounts
And here it hangs. Probably it tries to perform a NFS mount, which I don't have.
Anyways it's much further than QEMU currently gets, so it's definitely can be used as a reference.
I don't have a UW-SCSI cdrom drive to boot from the Powerstack II media. But it can be netbooted via tftp.
Surprisingly booting the Solaris/PPC did not work out. The floppy is not recognized, tried to netboot SOLARIS.ELF from the cd got an interesting error:
Rebooting with command: boot /pci/ethernet@4:172.22.0.20,SOLARIS.ELF,172.22.134.1 Boot device: /pci/ethernet@4:172.22.0.250,SOLARIS.ELF,172.22.134.51 File and args: Trying to get Internet/Ethernet Address ... Contact your system administrator to see if a Boot Host and network is setup correctly.
so, obviously after switching to the Little-Endian mode the Motorola network driver doesn't work anymore. Looks like in 1998 netbooting Solaris and Windows NT was not relevant for Motorola anymore, otherwise it would have been tested.
Overall it looks like Motorola did heavily modify the OFW. For instance, there are no hidden words. Which is nice. It should be possible to peek if it has any quirks in creation of the residual data. Or better to say it could have been. It is all a one single quirk, there is no residual data.
Initially I thought that this would be a perfect firmware which would boot both PReP images and the later OFW-compatible ones. But alas. After poking around, I googled and found a couple of mails on the NetBSD mailing list stating that:
1. The firmware doesn't provide any residual data
2. The firmware doesn't have the PCI, DMA and interrupt mapping properties in the device tree.
Looking at the code I see that the first point is clearly caused by the second one. In the OFW the residual data is generated from the device tree. The code was not removed, but Motorola forgot to add the properties.
Which makes it a worst possible firmware.
But still it can boot the AIX from the supplied SCSI disk. This explains at least one reason for a custom AIX: the Motorola version should be able to live without the residual data.
Probably the developers were in a rush, so instead of fixing the firmware properties, they just added a hack to the OS. Maybe the OS department had more resources than the firmware one, or maybe the developers who were able to do Forth, were on vacation or fired.
The result is ugly, but I think every software developer has done something similar at least once.
Anyway now I have a sort of reference machine which can sort of boot AIX.
P.S. And by the way, if you wonder why I keep writing "Powerstack II Utah" instead of just "Powerstack II". It turned out multiple machines called "Powerstack II" were produced. And indeed they are incompatible. More gory details in the Linux kernel sources.
No comments:
Post a Comment