spacer graphic

e-Picture

Be Developers:
Put your banner here!

spacer graphic cubeprefsicon graphic [Bar]


BeOS Boot Loader Limitations

 

This page describes in detail certain limitations of booting the BeOS Release 3.x for Intel Architecture. These limitations, while not serious, can be unexpected. The information here should clarify the issues.

The BeOS Release 4 bootloader does not suffer from any of the difficulties described here. Nor do the limitations described here affect any release of the BeOS on PowerPC systems, which have significant differences in the way the BeOS boots.

This page was last updated on December 4, 1998.

 

Background


The limitations described here have at their root a common problem, which is PC BIOS's use of and reliance on a particular method of mapping out, sizing, and addressing space on hard disk drives. This addressing scheme, called CHS (for Cylinder-Head-Sector), dates back to the beginning of IBM-compatible PCs, and it has two flaws that affect booting the BeOS (and any other operating system, for that matter).

The first is that it puts a hard limit on the size of hard disks, at eight gigabytes. Partitioning has no effect on this limit, as it is a limit for the entire drive, not each partition. Space beyond 8 gigabytes can't be accessed or addressed using CHS.

Until fairly recently, this wasn't much of a problem, as drives for PCs simply didn't come that large (at least, not commonly). But, there are such drives now, and there is a second addressing scheme, called LBA (for Logical Block Addressing), which does not suffer from CHS's limitations, and can access disks larger than 8 gigabytes.

LBA points out the second limitation of CHS, which is that even for drives smaller than 8 gigabytes, for technical reasons CHS does not always address every bit of storage space on a disk drive. Sometimes there is a liiiittle bit of extra space left over at the end of the drive, which LBA can address but CHS cannot. There's probably a more correct technical term for this, but for this discussion, we're calling it the Dead Zone.

