Author Topic: Boot without the "Mac OS 9 Drivers"  (Read 11693 times)

Offline ELN

  • Gold Member
  • *****
  • Posts: 295
  • new to the forums
Boot without the "Mac OS 9 Drivers"
« on: August 26, 2019, 06:49:56 PM »
Hi all,

This seems to have flown under the radar on the "Latest hacks" thread. I think that it is a very useful hack.

I have written a script to patch any "Mac OS ROM" file. It adds the ability to boot from an ATA disk that lacks the "Mac OS 9 Drivers". Previously, the ROM would fail to boot with a question-mark-floppy.

Using a ROM with this patch applied, Mac OS 9 can be successfully installed from within Mac OS X, without wiping the hard disk! We should make a MacOS9Lives kit for this purpose.

https://github.com/elliotnunn/tbxi-patches/blob/master/ataboot.py

Elliot

Offline IIO

  • Platinum Member
  • *****
  • Posts: 4439
  • just a number
Re: Boot without the "Mac OS 9 Drivers"
« Reply #1 on: August 27, 2019, 03:32:53 AM »
i´ve noticed that post very well, but i thought it is up to you to decide wether it is filed under "yet another gimmick" or "the next revolution"

have you yet found any application or service which wont work on a disk without drivers?
insert arbitrary signature here

Offline IIO

  • Platinum Member
  • *****
  • Posts: 4439
  • just a number
Re: Boot without the "Mac OS 9 Drivers"
« Reply #2 on: August 27, 2019, 03:41:41 AM »
Q:
if you apply this, does it have any negative effect when you use it with a "normal" boot disk, which already contains the driver?
insert arbitrary signature here

Offline FdB

  • Platinum Member
  • *****
  • Posts: 666
  • And then...
Re: Boot without the "Mac OS 9 Drivers"
« Reply #3 on: August 27, 2019, 06:58:11 AM »
Q:
if you apply this, does it have any negative effect
when you use it with a "normal" boot disk,
which already contains the driver?

