diff options
author | Leah Rowe <leah@libreboot.org> | 2024-07-22 09:11:53 +0100 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2024-07-22 09:30:47 +0100 |
commit | f85cb69ce031759c8b4bbd9ed4eb9f0f422bde13 (patch) | |
tree | d2cbe4324e6e8b51614c258bc2de19e55aa608a9 /include/rom.sh | |
parent | 490e0186a23d66349333f3a15234bb869f2f0a90 (diff) |
rom.sh: re-add seabios-only roms and grub keymaps
this time, only handle multiple keymaps on seagrub
images. for images where seabios is first but does
not immediately load grub, whether grub is still
available in flash, just do one image (US Qwerty)
this still results in fewer images per target than
Libreboot 20240612, but should prevent most users
from being annoyed. i got a few people asking
repeatedly, and i hadn't documented yet how to add
keymap.gkb or how to remove bootorder, to get a
different keymap or disable seagrub respectively.
i anticipate that i'll get such questions a lot, even
if i do document it, so i'm reversing that decision.
it doesn't result in much extra code. the new design
in lbmk makes this sort of thing much simpler.
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'include/rom.sh')
-rw-r--r-- | include/rom.sh | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/include/rom.sh b/include/rom.sh index e47849f8..7d97e00b 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -106,14 +106,8 @@ mkcorebootbin() $dry add_seabios [ "$payload_uboot" = "y" ] && pname="uboot" && $dry add_uboot else - pname="custom" # coreboot's build system added payloads - fi - newrom="bin/$target/${pname}_${target}_$initmode$displaymode.rom" - $dry x_ mkdir -p "${newrom%/*}"; $dry x_ mv "$tmprom" "$newrom" - - [ "$XBMK_RELEASE" = "y" ] || return 0 - $dry mksha512sum "$newrom" "vendorhashes"; $dry ./vendor inject \ - -r "$newrom" -b "$target" -n nuke || $err "!nuke $newrom" + pname="custom" && cprom; : + fi; : } add_seabios() @@ -132,7 +126,7 @@ add_seabios() [ "$payload_memtest" = "y" ] && cbfs "$tmprom" \ "elf/memtest86plus/memtest.bin" img/memtest - [ "$payload_grub" = "y" ] && pname="seagrub" && add_grub; return 0 + cprom && [ "$payload_grub" = "y" ] && pname="seagrub" && add_grub; : } add_grub() @@ -142,6 +136,11 @@ add_grub() > "$TMPDIR/tmpcfg" || $err "$target: !insert scandisk" cbfs "$tmprom" "$TMPDIR/tmpcfg" scan.cfg raw cbfs "$tmprom" "$grubdata/bootorder" bootorder raw + for keymap in config/data/grub/keymap/*.gkb; do + [ -f "$keymap" ] || continue + keymap="${keymap##*/}" + cprom "${keymap%.gkb}" + done } add_uboot() @@ -151,7 +150,21 @@ add_uboot() ubootelf="$ubdir/u-boot" [ -f "$ubootelf" ] || $err "cb/$target: Can't find u-boot" - cbfs "$tmprom" "$ubootelf" "fallback/payload" + cbfs "$tmprom" "$ubootelf" "fallback/payload"; cprom +} + +cprom() +{ + newrom="bin/$target/${pname}_${target}_$initmode$displaymode.rom" + [ $# -gt 0 ] && newrom="${newrom%.rom}_$1.rom" + + x_ mkdir -p "bin/$target" + x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && \ + cbfs "$newrom" "config/data/grub/keymap/$1.gkb" keymap.gkb raw + + [ "$XBMK_RELEASE" = "y" ] || return 0 + $dry mksha512sum "$newrom" "vendorhashes"; $dry ./vendor inject \ + -r "$newrom" -b "$target" -n nuke || $err "!nuke $newrom" } mkcoreboottar() |