Merge pull request #1377 from tlaurion/iso_boot_debugging_and_fixes

This commit is contained in:
tlaurion 2023-04-28 16:56:21 -04:00 committed by GitHub
commit bdcc556e2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 38 additions and 10 deletions

View File

@ -61,6 +61,11 @@ adjust_cmd_line() {
adjusted_cmd_line="y"
}
if [ "$CONFIG_DEBUG_OUTPUT" = "y" ];then
#If expecting debug output, have kexec load (-l) output debug info
kexeccmd="$kexeccmd -d"
fi
module_number="1"
while read line
do
@ -76,7 +81,14 @@ do
elif [ "$kexectype" = "multiboot" ]; then
kexeccmd="$kexeccmd -l $filepath"
kexeccmd="$kexeccmd --command-line \"$restval\""
elif [ "$kexectype" = "elf" ]; then
DEBUG "kexectype= $kexectype"
DEBUG "restval= $restval"
DEBUG "filepath= $filepath"
kexeccmd="$kexeccmd -l $filepath"
DEBUG "kexeccmd= $kexeccmd"
else
DEBUG "unknown kexectype!!!!"
kexeccmd="$kexeccmd -l $filepath"
fi
fi

View File

@ -27,7 +27,7 @@ mount -t iso9660 -o loop $MOUNTED_ISO_PATH /boot \
|| die '$MOUNTED_ISO_PATH: Unable to mount /boot'
DEV_UUID=`blkid $DEV | tail -1 | tr " " "\n" | grep UUID | cut -d\" -f2`
ADD="fromiso=/dev/disk/by-uuid/$DEV_UUID/$ISO_PATH img_dev=/dev/disk/by-uuid/$DEV_UUID iso-scan/filename=/${ISO_PATH} img_loop=$ISO_PATH"
ADD="fromiso=/dev/disk/by-uuid/$DEV_UUID/$ISO_PATH img_dev=/dev/disk/by-uuid/$DEV_UUID iso-scan/filename=/${ISO_PATH} img_loop=$ISO_PATH iso=$DEV_UUID/$ISO_PATH"
REMOVE=""
paramsdir="/media/kexec_iso/$ISO_PATH"
@ -47,7 +47,7 @@ if [ -r $REMOVE_FILE ]; then
fi
# Call kexec and indicate that hashes have been verified
kexec-select-boot -b /boot -d /media -p "$paramsdir" \
DO_WITH_DEBUG kexec-select-boot -b /boot -d /media -p "$paramsdir" \
-a "$ADD" -r "$REMOVE" -c "*.cfg" -u -i
die "Something failed in selecting boot"

View File

@ -21,14 +21,20 @@ reset_entry() {
}
filedir=`dirname $file`
DEBUG "filedir= $filedir"
bootdir="${bootdir%%/}"
DEBUG "bootdir= $bootdir"
bootlen="${#bootdir}"
DEBUG "bootlen= $bootlen"
appenddir="${filedir:$bootlen}"
DEBUG "appenddir= $appenddir"
fix_path() {
path="$@"
if [ "${path:0:1}" != "/" ]; then
DEBUG "fix_path: path was $@"
path="$appenddir/$path"
DEBUG "fix_path: path is now $path"
fi
}
@ -38,7 +44,10 @@ check_path() {
local checkpath firstval
checkpath="$1"
firstval="$(echo "$checkpath" | cut -d\ -f1)"
if ! [ -r "$bootdir$firstval" ]; then return 1; fi
if ! [ -r "$bootdir$firstval" ]; then
DEBUG "$bootdir$firstval doesn't exist"
return 1;
fi
return 0
}
@ -111,6 +120,7 @@ grub_entry() {
# TODO: differentiate between Xen and other multiboot kernels
kexectype="xen"
kernel="$val"
DEBUG " grub_entry multiboot kernel= $kernel"
;;
module*)
case $val in
@ -118,6 +128,7 @@ grub_entry() {
esac
fix_path $val
modules="$modules|module $path"
DEBUG " grub_entry linux modules= $modules"
;;
linux*)
# Some configs have a device specification in the kernel
@ -125,12 +136,14 @@ grub_entry() {
# it. Keep the '/' following the device, since this
# path is relative to the device root, not the config
# location.
DEBUG " grub_entry : linux trimcmd prior of kernel/append parsing: $trimcmd"
kernel=`echo $trimcmd | sed "s/([^)]*)//g" | cut -d\ -f2`
append=`echo $trimcmd | cut -d\ -f3-`
;;
initrd*)
# Trim off device specification as above
initrd="$(echo "$val" | sed "s/([^)]*)//g")"
DEBUG " grub_entry: linux initrd= $initrd"
;;
esac
}
@ -205,17 +218,20 @@ syslinux_entry() {
state="search"
;;
*)
kernel="${val#"$bootdir"}"
kernel="$val"
DEBUG "kernel= $kernel"
esac
;;
initrd* | INITRD* )
initrd="${val#"$bootdir"}"
initrd="$val"
DEBUG "initrd= $initrd"
;;
append* | APPEND* )
if [ "$kexectype" = "multiboot" -o "$kexectype" = "xen" ]; then
syslinux_multiboot_append
else
append="$val"
DEBUG "append= $append"
fi
;;
esac

View File

@ -182,7 +182,7 @@ scan_options() {
option_file="/tmp/kexec_options.txt"
if [ -r $option_file ]; then rm $option_file; fi
for i in `find $bootdir -name "$config"`; do
kexec-parse-boot "$bootdir" "$i" >> $option_file
DO_WITH_DEBUG kexec-parse-boot "$bootdir" "$i" >> $option_file
done
# FC29/30+ may use BLS format grub config files
# https://fedoraproject.org/wiki/Changes/BootLoaderSpecByDefault

View File

@ -86,7 +86,7 @@ if [ `cat /tmp/iso_menu.txt | wc -l` -gt 0 ]; then
if [ -n "$option" ]; then
MOUNTED_ISO=$option
ISO=${option:7} # remove /media/ to get device relative path
kexec-iso-init $MOUNTED_ISO $ISO $USB_BOOT_DEV
DO_WITH_DEBUG kexec-iso-init $MOUNTED_ISO $ISO $USB_BOOT_DEV
die "Something failed in iso init"
fi
@ -95,9 +95,9 @@ fi
echo "!!! Could not find any ISO, trying bootable USB"
# Attempt to pull verified config from device
if [ -x /bin/whiptail ]; then
kexec-select-boot -b /media -c "*.cfg" -u -g -s
DO_WITH_DEBUG kexec-select-boot -b /media -c "*.cfg" -u -g -s
else
kexec-select-boot -b /media -c "*.cfg" -u -s
DO_WITH_DEBUG kexec-select-boot -b /media -c "*.cfg" -u -s
fi
die "Something failed in selecting boot"

View File

@ -11,5 +11,5 @@ if [ "$CONFIG_TPM" = "y" ]; then
tpmr extend -ix 4 -ic usb
fi
media-scan usb
DO_WITH_DEBUG media-scan usb
recovery "Something failed during USB boot"