A: Most likely not... if you already have your Mac submerged in an oil-filled terrarium.
(Sorry, couldn't resist.) ;)

Thanks ELN... interesting possibilities.
This Must Be The Place

Offline ELN

  • Gold Member
  • *****
  • Posts: 295
  • new to the forums
Re: Boot without the "Mac OS 9 Drivers"
« Reply #4 on: August 27, 2019, 06:58:56 AM »
An ATA disk without drivers won't be bootable in Mac OS 9. This is why we often reinitialise Mac OS X disks with Drive Setup.

A: This patch has no effect when a driver is already present on the disk. It merely emulates a driver when one is absent.

Offline IIO

  • Platinum Member
  • *****
  • Posts: 4439
  • just a number
Re: Boot without the "Mac OS 9 Drivers"
« Reply #5 on: August 27, 2019, 12:43:45 PM »
so there should no reason be left why it should not just be added to the mini OS as well as the "unsupported OS".
insert arbitrary signature here

Offline ELN

  • Gold Member
  • *****
  • Posts: 295
  • new to the forums
Re: Boot without the "Mac OS 9 Drivers"
« Reply #6 on: August 31, 2019, 06:40:40 AM »
That's the plan. But I want to fix the frozen-mouse bug before I put out a new mini ROM.

Offline IIO

  • Platinum Member
  • *****
  • Posts: 4439
  • just a number
Re: Boot without the "Mac OS 9 Drivers"
« Reply #7 on: August 31, 2019, 12:43:07 PM »
would you have a screenshot of the tbxi editor and give a hint what minimum OSX/windows is required to have the correct python.
insert arbitrary signature here

Offline ELN

  • Gold Member
  • *****
  • Posts: 295
  • new to the forums
Re: Boot without the "Mac OS 9 Drivers"
« Reply #8 on: August 31, 2019, 07:09:11 PM »
Python 3 runs at least as far back as Tiger and Windows XP. If tbxi accidentally depends on any more recent Python features, I will fix it.

Those links again:
https://github.com/elliotnunn/tbxi
https://github.com/elliotnunn/tbxi-patches

Because this is a command line program, I will give some textual examples.

The online help for tbxi:
Code: [Select]
$ tbxi dump -h
usage: tbxi dump [-h] [-o <output-file>] <input-file>

Break a ROM file into rebuildable parts. Any ROM released since the
660AV/840AV ("SuperMario") can be processed, including NewWorld ROMs. Because
successive ROM formats tended to wrap layers around old ones, the image is
dumped recursively.

positional arguments:
  <input-file>      original file

optional arguments:
  -h, --help        show this help message and exit
  -o <output-file>  destination (default: <input-file>.src)

$ tbxi build -h
usage: tbxi build [-h] [-o <output-file>] <input-dir>

Recreate a dumped ROM file. With minor exceptions, the result should be
identical to the original. A NewWorld bootinfo file can be BinHex-encoded
('.hqx'), or have a '.idump' file created alongside.

positional arguments:
  <input-dir>       source directory

optional arguments:
  -h, --help        show this help message and exit
  -o <output-file>  destination (default: Mac OS ROM)

An example directory tree produced by tbxi dump:
Code: [Select]
/Users/elliotnunn/Documents/mac/MacROMan/TestImages/New\ World\ ROM/2003-01-10\ -\ Mac\ OS\ ROM\ 9.8.1.rom.src
├── Bootscript
├── MacOS.elf
├── Parcels
└── Parcels.src
    ├── AGPLib.pef
    ├── BacklightDriver.pef
    ├── DFMLib.pef
    ├── DevNLib.pef
    ├── EtherPrintfLib.pef
    ├── FWServicesLib.pef
    ├── GenericDriverFamily.pef
    ├── Grackle_PCICyclesLib.pef
    ├── MacROM
    ├── MacROM.src
    │   ├── Configfile-1
    │   ├── EverythingElse
    │   ├── ExceptionTable
    │   ├── Mac68KROM
    │   ├── Mac68KROM.src
    │   │   ├── DeclData
    │   │   ├── MainCode
    │   │   ├── Romfile
    │   │   └── Rsrc
    │   │       ├── CURS_1
    │   │       ├── CURS_2
    │   │       ├── CURS_3
    │   │       ├── CURS_4
    │   │       ├── DRVR_-20175_ATALoad
    │   │       ├── DRVR_48_EDisk
    │   │       ├── DRVR_53_ATADisk
    │   │       ├── FONT_12
    │   │       ├── FONT_393
    │   │       ├── FONT_396
    │   │       ├── FONT_521
    │   │       ├── GARY_1
    │   │       ├── KCAP_1
    │   │       ├── KCAP_14
    │   │       ├── KCAP_16
    │   │       ├── KCAP_17
    │   │       ├── KCAP_198
    │   │       ├── KCAP_199
    │   │       ├── KCAP_2
    │   │       ├── KCAP_200
    │   │       ├── KCAP_204
    │   │       ├── KCAP_205
    │   │       ├── KCAP_206
    │   │       ├── KCAP_4
    │   │       ├── KCAP_5
    │   │       ├── KCHR_0_U_S
    │   │       ├── KMAP_0
    │   │       ├── KMAP_198
    │   │       ├── KMAP_199
    │   │       ├── KMAP_2
    │   │       ├── KMAP_200
    │   │       ├── KMAP_204
    │   │       ├── KMAP_205
    │   │       ├── KMAP_206
    │   │       ├── KMAP_27
    │   │       ├── PACK_4_AT2_NetBoot_NoFPU
    │   │       ├── PACK_5_AT2_NetBoot_NoFPU
    │   │       ├── PACK_7
    │   │       ├── PICT_100_DiskMode_0.pict
    │   │       ├── PICT_101_DiskMode_1.pict
    │   │       ├── PICT_102_DiskMode_2.pict
    │   │       ├── PICT_103_DiskMode_3.pict
    │   │       ├── PICT_104_DiskMode_4.pict
    │   │       ├── PICT_105_DiskMode_5.pict
    │   │       ├── PICT_106_DiskMode_6.pict
    │   │       ├── PICT_95_DiskMode_SCSI.pict
    │   │       ├── PICT_96_DiskMode_Arrow1.pict
    │   │       ├── PICT_97_DiskMode_Arrow2.pict
    │   │       ├── PICT_98_DiskMode_Arrow3.pict
    │   │       ├── PICT_99_DiskMode_Battery.pict
    │   │       ├── accl_0
    │   │       ├── accl_1
    │   │       ├── accl_2
    │   │       ├── accl_4
    │   │       ├── accl_5
    │   │       ├── accl_6
    │   │       ├── accl_7
    │   │       ├── accl_8
    │   │       ├── accl_9
    │   │       ├── cfrf_0
    │   │       ├── cicn_-20020
    │   │       ├── cicn_-20021
    │   │       ├── cicn_-20022
    │   │       ├── cicn_-20023
    │   │       ├── clut_1
    │   │       ├── clut_127
    │   │       ├── clut_2
    │   │       ├── clut_4
    │   │       ├── clut_5
    │   │       ├── clut_8
    │   │       ├── clut_9
    │   │       ├── code_-20164
    │   │       ├── dfrg_-20722_LANDisk.pef
    │   │       ├── fexp_-21140_ComponentDriverExpert.pef
    │   │       ├── fexp_-21141_GenericDriverFamilyExpert.pef
    │   │       ├── frag_-21140_FWPCIScanner.pef
    │   │       ├── frag_-21141_FWExpertRegistration.pef
    │   │       ├── frag_-21142_sbp609e_104d8.pef
    │   │       ├── gama_0_StdGamma
    │   │       ├── gcko_43
    │   │       ├── gpch_1207
    │   │       ├── ics4_-16386
    │   │       ├── ics8_-16386
    │   │       ├── ics_-16386
    │   │       ├── mitq_0
    │   │       ├── ncod_0_CodeFragmentMgr.pef
    │   │       ├── ncod_1_MixedMode.pef
    │   │       ├── ncod_2_MPLibrary.pef
    │   │       ├── ncod_50_NativeNub.pef
    │   │       ├── ncod_8_ProcessMgrSupport.pef
    │   │       ├── ndrv_-16515_BCScreen.pef
    │   │       ├── ndrv_-20164_media_bay.pef
    │   │       ├── ndrv_-20166_DefaultPCCardEnabler.pef
    │   │       ├── ndrv_-20181_pccard_ata.pef
    │   │       ├── ndrv_-20776_pciclass_0c0310.pef
    │   │       ├── ndrv_-20777_USBUnitTableStorageDriver.pef
    │   │       ├── ndrv_-20994_sbp609e_104d8.pef
    │   │       ├── ndrv_-21143_fw609e_10483.pef
    │   │       ├── nitt_43_Native_4_3.pef
    │   │       ├── nlib_-16400_NameRegistryLib.pef
    │   │       ├── nlib_-16401_DriverServicesLib.pef
    │   │       ├── nlib_-16402_DriverLoaderLib.pef
    │   │       ├── nlib_-16403_VideoServicesLib.pef
    │   │       ├── nlib_-16404_PCILib.pef
    │   │       ├── nlib_-16405_VideoServicesGlobals.pef
    │   │       ├── nlib_-16407_DSLGlobalsLib.pef
    │   │       ├── nlib_-16411_PowerMgrLib.pef
    │   │       ├── nlib_-16420_Math64Lib.pef
    │   │       ├── nlib_-20186_ATAManager.pef
    │   │       ├── nlib_-20264_CursorDevicesLib.pef
    │   │       ├── nlib_-20776_USBServicesLib.pef
    │   │       ├── nlib_-20777_USBFamilyExpertLib.pef
    │   │       ├── nlib_-20778_USBManagerLib.pef
    │   │       ├── nlib_10_StdCLib.pef
    │   │       ├── nlib_3_MPSharedGlobals.pef
    │   │       ├── nlib_5_InterfaceLib.pef
    │   │       ├── nlib_6_PrivateInterfaceLib.pef
    │   │       ├── nlib_7_BootStdCLib.pef
    │   │       ├── nlib_8_MathLibGlobals.pef
    │   │       ├── nlib_9_MathLib.pef
    │   │       ├── nsrd_1_SerialDMA
    │   │       ├── ntrb_-16400_NameRegistryTraps.pef
    │   │       ├── pixs_-10199
    │   │       ├── pixs_-10200
    │   │       ├── pixs_-10201
    │   │       ├── pixs_-10202
    │   │       ├── pixs_-10203
    │   │       ├── pixs_-10204
    │   │       ├── pixs_-10205
    │   │       ├── pixs_-10206
    │   │       ├── pixs_-10207
    │   │       ├── pixs_-10208
    │   │       ├── pixs_-14334
    │   │       ├── pixs_-14335
    │   │       ├── ppat_16
    │   │       ├── ppat_18
    │   │       ├── rovm_0
    │   │       ├── scod_-20961
    │   │       ├── scod_-20984
    │   │       ├── snd_1_Simple_Beep
    │   │       ├── usbd_-20776_USBHubDriver0.pef
    │   │       ├── usbd_-20777_USBHubDriver1.pef
    │   │       ├── usbd_-20778_USBHIDKeyboardModule.pef
    │   │       ├── usbd_-20779_USBHIDMouseModule.pef
    │   │       ├── usbd_-20780_USBCompositeDriver.pef
    │   │       ├── usbd_-20781_USBMassStorageClassDriver.pef
    │   │       ├── usbd_-20782_USBMassStorageVSDriver.pef
    │   │       ├── usbf_-20776
    │   │       ├── usbs_-20776_USBMassStorageLoader.pef
    │   │       ├── usbs_-20781_USBShimKeyboard.pef
    │   │       ├── usbs_-20782_USBShimMouse.pef
    │   │       ├── vadb_0_ISO_Cosmo
    │   │       ├── vadb_1_JIS_Cosmo
    │   │       ├── vadb_2_ANSI_Cosmo
    │   │       ├── vadb_3_ISO_Andy
    │   │       ├── vadb_4_JIS_Andy
    │   │       └── vadb_5_ANSI_Andy
    │   └── NanoKernel-v02.28
    ├── NVRAMServicesLib.pef
    ├── NativePowerMgrLib.pef
    ├── PCCard.pci104c,ac1a.cardbus.pef
    ├── PCCard.pci104c,ac50.cardbus.pef
    ├── PMULib.pef
    ├── Parcelfile
    ├── PowerMgrPlugin.CUDA.pef
    ├── PowerMgrPlugin.PMU.pef
    ├── PowerMgrPlugin.PMU2000.pef
    ├── PowerMgrPlugin.PMU99.pef
    ├── RTCServicesLib.pef
    ├── StartLib.pef
    ├── TimeManagerLib.pef
    ├── UniNorth_PCICyclesLib.pef
    ├── apple21143.network.pef
    ├── bmac+.network.pef
    ├── cmd646-ata.pef
    ├── cofb.display.pef
    ├── gmac.network.pef
    ├── heathrow-ata.pef
    ├── kauai-ata.pef
    ├── keylargo-ata.pef
    ├── keywest-i2c.pef
    ├── mac-io.nvram.pef
    ├── nvram,flash.pef
    ├── pci104c,ac1a.cardbus.pef
    ├── pciclass,0c0010.ieee1394.pef
    ├── uni-n-i2c.pef
    ├── via-cuda.rtc.pef
    ├── via-pmu.nvram.pef
    └── via-pmu.rtc.pef

Lastly, the online help for the ataboot.py patch (all tbxi-patches have the same simple command-line interface):
Code: [Select]
$ tbxi-patches/ataboot.py -h
usage: ataboot.py [-h] [-o DEST] SRC

Support ATA startup disks without an Apple_Driver_ATA partition. This allows
Mac OS to be installed on a disk without repartitioning it. Accomplished by
shoehorning the Drive Setup 2.1 ATA driver into the ROM ATALoad driver, to
replace missing driver partitions.

positional arguments:
  SRC         ROM or dump directory

optional arguments:
  -h, --help  show this help message and exit
  -o DEST     optional destination path -- "file" or "directory/"

macStuff

  • Guest
Re: Boot without the "Mac OS 9 Drivers"
« Reply #9 on: August 31, 2019, 10:44:08 PM »
files less than 60MB can simply be attached to any forum post;
so feel free to publish the "kit" yourself + post

Offline IIO

  • Platinum Member
  • *****
  • Posts: 4439
  • just a number
Re: Boot without the "Mac OS 9 Drivers"
« Reply #10 on: September 01, 2019, 04:47:33 PM »
great, thanks. will take a while until i´ll try, but then i will give you some feedback how it looks from an amateur perspective.
insert arbitrary signature here

Offline Jubadub

  • Gold Member
  • *****
  • Posts: 326
  • New Member
Re: Boot without the "Mac OS 9 Drivers"
« Reply #11 on: May 14, 2020, 03:44:39 AM »
How feasible would it be to port the scripts to MacPython 2.3.5, for Mac OS 9? ;)

