4d4e7cc5e9
The entry may be already present for example when reinstalling package, or calling the script multiple times (which apparently is the case during system installation).
90 lines
2.5 KiB
Bash
Executable File
90 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
COMMAND="$1"
|
|
KVER="$2"
|
|
|
|
ESP_MOUNTPOINT=/boot/efi
|
|
EFI_DIR="$ESP_MOUNTPOINT/EFI/qubes"
|
|
|
|
if [ ! -d "$EFI_DIR" ]; then
|
|
# non-EFI system
|
|
exit 0;
|
|
fi
|
|
|
|
case "$COMMAND" in
|
|
add)
|
|
if ! fgrep -q "[${KVER}]" $EFI_DIR/xen.cfg; then
|
|
# 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
|
|
fi
|
|
|
|
cp "/boot/vmlinuz-$KVER" "$EFI_DIR/"
|
|
dracut -f "$EFI_DIR/initramfs-${KVER}.img" "$KVER"
|
|
;;
|
|
remove)
|
|
# don't care about changing default= line - yum should prevent removing
|
|
# currently running kernel
|
|
if [ -r $EFI_DIR/xen.cfg ]; then
|
|
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
|
|
fi
|
|
rm -f "$EFI_DIR/initramfs-${KVER}.img"
|
|
;;
|
|
esac
|