index : archiso32 | |
Archlinux32 iso tools | gitolite user |
summaryrefslogtreecommitdiff |
author | nl6720 <nl6720@gmail.com> | 2022-06-21 20:45:48 +0300 |
---|---|---|
committer | nl6720 <nl6720@gmail.com> | 2022-06-24 10:38:27 +0300 |
commit | fda19075813c40ad88d690247e167cb57096c316 (patch) | |
tree | e2a7921516d8b843f7dd2a304104713eeebb8f06 /archiso | |
parent | e654106ecf5741c5abdc591ec026104eafa118a3 (diff) |
-rwxr-xr-x | archiso/mkarchiso | 26 |
diff --git a/archiso/mkarchiso b/archiso/mkarchiso index bb0524c..0c6a1ea 100755 --- a/archiso/mkarchiso +++ b/archiso/mkarchiso @@ -536,8 +536,17 @@ _make_bootmode_uefi-ia32.grub.esp() { s|%ARCH%|${arch}|g" \ "${profile}/grub/grub.cfg" > "${work_dir}/grub.cfg" - # shellcheck disable=SC2016 - printf 'configfile ${cmdpath}/grub.cfg\n' > "${work_dir}/grub-embed.cfg" + IFS='' read -r -d '' grubembedcfg <<'EOF' || true +if ! [ -d "$cmdpath" ]; then + # On some firmware, GRUB has a wrong cmdpath when booted from an optical disc. + # https://gitlab.archlinux.org/archlinux/archiso/-/issues/183 + if regexp --set=1:isodevice '^(\([^)]+\))\/?[Ee][Ff][Ii]\/[Bb][Oo][Oo][Tt]\/?$' "$cmdpath"; then + cmdpath="${isodevice}/EFI/BOOT" + fi +fi +configfile "${cmdpath}/grub.cfg" +EOF + printf '%s\n' "$grubembedcfg" > "${work_dir}/grub-embed.cfg" # Create EFI binary grub-mkstandalone -O i386-efi \ @@ -612,8 +621,17 @@ _make_bootmode_uefi-x64.grub.esp() { s|%ARCH%|${arch}|g" \ "${profile}/grub/grub.cfg" > "${work_dir}/grub.cfg" - # shellcheck disable=SC2016 - printf 'configfile ${cmdpath}/grub.cfg\n' > "${work_dir}/grub-embed.cfg" + IFS='' read -r -d '' grubembedcfg <<'EOF' || true +if ! [ -d "$cmdpath" ]; then + # On some firmware, GRUB has a wrong cmdpath when booted from an optical disc. + # https://gitlab.archlinux.org/archlinux/archiso/-/issues/183 + if regexp --set=1:isodevice '^(\([^)]+\))\/?[Ee][Ff][Ii]\/[Bb][Oo][Oo][Tt]\/?$' "$cmdpath"; then + cmdpath="${isodevice}/EFI/BOOT" + fi +fi +configfile "${cmdpath}/grub.cfg" +EOF + printf '%s\n' "$grubembedcfg" > "${work_dir}/grub-embed.cfg" # Create EFI binary grub-mkstandalone -O x86_64-efi \ |