The last piece of background information relevant here is that the BeOS Boot Loader, the piece of code that actually reads the BeOS from disk into memory, is stored in a file named zbeos, which you can find in the /boot/var/lilo/ directory (you can find another copy at /beos/system/zbeos, but that's not the file used to load the BeOS). This file is basically the first piece of the BeOS that needs to be found and used at boot time.

 

Limitation #1 -- The Dead Zone


CHS addressing is most solidly codified in the BIOSes of PC hardware. That's not normally a problem, because most operating systems (and other software) use a PC's BIOS for very little, or nothing at all. The one thing that all PC operating systems do use the BIOS for, some more and some less, is booting.

When booting, the system boot loader interrogates the BIOS to get information about the system, including information about the hard drives. Then it uses that information to figure out where to find the operating system's boot loader code, which in the BeOS is the zbeos file, and then read that in and start it running.

Here's where the first problem lies. The BeOS uses LBA addressing when it initializes a disk partition, so if you used the BeOS to initialize your BeOS volume (which you basically have to do, when you install the BeOS the first time), you could have a Dead Zone on your hard disk. If your zbeos file is physically located in the Dead Zone, it may not be able to be jumped to by the system boot loader, if the BIOS can't handle the Dead Zone (most can't). Which means you can't boot the BeOS, at least not from the hard disk.

Note: DOS' fdisk can also partition a disk in such a way to create a Dead Zone; we've seen it here at Be Headquarters. So you're not safe from the Dead Zone just by avoiding using the BeOS to initialize or partition your disk!

 

Limitation #2 -- The Really Big Disk


You could probably see this one coming a mile away, but the second situation where the BeOS cannot boot from the hard disk is when the zbeos file is physically located beyond the first 8 gigabytes of the hard disk.

It's a subtly different situation from the first, in that the trigger is not being in the Dead Zone, which can exist on a disk of any size, but being beyond the End of the World as far as CHS-style disk addressing is concerned.

 

The BeOS Release 3 Workaround


In both cases, the immediate workaround is to boot your BeOS system from a BeOS Boot Floppy. You'll definitely want to make sure you're using the most recent boot floppy, which you can get on the BeOS Boot Floppy (x86) page at BeDepot.com:

http://www.bedepot.com/products/be/beos_boot_floppy_r3.2_x86.asp

The second workaround is to move the zbeos file to a "safe" location on your hard disk, that is, a location that is outside of the Dead Zone, if there is one on your hard disk, and under the 8 gigabyte limitation.

There's a limit to how much help we can be in moving the zbeos file to under the 8 gigabyte limit. If your BeOS partition is above the 8 gig range, then you'll have to use the boot floppy or reformat. All we can suggest is formatting your disk so that your BeOS partition comes closer to the front of your disk. You'll need to read your hard disk software manual for information about that.

Moving the zbeos file out of the Dead Zone is both harder and easier. It's harder because you have little or no control over where any given file is physically written on the disk. That's one of the things operating systems shield you from, with their file system.

However, it's easier because Be has written a tiny little utility that will check your disk, and attempt to move the zbeos file to a safe location, if it is not already in one.

The BeOS Boot Loader Mover utility is made available on the eponymously named page at BeDepot.com:

http://www.bedepot.com/products/be/beos_bootloader_mover.asp

Instructions for using the utility can be found on the same page. We'll just cover the different messages you can receive from this utility, and what you can do about each situation.

Here are the different messages, their meanings, and what to do when you get them. The first two messages are by far the most common cases, but we're detailing them all here, so you'll know what to do even in the most rare cases:

  • zbeos is ok! (no repair needed)

    Your system is not affected by this problem. The BeOS Boot Loader Mover utility has not done anything to your system.

  • zbeos is unreachable by the BIOS.... attempting to fix it.
    zbeos repaired.

    Your system was affected by this problem, and the BeOS Boot Loader Mover utility has repaired the problem by moving the BeOS Boot Loader to a safe location on your hard disk.

  • zbeos is unreachable by the BIOS.... attempting to fix it.
    could not repair zbeos :-(

    Your system was affected by this problem, but the BeOS Boot Loader Mover utility was unable to successfully move the file to a safe location. It's still possible you can make it work, but not certain.

    Try this: duplicate the Tracker, located at /beos/system/Tracker, delete the original, and rename the duplicate to "Tracker". Empty the Trash. Now run the BeOS Boot Loader Mover utility again. If it fails this time, you'll have to continue to use the BeOS Boot Floppy.

    Note: This procedure is not without its own risks, because if you mis-name the duplicate of the Tracker, the BeOS won't be able to find it at boot time, and you'll be unable to boot your system at all. At that point, you'll need to reinstall the BeOS from the CD. So be careful if you decide to try this trick!

  • could not get bios geometry for /boot

    The utility could not get certain information about your boot disk. Reboot and try again. If it fails a second time with this same message, send us a Support Request using the Be Customer Technical Support form.

  • This partition begins beyond the end of what the BIOS thinks is the
    end of the disk. You must use the floppy to boot the BeOS.

    Your BeOS partition is beyond the 8 gigabyte range. There's nothing you can do except use the BeOS Boot Floppy, or reformat your drive to have the BeOS partition be under the 8 gigabyte limit.

  • can't get partition info for /dev/disk/ide/mumble/mumble/mumble

    This shouldn't happen. Reboot and try again. If it fails a second time with this same message, send us a Support Request using the Be Customer Technical Support form. Uh, soon would be a good idea.

 

The Future


As we've said, while the fundamental limitations described here have at their root a hardware limitation, it's a limitation that can generally be worked around. Some operating systems work around them by going the extra mile in writing their own boot loader, while some go a different route, and force you to install them into the first partition on your hard disk (I wonder who that would be? ;-).

With BeOS Release 4, we'll be going the extra mile, and then some. R4 will have an entirely new boot loader, which will be both nicer than LILO (which our current loader is based on) and will not suffer from the limitations imposed by CHS (which LILO is currently bound by), at least on relatively modern hardware.

The new boot loader will use LBA variants of the required BIOS calls when it can, which will allow it to access the zbeos file on disks of any size, and in any location on those disks. This will only work on systems with BIOSes that support LBA versions of these calls, which is most of the systems built in the last two-to-three years or so. On systems with older BIOSes (that the BeOS will run on at all), you'll continue to have these limitations, but those problems are truly in the hardware, and can't be worked around.

BeOS Release 4 is scheduled to ship in the Fall of 1998, later this year.

 

Geek Notes


Here are some random notes that give some more technical details regarding the above information.

CHS addressing originates from the first design of IDE disk drives, which had three registers -- cylinder (10 bits), head (6 bits), and sector (8 bits) -- to address particular sectors on the disk. The first BIOSes were written with an API that mimicked the hardware. The maximum disk size was 1024 (10 bits) * 64 (6 bits) * 256 (8 bits) * 512 (bytes/sector), or 8 gigabytes.

LBA addressing uses a 28 bit register to address each sector, for a maximum size of 128 gigabytes. Well above what you might reasonably and economically buy for your desktop computer today, but well below the maximums of the BeOS!

Modern disk drives have implemented LBA addressing in hardware, but BIOSes have been slow to catch up, and software that uses the BIOS (such as LILO) has also not changed. Hence, the CHS limitation has hung on after it stopped being necessary.

 


Copyright © 1999 by Be, Inc. All rights reserved. Legal information (includes icon usage info).
Comments, questions, or confessions about our site? Please write the Webmaster.