grub-mkrescue-sed.sh: MKRESCUE_SED_IN_EFI_NO_PT="extra" to erase MBR signature
This commit is contained in:
parent
95c2e7cbda
commit
1eb51f44da
@ -120,6 +120,7 @@ fi
|
||||
# "yes" overwrites the MBR partition table area in the EFI boot image by zeros.
|
||||
# Some EFI implementations get stuck when seeing in the EFI partition a
|
||||
# partition table entry which begins at LBA 0.
|
||||
# "extra" not only zeros the partition table but also the MBR signature.
|
||||
efi_zero_inner_pt=no
|
||||
if test -n "$MKRESCUE_SED_IN_EFI_NO_PT"
|
||||
then
|
||||
@ -192,24 +193,31 @@ then
|
||||
find "$dir"
|
||||
fi
|
||||
|
||||
if test "$efi_zero_inner_pt" = yes
|
||||
if test "$efi_zero_inner_pt" = yes -o "$efi_zero_inner_pt" = extra
|
||||
then
|
||||
did_dd=0
|
||||
if test -e "$dir"/efi.img
|
||||
then
|
||||
# Look for 0x55 0xAA in bytes 510 and 511
|
||||
magic=$(dd bs=1 skip=510 count=2 if="$dir"/efi.img 2>/dev/null | \
|
||||
od -c | head -1 | awk '{print $2 " " $3}')
|
||||
if test "$magic" = "U 252"
|
||||
then
|
||||
echo "Performing actions for MKRESCUE_SED_IN_EFI_NO_PT=$efi_zero_inner_pt" >&2
|
||||
dd if=/dev/zero bs=1 seek=446 count=64 conv=notrunc of="$dir"/efi.img
|
||||
did_dd=1
|
||||
if test "$efi_zero_inner_pt" = extra
|
||||
then
|
||||
dd if=/dev/zero bs=1 seek=510 count=2 conv=notrunc of="$dir"/efi.img
|
||||
fi
|
||||
echo >&2
|
||||
fi
|
||||
fi
|
||||
if test "$did_dd" = 0
|
||||
then
|
||||
echo >&2
|
||||
echo "$0 : NOTE : No EFI image found or no MBR signature in it." >&2
|
||||
echo "$0 : NOTE : Will not obey MKRESCUE_SED_IN_EFI_NO_PT=yes" >&2
|
||||
echo "$0 : NOTE : Will not obey MKRESCUE_SED_IN_EFI_NO_PT=$efi_zero_inner_pt" >&2
|
||||
echo >&2
|
||||
fi
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user