On Fri, Nov 13, 2020 at 09:28:16PM +0100, Vladimir 'phcoder' Serbinenko wrote:
> From 4bd2f59773bec11ad7be1ced5b49edbf44d711f2 Mon Sep 17 00:00:00 2001
> From: Vladimir Serbinenko <phco...@gmail.com>
> Date: Tue, 10 Nov 2020 20:23:56 +0100
> Subject: [PATCH 2/2] Document new limitations on MBR gap support
>
> Signed-off-by: Vladimir Serbinenko <phco...@gmail.com>

Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com>

This is last chance to complain! I am going to take this patch next week...

Daniel

> ---
>  docs/grub.texi | 43 ++++++++++++++++++++++++++++++++-----------
>  1 file changed, 32 insertions(+), 11 deletions(-)
>
> diff --git a/docs/grub.texi b/docs/grub.texi
> index 37f7ce7da..d6ce0999f 100644
> --- a/docs/grub.texi
> +++ b/docs/grub.texi
> @@ -829,25 +829,46 @@ 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
> +which is usually at least 1000 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
> +Modern tools usually leave MBR gap of at least 1023 KiB. This amount is
> +sufficient to cover most configurations. Hence this value is recommended
> +by the GRUB team.
> +
> +Historically many tools left only 31 KiB of space. This is not enough to
> +parse reliably difficult structures like btrfs, zfs, raid or lvm, or to
> +use difficult disk access methods like ahci. Hence GRUB will warn if 
> attempted
> +to install into small MBR gap except in a small number of configurations
> +that were grandfathered. The grandfathered config must:
> +
> +* use biosdisk as disk access module for @file{/boot}
> +* not use any additional partition maps to access @file{/boot}
> +* @file{/boot} must be on one of following filesystems:
> +   * AFFS, AFS, BFS, cpio, newc, odc, ext2/3/4, FAT, exFAT,
> +   F2FS, HFS, uncompressed HFS+, ISO9660, JFS, Minix, Minix2, Minix3, NILFS2,
> +   NTFS, REISERFS, ROMFS, SFS, tar, UDF, UFS1, UFS2, XFS
> +
> +MBR gap has few technical 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.
> +restrictions. GRUB works it around by detecting sectors by other software and
> +avoiding them and protecting its own sectors using Reed-Solomon encoding.
> +
> +GRUB team recommends having MBR gap of at least 1000 KiB
> +
> +Should it be not possible GRUB has support for a fallback solution which is
> +heavily recommended against. 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 first partition starts at least 1000 KiB (2000 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.
> --
> 2.20.1
>
>
> --
> Regards
> Vladimir 'phcoder' Serbinenko

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to