Offline Jubadub

  • Gold Member
  • *****
  • Posts: 326
  • New Member
Re: Boot without the "Mac OS 9 Drivers"
« Reply #12 on: May 17, 2020, 03:54:40 AM »
On a side-note, since this patch was used for the Mac mini ROM in v9 to boot without OS 9 drivers pre-installed, and the mini (at least 1.5GHz) can boot from GPT-formatted drives, and GPT allows for drives of capacity beyond 2TB to be used, I tried combining all of these together.

Unsurprisingly, I got the floppy with the blinking question mark icon. :P It was still fun to try it out, though, just in case.

(Note: I used a 30GB HDD for this test, so the problem wasn't going past 2TB.)

Offline IIO

  • Platinum Member
  • *****
  • Posts: 4439
  • just a number
Re: Boot without the "Mac OS 9 Drivers"
« Reply #13 on: May 17, 2020, 05:15:58 AM »
so you suggest to make OS9 bootable from GUID? :)

then i think step 1 would be to come around the size limits of OSX, which also only supports 2, 3, 4, or 8 TB of adress space, GUID or not. :P
insert arbitrary signature here

Offline teroyk

  • Platinum Member
  • *****
  • Posts: 623
  • -
Re: Boot without the "Mac OS 9 Drivers"
« Reply #14 on: May 17, 2020, 08:52:11 AM »
Should somebody check what Lacie Silverlining Pro 6.5.8 do, when you choose install OS 9 drivers, it seems that it install it's own drivers that are loaded before OS 9 really boots.

