From: Stoiko Ivanov <s.ivanov@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [RFC pve-kernel-meta 4/5] proxmox-boot: use grub for UEFI boot
Date: Tue, 1 Feb 2022 23:03:30 +0100 [thread overview]
Message-ID: <20220201220331.3491615-5-s.ivanov@proxmox.com> (raw)
In-Reply-To: <20220201220331.3491615-1-s.ivanov@proxmox.com>
originally systemd-boot was chosen for UEFI installs because of it's
less invasive and economical configuration (add a few short files,
instead of having update-grub run through /dev a few times identifying
potentially interesting devices)
However with the change to proxmox-boot-tool and also handling
non-uefi installations we can deal with grub installed on an ESP
anyways.
This changeset changes proxmox-boot-tool to use grub for both
boot-modes, unifying the experience (e.g. not needing to check the
boot mode in order to set kernel commandline arguments)
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
bin/proxmox-boot-tool | 23 ++++++++---------------
proxmox-boot/zz-proxmox-boot | 15 ---------------
2 files changed, 8 insertions(+), 30 deletions(-)
diff --git a/bin/proxmox-boot-tool b/bin/proxmox-boot-tool
index 5397694..d8caa6b 100755
--- a/bin/proxmox-boot-tool
+++ b/bin/proxmox-boot-tool
@@ -150,26 +150,19 @@ init_bootloader() {
echo "Mounting '$part' on '$esp_mp'."
mount -t vfat "$part" "$esp_mp"
- echo "Installing systemd-boot.."
- mkdir -p "$esp_mp/$PMX_ESP_DIR"
- bootctl_args="--path ${esp_mp}"
+ echo "Installing grub x86_64 target.."
+ grub_common_args="--boot-directory ${esp_mp} --no-floppy --bootloader-id=proxmox"
+ grub_efi_args="$grub_common_args --target=x86_64-efi --efi-directory=$esp_mp"
if [ ! -d /sys/firmware/efi ]; then
- bootctl_args="${bootctl_args} --no-variables"
+ grub_efi_args="$grub_efi_args --no-nvram"
fi
- bootctl ${bootctl_args} install
- echo "Configuring systemd-boot.."
- echo "timeout 3" > "$esp_mp/$PMX_LOADER_CONF.tmp"
- echo "default proxmox-*" >> "$esp_mp/$PMX_LOADER_CONF.tmp"
- mv "$esp_mp/$PMX_LOADER_CONF.tmp" "$esp_mp/$PMX_LOADER_CONF"
+ grub-install.real ${grub_efi_args} "/dev/$PKNAME"
echo "Installing grub i386-pc target.."
- grub-install.real \
- --boot-directory $esp_mp \
- --target i386-pc \
- --no-floppy \
- --bootloader-id='proxmox' \
- "/dev/$PKNAME"
+ grub_legacy_args="$grub_common_args --target=i386-pc"
+ grub-install.real ${grub_legacy_args} "/dev/$PKNAME"
+
echo "Unmounting '$part'."
umount "$part"
diff --git a/proxmox-boot/zz-proxmox-boot b/proxmox-boot/zz-proxmox-boot
index 5609af2..60948ac 100755
--- a/proxmox-boot/zz-proxmox-boot
+++ b/proxmox-boot/zz-proxmox-boot
@@ -75,10 +75,6 @@ update_esp_func() {
{ warn "creation of mountpoint ${mountpoint} failed - skipping"; return; }
mount "${path}" "${mountpoint}" || \
{ warn "mount of ${path} failed - skipping"; return; }
- if [ ! -f "${mountpoint}/$PMX_LOADER_CONF" ]; then
- warn "${path} contains no loader.conf - skipping"
- return
- fi
if [ ! -d "${mountpoint}/grub" ]; then
warn "${path} contains no grub directory - skipping"
return
@@ -89,7 +85,6 @@ update_esp_func() {
if [ -e "${PINNED_KERNEL_CONF}" ]; then
pinned_kernel=$(get_first_line "${PINNED_KERNEL_CONF}")
fi
- set_systemd_boot_default "${mountpoint}" "${pinned_kernel}"
set_grub_default "${pinned_kernel}"
remove_old_kernels "${mountpoint}"
mount --bind "${mountpoint}" "/boot"
@@ -123,15 +118,6 @@ copy_and_config_kernels() {
warn " Copying kernel and creating boot-entry for ${kver}"
cp --preserve=timestamps "${linux_image}" "${esp}/"
cp --preserve=timestamps "${initrd}" "${esp}/"
-
- # create loader entry
- cat > "${esp}/loader/entries/proxmox-${kver}.conf" <<- EOF
- title ${LOADER_TITLE}
- version ${kver}
- options ${CMDLINE}
- linux /vmlinuz-${kver}
- initrd /initrd.img-${kver}
- EOF
done
}
@@ -146,7 +132,6 @@ remove_old_kernels() {
warn " Removing old version ${kver}"
rm -rf "${esp}/vmlinuz-${kver}"
rm -rf "${esp}/initrd.img-${kver}"
- rm -f "${esp}/loader/entries/proxmox-${kver}.conf"
done
}
--
2.30.2
next prev parent reply other threads:[~2022-02-01 22:03 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-01 22:03 [pve-devel] [RFC pve-kernel-meta 0/5] unify boot-mode config Stoiko Ivanov
2022-02-01 22:03 ` [pve-devel] [RFC pve-kernel-meta 1/5] rename pve-efiboot-manual-kernels to proxmox-boot-manual-kernels Stoiko Ivanov
2022-02-01 22:03 ` [pve-devel] [RFC pve-kernel-meta 2/5] proxmox-boot: add reinit subcommand Stoiko Ivanov
2022-02-01 22:03 ` [pve-devel] [RFC pve-kernel-meta 3/5] proxmox-boot: keep EFI and legacy bootloaders in sync Stoiko Ivanov
2022-02-01 22:03 ` Stoiko Ivanov [this message]
2022-02-01 22:03 ` [pve-devel] [RFC pve-kernel-meta 5/5] proxmox-boot: install grub in esp/EFI/BOOT/BOOTX64.EFI Stoiko Ivanov
2022-02-02 9:03 ` [pve-devel] [RFC pve-kernel-meta 0/5] unify boot-mode config Thomas Lamprecht
2022-02-02 14:28 ` Stoiko Ivanov
2022-02-02 14:42 ` Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220201220331.3491615-5-s.ivanov@proxmox.com \
--to=s.ivanov@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal