diff options
Diffstat (limited to 'script/build/grub')
-rwxr-xr-x | script/build/grub/payload | 79 |
1 files changed, 31 insertions, 48 deletions
diff --git a/script/build/grub/payload b/script/build/grub/payload index 63849bac..f8a49b64 100755 --- a/script/build/grub/payload +++ b/script/build/grub/payload @@ -24,7 +24,6 @@ set -u -e . "include/err.sh" grubcfgsdir="resources/grub" -keymap="" . "${grubcfgsdir}/modules.list" @@ -34,13 +33,40 @@ main() handle_dependencies - # Separate GRUB payload per keymap to save space in ROM. - for keylayoutfile in ${grubcfgsdir}/keymap/*.gkb; do + for keylayoutfile in "${grubcfgsdir}/keymap/"*.gkb; do [ -f "${keylayoutfile}" ] || continue - build_grub_payloads "${keylayoutfile}" + keymap="${keylayoutfile##${grubcfgsdir}/keymap/}" + keymap="${keymap%.gkb}" + printf "keymap %s\n" "${keymap}" > \ + "elf/grub/keymap_${keymap}.cfg" || \ + err "make_keymapcfgs: cannot create elf/grub/keymap_${keymap}.cfg" done - printf "Done! Check elf/grub/ to see the files.\n\n" + grub/grub-mkstandalone \ + --grub-mkimage="grub/grub-mkimage" \ + -O i386-coreboot \ + -o "elf/grub/grub.elf" \ + -d grub/grub-core/ \ + --fonts= --themes= --locales= \ + --modules="${grub_modules}" \ + --install-modules="${grub_install_modules}" \ + "/boot/grub/layouts/colemak.gkb=${grubcfgsdir}/keymap/colemak.gkb" \ + "/boot/grub/layouts/deqwertz.gkb=${grubcfgsdir}/keymap/deqwertz.gkb" \ + "/boot/grub/layouts/esqwerty.gkb=${grubcfgsdir}/keymap/esqwerty.gkb" \ + "/boot/grub/layouts/frazerty.gkb=${grubcfgsdir}/keymap/frazerty.gkb" \ + "/boot/grub/layouts/frdvbepo.gkb=${grubcfgsdir}/keymap/frdvbepo.gkb" \ + "/boot/grub/layouts/itqwerty.gkb=${grubcfgsdir}/keymap/itqwerty.gkb" \ + "/boot/grub/layouts/svenska.gkb=${grubcfgsdir}/keymap/svenska.gkb" \ + "/boot/grub/layouts/trqwerty.gkb=${grubcfgsdir}/keymap/trqwerty.gkb" \ + "/boot/grub/layouts/ukdvorak.gkb=${grubcfgsdir}/keymap/ukdvorak.gkb" \ + "/boot/grub/layouts/ukqwerty.gkb=${grubcfgsdir}/keymap/ukqwerty.gkb" \ + "/boot/grub/layouts/usdvorak.gkb=${grubcfgsdir}/keymap/usdvorak.gkb" \ + "/boot/grub/layouts/usqwerty.gkb=${grubcfgsdir}/keymap/usqwerty.gkb" \ + "/boot/grub/grub.cfg=${grubcfgsdir}/config/grub_memdisk.cfg" \ + "/boot/grub/grub_default.cfg=${grubcfgsdir}/config/grub.cfg" \ + err "build_grub_elf: cannot build grub payload (grub-mkstandalone)" + + printf "\nDone! Check elf/grub/\n\n" } handle_dependencies() @@ -58,47 +84,4 @@ handle_dependencies() err "handle_dependencies: cannot rm inside: elf/grub/" } -build_grub_payloads() -{ - keylayoutfile=${1} - [ -f "${keylayoutfile}" ] || continue - - keymap="${keylayoutfile##${grubcfgsdir}/keymap/}" - keymap="${keymap%.gkb}" - - build_grub_elf "${keylayoutfile}" - create_grub_config - - printf "Created 'elf/grub/grub_%s.elf' and configs.'\n" "${keymap}" -} - -build_grub_elf() -{ - keylayoutfile=${1} - - gcfg="/boot/grub/grub.cfg=${grubcfgsdir}" - gcfg="${gcfg}/config/grub_memdisk.cfg" - grubk="/boot/grub/layouts/${keymap}.gkb=${keylayoutfile}" - grub/grub-mkstandalone \ - --grub-mkimage="grub/grub-mkimage" \ - -O i386-coreboot \ - -o "elf/grub/grub_${keymap}.elf" \ - -d grub/grub-core/ \ - --fonts= --themes= --locales= \ - --modules="${grub_modules}" \ - --install-modules="${grub_install_modules}" \ - "${gcfg}" "${grubk}" || \ - err "build_grub_elf: cannot build grub payload (grub-mkstandalone)" -} - -create_grub_config() -{ - sed "s/usqwerty/${keymap}/" < "${grubcfgsdir}/config/grub.cfg" \ - > "elf/grub/grub_${keymap}.cfg" || \ - err "create_grub_config: sed failed: grub.cfg" - sed "s/grubtest.cfg/grub.cfg/" < "elf/grub/grub_${keymap}.cfg" \ - > "elf/grub/grub_${keymap}_test.cfg" || \ - err "create_grub_config: sed failed: grubtest.cfg" -} - main $@ |