Creating an OPENSTEP Bootable Install CD and Disk

Better (v 4.03) IDE drivers.

Reference my 2010 post on Creating an OPENSTEP Boot CD.

It was more than 15 years ago when I took on this project of creating an ElTorito bootable CD to install OPENSTEP into a vintage PC.  I was using it to install OPENSTEP on an IDE drive in an old Pentium III based motherboard with ISA and PCI slots. This was the i386 platform that was one of the three platforms that OPENSTEP supported around that time period before NeXT being acquired by Apple.  m68k and sparc being the other two platforms.

The reason for creating the bootable CD was that people curious with trying out OPENSTEP may not have a working 3.5” diskette drive to bootstrap the installation, but their PC BIOS had support for booting an Eltorito CD in a CDROM drive.

There were, however, problems when you are trying to install OPENSTEP into the PC’s IDE drive.  The IDE drivers (4.00) that came with the retail OPENSTEP 4.2 installer CD and diskettes were real bad and incompatible with the IDE chipsets in many PC motherboards.  NeXT released updated IDE drivers (4.03) with their beta drivers diskette and also in the last PATCH4 CD that they made available.  You often need this new version of the IDE drivers to successfully install OPENSTEP into your PC IDE drive in the first place.

It’s easy to update the IDE drivers in the 2.88MB ElTorito boot diskette image, and OPENSTEP will load these new IDE drivers during the installation process.  However, on the first reboot after installation, OPENSTEP will ask to insert the driver diskette in order to copy the new drivers into the internal IDE drive.  Being that you did not boot off the ElTorito CD on that first reboot, the “diskette drive” is not available anymore.  There is one workaround that some people have tried, entering the following command during the boot prompt upon first reboot (i.e., still booting from the ElTorito CD then chaining to the internal IDE drive):  hd()mach_kernel rootdev=hd0a

This IDE issue has been on-and-off my head since 2010.  Many folks nowadays have Gotek diskette drive emulators or just run OPENSTEP in a virtual machine with virtual diskette drives, so using a virtual floppy drive image of the beta drivers diskette solves the problem for them.

Another popular setup is to just get an old and now cheap SCSI adapter, like the widespread Adaptec 2940 series, combined with the new SCSI drive emulators like BlueSCSI or ZuluSCSI, and altogether ignore the unpredictability of IDE.

I still wanted to see more retro enthusiasts being able to install OPENSTEP on bare metal hardware, and so a few free hours had me setting out to build the necessary patches.

Continuing from my 2010 post, aside from putting the new (4.03) IDE drivers in the 2.88MB ElTorito boot diskette image, I also added it to the files in the installer CD.  After the first reboot, OPENSTEP will not ask for the driver diskette anymore, because they have already been copied into the PC internal IDE drive.  Once you have OPENSTEP running in the PC, you can just install additional drivers, including the VBE20 video display driver, and the PATCH4 CD to install the latest system software for OPENSTEP.

I used the mkisofs command to build the ISO9660 CD image with something like:
mkisofs -r -o OPENSTEP_ELTORITO.iso -b BOOTF288.img -c 0_BOOT.CAT boot.cdrom BOOTF288.img OPENSTEP_BUILD.ufs

And for patching the disklabel to be placed in block #0 of the CD image, using my mkisofs command, the boot.cdrom code ends up at offset 0xD800 (block 0x1B), the UFS filesystem ends up at offset 0x2EA000 (block 0x05D4) and the disklabel checksum is 0xD391.  Your mkisofs version might put them in different locations on the ISO9660 CD image, but you can just search for them and then follow the instructions for calculating the checksum and patching the disklabel.

If you just want the final ElTorito CD image, OPENSTEP_ELTORITO.zip is made available at https://github.com/nextcomputers/openstep-pc-boot/releases.  The bootable ElTorito CD is the most compatible way to install OPENSTEP, because you can use it in an IDE CDROM drive, either on the primary or secondary controller, or even in a SCSI CDROM drive.  Even when used in an IDE CDROM drive, OPENSTEP treats it as a SCSI drive (e.g., sd0a) that is compatible with how most PC BIOS treat CDROM drives.

More experiments.

If you are feeling adventurous, I offer another way of installing OPENSTEP.  This installation is via an IDE drive or an image of an IDE drive, assuming that the PC BIOS is not too old and can use Logical Block Addressing to read the drive.  Being an HDD image, I had more flexibility in including a few more popular device drivers.  In this OPENSTEP_VBE20_BUILD.zip drive image, I included the new 4.03 dual-channel IDE device driver, and the VBE20 video display driver.  This VESA-compliant video display device driver is very convenient, because you can pick a 1024×768 color display during the first reboot after installation and immediately experience the glory of seeing OPENSTEP in color.

The disk image is formatted with a PC FAT-style partition table, having a single “NEXTSTEP” partition, containing the OPENSTEP installer.

If you don’t have a physical IDE disk drive, you can cheaply find one of those IDE-CompactFlash or IDE-sdcard adapters.  Burn the drive image into flash memory, and attach them to the IDE cables.  One limitation with this approach is that the installer drive should be in the IDE primary channel (either master/hd0a or slave/hd1a), because the OPENSTEP installer has only pre-provisioned the device files /dev/rhd0a and /dev/rhd1a.  Some PC BIOS won’t even allow booting from an IDE drive in the slave location of the IDE channel, and you have to attach the installer disk image as master, and an empty target drive as slave. [Note: I thought hard of using these archaic stereotypic terminology, but opted to just use them to match how they were historically used when discussing IDE.]

Be aware that the finicky nature of IDE may give you installation issues that I may not have encountered. YMMV.

This entry was posted in Retrocomputing and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *