#!/bin/sh set -e COMMAND="$1" KVER="$2" ESP_MOUNTPOINT=/boot/efi EFI_DIR="$ESP_MOUNTPOINT/qubes" if [ ! -d "$EFI_DIR" ]; then # non-EFI system exit 0; fi case "$COMMAND" in add) # take the default section and use it as a template for the new entry awk -F = --assign "kver=${KVER}" ' /^\[/ { # section header - previous section (if any) ended # if default section already processed, that is all if (in_default) exit; in_global=0; in_default=0; } /\[global\]/ { in_global=1; } /^\[/ { if ("[" default_name "]" == $0) { in_default=1; print "[" kver "]"; next; } } /^default=/ { if (in_global) default_name=$2; } /^kernel=/ { if (in_default) { sub("=[^ ]*", "=vmlinuz-" kver); } } /^ramdisk=/ { if (in_default) { sub("=[^ ]*", "=initramfs-" kver ".img"); } } { if (in_default) { print; } }' $EFI_DIR/xen.cfg >> $EFI_DIR/xen.cfg # then change the default sed -e "s/default=.*/default=$KVER/" -i $EFI_DIR/xen.cfg dracut -f "$EFI_DIR/initramfs-${KVER}.img" "$KVER" ;; remove) # don't care about changing default= line - yum should prevent removing # currently running kernel awk -F = --assign "kver=${KVER}" ' /^\[/ { # section header - previous section (if any) ended in_current=0; } /^\[/ { if ($0 == "[" kver "]") in_current=1; } { if (!in_current) { print; } }' $EFI_DIR/xen.cfg > $EFI_DIR/xen.cfg.new mv $EFI_DIR/xen.cfg.new $EFI_DIR/xen.cfg rm -f "$EFI_DIR/initramfs-${KVER}.img" ;; esac