Offline vad12

  • Valued Member
  • **
  • Posts: 10
  • New Member
Re: Boot without the "Mac OS 9 Drivers"
« Reply #15 on: July 03, 2022, 12:36:07 PM »
Hi, I tried ataboot.py on my Mac OS ROM for OS 9.2.2 on my Sawtooth. I think this hard drive with Mac OS 9 has a corrupted Apple_Driver partitions setup, so I figured I'd give this a shot. The patch seems to apply correctly. I still got the flashing '?' folder icon when I tried booting into Mac OS 9, though.

I know the ROM itself shouldn't be corrupted because I have the exact same copy on the original cloned hard drive, and that copy of Mac OS 9 does boot the usual way (with the Apple Drivers partitions). The partition maps between both drives are very different now though, with just the Mac OS 9 not booting on the current "problem" drive. Mac OS 9 did boot on this drive when originally cloned, though.

My particular problem might end up in its own forum topic, but I was wondering if anyone has gotten this patch to work on any other machine than the Mac Mini?

Also, when I tested, I did have both drives connected at the same time. Does this patch require the hard drive to be the 1st or the only connected drive?

Thanks!

Offline zefrenchtoon

  • Veteran Member
  • ****
  • Posts: 119
Re: Boot without the "Mac OS 9 Drivers"
« Reply #16 on: July 04, 2022, 11:42:38 PM »

