* docs/grub.texi (BIOS installation): New section, partly based on

previous text in other sections.
(Installing GRUB using grub-install): Replace BIOS discussion with a
cross-reference.
(Images): Likewise.
This commit is contained in:
Colin Watson 2011-03-29 14:32:38 +01:00
parent 9e4d19e0d3
commit 994b826432
2 changed files with 79 additions and 29 deletions

View file

@ -1,3 +1,11 @@
2011-03-29 Colin Watson <cjwatson@ubuntu.com>
* docs/grub.texi (BIOS installation): New section, partly based on
previous text in other sections.
(Installing GRUB using grub-install): Replace BIOS discussion with a
cross-reference.
(Images): Likewise.
2011-03-29 Vladimir Serbinenko <phcoder@gmail.com> 2011-03-29 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/kern/emu/hostdisk.c (find_partition_start) * grub-core/kern/emu/hostdisk.c (find_partition_start)

View file

@ -550,6 +550,7 @@ the @dfn{boot directory}.
* Installing GRUB using grub-install:: * Installing GRUB using grub-install::
* Making a GRUB bootable CD-ROM:: * Making a GRUB bootable CD-ROM::
* Device map:: * Device map::
* BIOS installation::
@end menu @end menu
@ -565,13 +566,8 @@ always. Therefore, GRUB provides you with a map file called the
@dfn{device map}, which you must fix if it is wrong. @xref{Device @dfn{device map}, which you must fix if it is wrong. @xref{Device
map}, for more details. map}, for more details.
On BIOS platforms GRUB has to use a so-called embedding zone. On msdos For information on where GRUB should be installed on PC BIOS platforms,
partition tables, this is the space between the MBR and the first partition @pxref{BIOS installation}.
(called the MBR gap or the boot track), while on GPT partition tables it
uses a BIOS Boot Partition (a partition with GUID
21686148-6449-6e6f-744e656564454649). If you use GRUB on a BIOS system, make
sure that the embedding zone is at least 31 KiB (512KiB or more
recommended).
If you still do want to install GRUB under a UNIX-like OS (such If you still do want to install GRUB under a UNIX-like OS (such
as @sc{gnu}), invoke the program @command{grub-install} (@pxref{Invoking as @sc{gnu}), invoke the program @command{grub-install} (@pxref{Invoking
@ -744,6 +740,72 @@ comments in the file if needed, as the GRUB utilities assume that a line is
just a comment if the first character is @samp{#}. just a comment if the first character is @samp{#}.
@node BIOS installation
@section BIOS installation
@heading MBR
The partition table format traditionally used on PC BIOS platforms is called
the Master Boot Record (MBR) format; this is the format that allows up to
four primary partitions and additional logical partitions. With this
partition table format, there are two ways to install GRUB: it can be
embedded in the area between the MBR and the first partition (called by
various names, such as the "boot track", "MBR gap", or "embedding area", and
which is usually at least 31 KiB), or the core image can be installed in a
file system and a list of the blocks that make it up can be stored in the
first sector of that partition.
Each of these has different problems. There is no way to reserve space in
the embedding area with complete safety, and some proprietary software is
known to use it to make it difficult for users to work around licensing
restrictions; and systems are sometimes partitioned without leaving enough
space before the first partition. On the other hand, installing to a
filesystem means that GRUB is vulnerable to its blocks being moved around by
filesystem features such as tail packing, or even by aggressive fsck
implementations, so this approach is quite fragile; and this approach can
only be used if the @file{/boot} filesystem is on the same disk that the
BIOS boots from, so that GRUB does not have to rely on guessing BIOS drive
numbers.
The GRUB development team generally recommends embedding GRUB before the
first partition, unless you have special requirements. You must ensure that
the first partition starts at least 31 KiB (63 sectors) from the start of
the disk; on modern disks, it is often a performance advantage to align
partitions on larger boundaries anyway, so the first partition might start 1
MiB from the start of the disk.
@heading GPT
Some newer systems use the GUID Partition Table (GPT) format. This was
specified as part of the Extensible Firmware Interface (EFI), but it can
also be used on BIOS platforms if system software supports it; for example,
GRUB and GNU/Linux can be used in this configuration. With this format, it
is possible to reserve a whole partition for GRUB, called the BIOS Boot
Partition. GRUB can then be embedded into that partition without the risk
of being overwritten by other software and without being contained in a
filesystem which might move its blocks around.
When creating a BIOS Boot Partition on a GPT system, you should make sure
that it is at least 31 KiB in size. (GPT-formatted disks are not usually
particularly small, so we recommend that you make it larger than the bare
minimum, such as 1 MiB, to allow plenty of room for growth.) You must also
make sure that it has the proper partition type. Using GNU Parted, you can
set this using a command such as the following:
@example
# @kbd{parted /dev/@var{disk} set @var{partition-number} bios_grub on}
@end example
If you are using gdisk, set the partition type to @samp{0xEF02}. With
partitioning programs that require setting the GUID directly, it should be
@samp{21686148-6449-6e6f-744e656564454649}.
@strong{Caution:} Be very careful which partition you select! When GRUB
finds a BIOS Boot Partition during installation, it will automatically
overwrite part of it. Make sure that the partition does not contain any
other data.
@node Booting @node Booting
@chapter Booting @chapter Booting
@ -2021,28 +2083,8 @@ target operating systems, and so on) from the file system at run-time. The
modular design allows the core image to be kept small, since the areas of modular design allows the core image to be kept small, since the areas of
disk where it must be installed are often as small as 32KB. disk where it must be installed are often as small as 32KB.
On PC systems using the traditional MBR partition table format, the core @xref{BIOS installation}, for details on where the core image can be
image is usually installed in the "MBR gap" between the master boot record installed on PC systems.
and the first partition, or sometimes it is installed in a file system and
read directly from that. The latter is not recommended because GRUB needs
to encode the location of all the core image sectors in @file{diskboot.img},
and if the file system ever moves the core image around (as it is entitled
to do) then GRUB must be reinstalled; it also means that GRUB will not be
able to reliably find the core image if it resides on a different disk than
the one to which @file{boot.img} was installed.
On PC systems using the more recent GUID Partition Table (GPT) format, the
core image should be installed to a BIOS Boot Partition. This may be
created by GNU Parted using a command such as the following:
@example
# @kbd{parted /dev/@var{disk} set @var{partition-number} bios_grub on}
@end example
@strong{Caution:} Be very careful which partition you select! When GRUB
finds a BIOS Boot Partition during installation, it will automatically
overwrite part of it. Make sure that the partition does not contain any
other data.
@item *.mod @item *.mod
Everything else in GRUB resides in dynamically loadable modules. These are Everything else in GRUB resides in dynamically loadable modules. These are