all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
blob a719ca1f8967ce0ca0a3465f83d1e1cb86a4733a 3894 bytes (raw)
name: gnu/packages/patches/xorriso-no-partition-table-in-inner-efi.patch 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
 
https://dev.lovelyhq.com/libburnia/libisoburn/commit/3a2a3ba737a06162c22ace0ae09d33ba97aa2673
diff --git a/frontend/grub-mkrescue-sed.sh b/frontend/grub-mkrescue-sed.sh
index d772ff22..b3948c99 100755
--- a/frontend/grub-mkrescue-sed.sh
+++ b/frontend/grub-mkrescue-sed.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# Copyright (C) 2015 - 2016
+# Copyright (C) 2015 - 2019
 # Thomas Schmitt <scdbackup@gmx.net>, libburnia-project.org
 # Provided under BSD license: Use, modify, and distribute as you like.
 
@@ -117,6 +117,15 @@ fi
 #  command line.)
 # Each argument must be a single word. No whitespace. No quotation marks.
 
+# "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.
+efi_zero_inner_pt=no
+if test -n "$MKRESCUE_SED_IN_EFI_NO_PT"
+then
+  efi_zero_inner_pt="$MKRESCUE_SED_IN_EFI_NO_PT"
+fi
+
 
 #
 #                               Do the work 
@@ -183,12 +192,48 @@ then
   find "$dir"
 fi
 
+if test "$efi_zero_inner_pt" = yes
+then
+  did_dd=0
+  if test -e "$dir"/efi.img
+  then
+    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
+      dd if=/dev/zero bs=1 seek=446 count=64 conv=notrunc of="$dir"/efi.img
+      did_dd=1
+    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 >&2
+  fi
+fi
+
 efi_tmp_name=
+if test x"$mode" = xmjg \
+     -o x"$mode" = xmbr_only \
+     -o x"$mode" = xgpt_appended \
+     -o x"$mode" = xmbr_hfs
+then
+  # Move EFI partition image file out of the "$dir" tree, i.e. out of the ISO
+  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
+  if test -e "$dir"/efi.img
+  then
+    mv "$dir"/efi.img /tmp/$efi_tmp_name
+  elif test -e /tmp/$efi_tmp_name
+  then
+    rm /tmp/$efi_tmp_name
+  fi
+fi
+
 if test x"$mode" = xmjg
 then
   # Exchange arguments for the experimental GRUB2 mjg layout
-  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
-  mv "$dir"/efi.img /tmp/$efi_tmp_name
   x=$(echo " $*" | sed \
     -e "s/-efi-boot-part --efi-boot-image/-no-pad -append_partition $partno 0xef \/tmp\/$efi_tmp_name/" \
     -e "s/--efi-boot efi\.img/-eltorito-alt-boot -e --interval:appended_partition_${partno}:all:: -no-emul-boot -isohybrid-gpt-basdat/" \
@@ -207,8 +252,6 @@ then
 elif test x"$mode" = xmbr_only
 then
   # Exchange arguments for no-HFS MBR-only layout
-  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
-  mv "$dir"/efi.img /tmp/$efi_tmp_name
   x=$(echo " $*" | sed \
     -e "s/-efi-boot-part --efi-boot-image/$iso_mbr_part_type -no-pad -append_partition 2 0xef \/tmp\/$efi_tmp_name/" \
     -e "s/--efi-boot efi\.img/-eltorito-alt-boot -e --interval:appended_partition_2:all:: -no-emul-boot/" \
@@ -228,8 +271,6 @@ then
 elif test x"$mode" = xmbr_hfs
 then
   # Exchange arguments for MBR and HFS+ layout
-  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
-  mv "$dir"/efi.img /tmp/$efi_tmp_name
   x=$(echo " $*" | sed \
     -e "s/-efi-boot-part --efi-boot-image/$iso_mbr_part_type -no-pad -append_partition 2 0xef \/tmp\/$efi_tmp_name/" \
     -e "s/--efi-boot efi\.img/-eltorito-alt-boot -e --interval:appended_partition_2:all:: -no-emul-boot/" \
@@ -247,8 +288,6 @@ then
 elif test x"$mode" = xgpt_appended
 then
   # Exchange arguments for no-HFS MBR-only layout
-  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
-  mv "$dir"/efi.img /tmp/$efi_tmp_name
   x=$(echo " $*" | sed \
     -e "s/-efi-boot-part --efi-boot-image/-no-pad -append_partition 2 0xef \/tmp\/$efi_tmp_name -appended_part_as_gpt -partition_offset 16/" \
     -e "s/--efi-boot efi\.img/-eltorito-alt-boot -e --interval:appended_partition_2:all:: -no-emul-boot/" \

debug log:

solving a719ca1f89 ...
found a719ca1f89 in https://git.savannah.gnu.org/cgit/guix.git

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.