[Oberon] Booting Bluebottle from USB

Stauber Sven Philipp staubesv at student.ethz.ch
Tue Feb 21 17:04:12 CET 2006

Dear All,
The USB software contained in the today's release is smaller in size, so it's possible to create boot files that don't exceed the x86 real mode memory constraints and can be used to boot from USB drives (Tested).
The two major changes which made it smaller are:
- Conditionally compile debug/trace code (see constants in AosUsbDebug.Mod)
- Refactoring of Mass Storage Driver (uses Bulk-only transport driver for booting; AosUsbStorageBoot.Mod)
To boot from USB:
1. Link a boot file (currently not provided, AosUSB.Bin contained in the release does not work!)
Open the file Aos.Tool under Oberon. Go to the section "Link boot file". There are two different versions of USB boot files: AosUSB.Bin & AosUSB2.Bin. 
If your computer is able to boot from USB high-speed devices ("USB2.0"), I highly recommend using AosUSB2.Bin boot file.
Press the BbLinker.Link command of your choice and be sure that the size of the resulting boot file does not exceed 640KByte. 
- AosUSB2.Bin can just be linked. It's small enough even with debug/trace code enabled.
- AosUSB.Bin: The trace/debug code is per default enabled. You will have to set the constants AosUsbDebug.Trace & AosUsbDebug.Debug to FALSE and then re-compile the USB software (use the compile command in AosUsb.Text) to get a small enough boot file. This means, of course, that you won't see any trace/debug messages if something fails, but it makes the code smaller in size.
2. Prepare your USB drive (see AosUsb.Text for more details)
- Create a partition of type 76 (AosFS)
- Activate partition
- Format partition, update boot file (AosUSB.Bin or AosUSB2.Bin)
- Install Bluebottle the same way you would install it onto a H.D.D. 
2.5 Config strings
Basically, you can use the same config strings as if Bluebottle was installed onto a H.D.D., except:
You have to boot from a partition of the device USB0, e.g. "BootVol1=AOS AosFS USB0#1"
If booting using AosUSB2.Bin:
If booting using AosUSB.Bin:
- The USB boot files don't contain the ATA disk driver. If you want to access ATA/ATAPI drives, add the config string "AosATADisks.Install" somewhere.
- You don't have to set the config string "BootFromUsb=1" anymore
- You MUST NOT load the EHCI host controller driver (AosUsbEhci.Mod) when booting from AosUSB.Bin. You also MUST NOT call AosPCITools.DetectHardware (would install EHCI driver if H/W is present). Doing so would cause the USB drive you're booting from to be disconnected from its host controller and re-connected to the EHCI controller. 
3. Try to boot
If you're hanging when the message "Oberon loading..." is displayed, then
- check whether you did set the config strings
- if you did, add the config strings "TraceMode=4" and "Init=" (delete the Init config string) to enable tracing, and then try to boot again 
- if you don't see any trace messages and still hang at "Oberon loading...", the boot file is too large
Sven Stauber

More information about the Oberon mailing list