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