kexec-parse-boot/bls: Strip boot dir from front of grub entries (#804)

Some grub configs/bls entries contain the full paths to the
kernel/initrd files, which the parsers currently fail to handle,
causing a failed boot without any useful error being presented to the user.

To fix this, strip the bootdir prefix from the menu entries when parsing,
should it exist.

Test: build/boot Librem 13v2 w/F32 and bls entries containing absolute paths.

Signed-off-by: Matt DeVillier <matt.devillier@puri.sm>
This commit is contained in:
MrChromebox 2020-08-24 15:42:33 -05:00 committed by GitHub
parent f23ced0a3b
commit a075347351
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 4 deletions

View File

@ -67,10 +67,10 @@ bls_entry() {
name=$val
;;
linux*)
kernel=$val
kernel=${val#"$bootdir"}
;;
initrd*)
initrd=$val
initrd=${val#"$bootdir"}
;;
options)
# default is "options $kernelopts"

View File

@ -170,11 +170,11 @@ syslinux_entry() {
state="search"
;;
*)
kernel="$val"
kernel="${val#"$bootdir"}"
esac
;;
initrd* | INITRD* )
initrd="$val"
initrd="${val#"$bootdir"}"
;;
append* | APPEND* )
if [ "$kexectype" = "multiboot" -o "$kexectype" = "xen" ]; then