Re: native booting

Rob Braun <[email protected]>
Newsgroups gmane.os.netbsd.ports.mac68k
Message-ID <[email protected]>

> Amitai Schlair <mailto:[email protected]>
> June 30, 2014 at 9:34 AM
> I've always wanted to be able to install and boot NetBSD on my 68K
> Macs without needing Mac OS.
Here's some of my notes on the process of booting from SCSI for mac68k:

pram stores the partition number, device ID (scsi id or nubus slot), and 
OS type to boot.

On boot, SCSIManager iterates over scsi ID's looking for the device to 
boot.  If found, it tries to load block0 (512bytes) from the scsi device.
block size is determined from block0
It then iterates over the device driver list in block0, matching the 
DDType field against the OS type from PRAM.  If a match is not found, it 
bails and is not a bootable device.

If the OStype/DDtype is not macos (type1), the driver is called, and not 
expected to return (although should be fine if it does...)

If the OStype/DDtype is macos, block1 is inspected to determine 
partition map.

The partition map is then iterated looking for an Apple_Driver partition 
that matches the driver information loaded from block0.  If everything 
matches and a checksum verifies, and the partition we're booting is an 
HFS partition, the driver is called.

At this point, there should be an entry in the drive queue for the HFS 
partitions, and the partition we're booting from, and the boot blocks 
are loaded from the partition.  From here on, booting is the same 
regardless of the medium being booted from, whether it's a floppy, scsi 
disk partition, Nubus card, ROM disk, etc.  The boot procedure from this 
point on is the same as: 
https://mac68k.info/wiki/display/mac68k/System+6+Boot+Process and 
https://mac68k.info/wiki/display/mac68k/System+7+Boot+Process

Note that although boot block information is contained within the 
partition information, it's not actually used for booting on any 68k mac 
ROM I'm aware of.



So, it seems like initial testing from a floppy is a good idea, since 
you can focus on the actual bootloading part without the added 
complexity of the SCSI process.
Once that is working, it seems like there's a couple different 
approaches that can be taken to booting from SCSI:
- Use a device driver type, and boot directly from the device driver.  
This would mean a separate utility to update the disk's block0 with the 
netbsd bootloader/device driver, and set the proper bits in PRAM, since 
Startup Disk won't know anything about this new OS type, and the device 
driver won't be invoked unless the PRAM matches its type.  This seems 
like a relatively clean way to do it, but has a downside of being 
unbootable if PRAM isn't set (such as a dead pram battery).  In that 
case it'd continue looking for a bootable HFS partition.
- Use an HFS partition, but with boot blocks setup to load a netbsd 
bootloader.  This will be a valid hfs partition to MacOS in the case of 
a multiboot scenario, so should contain an actual, even if minimal, 
filesystem.  If not, and you ever boot macos, you'll get the dialog to 
initialize it.  It could even be setup in such a way that Startup Disk 
thinks it is a valid MacOS, and could be used to bless it appropriately.

Once valid boot blocks for netbsd are available, true diskless 
netbooting from the stock ROM (on machines that support it) becomes 
almost feasible: https://mac68k.info/forums/thread.jspa?threadID=76&tstart=0

Rob
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.