kernel-install: add new kernel to xen.cfg for xen.efi

QubesOS/qubes-issues#794
This commit is contained in:
Marek Marczykowski-Górecki 2015-09-26 03:56:16 +02:00
parent 0e733bd0de
commit 867baa7266
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724
2 changed files with 86 additions and 0 deletions

View File

@ -151,6 +151,7 @@ install -m 644 system-config/00-qubes-ignore-devices.rules $RPM_BUILD_ROOT/etc/u
install -m 644 system-config/60-persistent-storage.rules $RPM_BUILD_ROOT/etc/udev/rules.d/ install -m 644 system-config/60-persistent-storage.rules $RPM_BUILD_ROOT/etc/udev/rules.d/
install -m 644 -D system-config/disable-lesspipe $RPM_BUILD_ROOT/etc/profile.d/zz-disable-lesspipe install -m 644 -D system-config/disable-lesspipe $RPM_BUILD_ROOT/etc/profile.d/zz-disable-lesspipe
install -m 755 -D system-config/kernel-grub2.install $RPM_BUILD_ROOT/usr/lib/kernel/install.d/90-grub2.install install -m 755 -D system-config/kernel-grub2.install $RPM_BUILD_ROOT/usr/lib/kernel/install.d/90-grub2.install
install -m 755 -D system-config/kernel-xen-efi.install $RPM_BUILD_ROOT/usr/lib/kernel/install.d/90-xen-efi.install
install -m 755 -D system-config/kernel-remove-bls.install $RPM_BUILD_ROOT/usr/lib/kernel/install.d/99-remove-bls.install install -m 755 -D system-config/kernel-remove-bls.install $RPM_BUILD_ROOT/usr/lib/kernel/install.d/99-remove-bls.install
### Icons ### Icons
@ -276,6 +277,7 @@ chmod -x /etc/grub.d/10_linux
%files kernel-install %files kernel-install
/usr/lib/kernel/install.d/90-grub2.install /usr/lib/kernel/install.d/90-grub2.install
/usr/lib/kernel/install.d/90-xen-efi.install
/usr/lib/kernel/install.d/99-remove-bls.install /usr/lib/kernel/install.d/99-remove-bls.install
%changelog %changelog

View File

@ -0,0 +1,84 @@
#!/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