On 6/5/05, Digby Tarvin <[EMAIL PROTECTED]> wrote:
> Following on from the recent discussions on grub and booting,
> is there a good reason for having a separate partition for /boot,
> other than perhaps to overcome BIOS addressing limitations for
> people with very large root partitions??

A separate /boot partition is more than likely for compatibility with
older BIOSes.  (You'll notice that other architectures, AFAIK, don't
need it.)  Some older BIOSes won't see past a certain limit (504 MB,
2.1 GB, 8.4 GB, 33.8 GB, 137 GB) and consequently, depending on your
BIOS, if your boot partition extends past that limit or if your kernel
image is stored past that limit (when using CHS instead of LBA), your
system will be unbootable.

Other OSes may observe the 1024-cylinder and/or the 2 GB boot
boundaries.  The BIOS 1024 cylinder limitation exists because the
start and end cylinder values in the partition table, and some BIOSs,
have a maximum value of 1024.  Because some operating systems such as
DOS 6.22 use the CHS (Cylinder, Head, and Sector) values to address
sectors on the disk, they cannot access sectors beyond the 1024th
cylinder. When you start your computer, the BIOS boots the operating
system using the CHS values to locate the first sector of the bootable
partition. If the partition starts past the 1024 cylinder, the BIOS
may not be able to boot it because it cannot address a cylinder number
higher than 1024.  Defeat this limitation by using a BIOS with Int13h
or LBA support, or by using Linux. :-)

The 2 GB boot code boundary exists because, with some older
OSes/BIOSes, the CHS value of the beginning boot code sector must be
calculated in order to retrieve the sector's information and load and
execute the next part of the boot process.  Because of the way the
boot code is written, the sector value, computed from the CHS value,
must fit in a 16-bit register, thus the maximum value that can be kept
is 64K.  If the number is larger than 64K, the number is truncated,
resulting in an incorrect value that skews the remaining calculations.
The boot process fails to load and execute the needed sector, thus
preventing the OS from booting.  Most current hard disks have 63
sectors per track, creating a 64K boot code boundary at 2 GB.  If a
partition begins or extends beyond this boundary, the CHS value of the
partition's boot code sector cannot be correctly calculated;
therefore, the partition and its OS cannot boot.  AFAIK, this only
affects older OSes, like DOS and WinNT 4.0, and BIOSes that aren't set
to LBA mode.  Like not Linux. :-)

(Paraphrased from the PowerQuest PartitionMagic help file.  Please
don't sue me.)

Keeping /boot as a tiny partition at the front of the disk makes sure
that your system can boot despite whatever curveball your old software
can throw at it.  If you're confident that these problems don't affect
you, feel free to merge /boot and /.  I usually don't do it, but I
thought I'd try it out.

Once the kernel kicks in, the kernel can do translation so that all of
your disk is visible and usable.  This is done by compiling in
translation or passing "hdx=stroke" to genkernel kernels (LiveCD's
included).  Of course, drive overlay software is still an option if
that's the way you like it, or if you dual-boot Windows.
-- 
Colin

-- 
gentoo-user@gentoo.org mailing list

Reply via email to