[pve-devel] [PATCH pve-kernel-meta v3 2/8] proxmox-boot: add reinit subcommand
Stoiko Ivanov
s.ivanov at proxmox.com
Fri Mar 11 20:05:40 CET 2022
to iterate over all configured ESPs and refresh the boot-loader
installations.
the init function was changed to not run refresh directly - to prevent
refresh from running once for each ESP
currently reinit does not imply refresh
Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
---
bin/grub-install-wrapper | 19 ++-----------------
bin/proxmox-boot-tool | 41 ++++++++++++++++++++++++++++++++++++----
2 files changed, 39 insertions(+), 21 deletions(-)
diff --git a/bin/grub-install-wrapper b/bin/grub-install-wrapper
index 9facd04..90c144e 100755
--- a/bin/grub-install-wrapper
+++ b/bin/grub-install-wrapper
@@ -2,22 +2,6 @@
set -e
-. /usr/share/pve-kernel-helper/scripts/functions
-
-init_boot_disks() {
- if ! (echo "${curr_uuid}" | grep -qE '[0-9a-fA-F]{4}-[0-9a-fA-F]{4}'); then
- warn "WARN: ${curr_uuid} read from ${ESP_LIST} does not look like a VFAT-UUID - skipping"
- return
- fi
-
- path="/dev/disk/by-uuid/$curr_uuid"
- if [ ! -e "${path}" ]; then
- warn "WARN: ${path} does not exist - clean '${ESP_LIST}'! - skipping"
- return
- fi
- proxmox-boot-tool init "$path"
-}
-
if proxmox-boot-tool status --quiet; then
# detect when being called by dpkg (e.g. grub-pc.postinst
if [ -n "$DPKG_RUNNING_VERSION" ] && echo "$DPKG_MAINTSCRIPT_PACKAGE" | grep -sq "^grub-"; then
@@ -28,7 +12,8 @@ if proxmox-boot-tool status --quiet; then
MARKER_FILE="/tmp/proxmox-boot-tool.dpkg.marker"
if [ ! -e "$MARKER_FILE" ]; then
warn "This system is booted via proxmox-boot-tool, running proxmox-boot-tool init for all configured bootdisks"
- loop_esp_list init_boot_disks
+ proxmox-boot-tool reinit
+ proxmox-boot-tool refresh
touch "$MARKER_FILE"
exit 0
else
diff --git a/bin/proxmox-boot-tool b/bin/proxmox-boot-tool
index fb4e320..4ca3025 100755
--- a/bin/proxmox-boot-tool
+++ b/bin/proxmox-boot-tool
@@ -124,7 +124,7 @@ format() {
exit 0
}
-init() {
+init_bootloader() {
part="$1"
_get_partition_info "$part"
@@ -174,8 +174,20 @@ init() {
echo "Adding '$part' to list of synced ESPs.."
_add_entry_to_list_file "$ESP_LIST" "$UUID"
- echo "Refreshing kernels and initrds.."
- refresh
+}
+
+reinit() {
+ if ! (echo "${curr_uuid}" | grep -qE '[0-9a-fA-F]{4}-[0-9a-fA-F]{4}'); then
+ warn "WARN: ${curr_uuid} read from ${ESP_LIST} does not look like a VFAT-UUID - skipping"
+ return
+ fi
+
+ path="/dev/disk/by-uuid/$curr_uuid"
+ if [ ! -e "${path}" ]; then
+ warn "WARN: ${path} does not exist - clean '${ESP_LIST}'! - skipping"
+ return
+ fi
+ init_bootloader "$path"
}
_clean_impl() {
@@ -313,6 +325,9 @@ usage() {
if [ -z "$subcmd" ] || [ "$subcmd" = "init" ]; then
warn " $0 init <partition>"
fi
+ if [ -z "$subcmd" ] || [ "$subcmd" = "reinit" ]; then
+ warn " $0 reinit"
+ fi
if [ -z "$subcmd" ] || [ "$subcmd" = "clean" ]; then
warn " $0 clean [--dry-run]"
fi
@@ -342,6 +357,10 @@ help() {
echo ""
echo " initialize EFI system partition at <partition> for automatic synchronization of pve-kernels and their associated initrds."
echo ""
+ echo "USAGE: $0 reinit"
+ echo ""
+ echo " reinitialize all configured EFI system partitions from $ESP_LIST."
+ echo ""
echo "USAGE: $0 clean [--dry-run]"
echo ""
echo " remove no longer existing EFI system partition UUIDs from $ESP_LIST. Use --dry-run to only print outdated entries instead of removing them."
@@ -524,7 +543,21 @@ case "$1" in
usage "init"
exit 1
fi
- init "$@"
+ init_bootloader "$@"
+ echo "Refreshing kernels and initrds.."
+ refresh
+ exit 0
+ ;;
+ 'reinit')
+ reexec_in_mountns "$@"
+ shift
+ if [ "$#" -eq 1 ]; then
+ warn "E: no arguments allowed."
+ warn ""
+ usage "reinit"
+ exit 1
+ fi
+ loop_esp_list reinit "$@"
exit 0
;;
'clean')
--
2.30.2
More information about the pve-devel
mailing list