Quickie notes on x86 boot monitor

This document exists as notes to myself, because I don't know of ANY other place where there exists documentation for the wierd x86 boot monitor. This is a work in progress.(jan 11th, 1999).

This document kinda assumes you have been exposed to strange paths like '/isa/ata@230,1/cmdk@0,0:a' before. It also assumes we are primarily talking about solaris 2.6 and later. I am writing this because I hit an irritating problem:

I have an HP pavilion 6350. It comes with an AMD K2 cpu, and a lot of integrated logic: a "SiS 5598" graphics chip, a SiS PCI to ISA bridge, and a "Crystal audio" sound chip, all on the motherboard. Unfortunately, there is some conflict between the way solaris 2.6 and solaris 7 do "bus probing", which makes the boot software lock up.

The interesting thing is, the solaris 2.5.1 boot floppies work great on the hardware. But I dont'have the matching 2.5.1 media right now. And it wont let me boot the 2.6 CDROM off the 2.5.1 boot floppies.

The x86 boot monitor seems at first glance to be somewhat similar to the sparc "OpenBoot" boot monitor stuff. It serves as a repository for device information. NORMALLY, the bootconf.exe file fills out the whole device tree, and then some. However, if you're a poor unfortunate slob like me who bought the wrong hardware, you may be stuck with a "bootconf.exe" that locks up when it "enumerates busses". [If you care, the boot monitor is "boot.bin"]

This naturally leads the adventurous types to want to do it themselves. Be warned... It seems to be a long and arduous task.

Basic commands

"help" will give you a lot of info. But here are the commands I figure will be the most useful:

pwd -- tells you where you are

cd -- changes where you are.

mknod -- makes a new directory(?) and/or device. Note that this does an implicit 'cd' into the new directory.

.properties -- lets you know what properties are set on a device

setprops -- sets properties ON THE CURRENT DIRECTORY!!

This last one is the most confusing, because in some of the .rc files on the floppy, it seems to be used in a manner similar to "setenv", in either openboot, or the C shell. This is not quite the case, however. For setting misc. options, you first have to be in either the /options or the /chosen directories.

Interesting Options

Here are options or properties I have found so far to be interesting. To set, cd to the given /path, and do "setprop optionname value"

under /options

  boot-device -- device you want to end up booting from (aka hard disk)
  boot-path   -- device you want to boot from RIGHT NOW. Probably
                  a cdrom drive, for install
  bootpath    -- (same as boot-path, as far as I can tell)

under random devices

  device_type  -- you probably want to set /pci to type pci, and
                  /isa to type isa

  \$at IO,x     -- yes, actually type backslash-dollarsign-a-t-space
                  This is the wierd one that actually sets the properties
		  of what IO address a device uses (I think)
		  I'm not 100% sure what the x does. Usually set to 0.

		     cd /isa/ata
		     setprop \$at 170,0
		  This actually changes the path from "/isa/ata", to

end of current knowlege

This is where my current knowlege stops. For other avenues of exploration, cd to the "solaris" directory on the install floppy. Take a look at "boot.rc", which is a text file in the odd language of the boot monitor. You can also look at the output of "uncompress More info is welcome

Written by: Philip Brown
Solaris Top