Offline Metrophage

  • Veteran Member
  • ****
  • Posts: 192
Re: Boot without the "Mac OS 9 Drivers"
« Reply #17 on: September 21, 2022, 05:32:21 PM »
Brilliant! Thanks for doing this. I've often wondered what that driver was supposedly for and if there was a way around it.

When I got v9 of Ross' CD this was what jumped out at me most.

Offline IIO

  • Platinum Member
  • *****
  • Posts: 4439
  • just a number
Re: Boot without the "Mac OS 9 Drivers"
« Reply #18 on: September 21, 2022, 10:34:11 PM »
they day they included the HD driver right in the ROM file was when 37 new synapse were formed in my brain.
insert arbitrary signature here

Offline vaccinemedia

  • Enthusiast Member
  • ***
  • Posts: 26
  • New Member
Re: Boot without the "Mac OS 9 Drivers"
« Reply #19 on: January 31, 2024, 05:18:44 PM »
@ELN any chance of a quick demo video on using this please? I’m about to do a clean install of a partitioned drive without os9 drivers and hoping to use it from Tiger to make it bootable but don’t see clearly what I’m supposed to do. Fingers crossed I’m going to just wing it but if you could give an example command that would be great. I’m assuming that from tiger I just run I and have the single argument of the os9 boot rom location but we all know what assuming makes ;)