diff options
-rwxr-xr-x | resources/scripts/build/boot/roms_helper | 106 |
1 files changed, 50 insertions, 56 deletions
diff --git a/resources/scripts/build/boot/roms_helper b/resources/scripts/build/boot/roms_helper index 90cde2ed..92799801 100755 --- a/resources/scripts/build/boot/roms_helper +++ b/resources/scripts/build/boot/roms_helper @@ -86,14 +86,14 @@ uboot_config="undefined" if [ "${grub_scan_disk}" = "undefined" ]; then printf "build/roms: Target '%s' does not define grub_scan_disk. " \ - ${board} + ${board} printf "Defaulting to 'both'.\n" grub_scan_disk="both" fi if [ "${grub_scan_disk}" != "both" ] && \ - [ "${grub_scan_disk}" != "ata" ] && \ - [ "${grub_scan_disk}" != "ahci" ]; then + [ "${grub_scan_disk}" != "ata" ] && \ + [ "${grub_scan_disk}" != "ahci" ]; then printf "build/roms: Target '%s' defines bad grub_scan_disk option. " \ ${board} printf "Defaulting to 'both'.\n" @@ -266,7 +266,6 @@ if [ "${payload_grub}" = "y" ] \ rm -Rf payload/grub/ # just in case fi for keymapfile in ${kmapdir}/*; do - if [ ! -f "${keymapfile}" ]; then continue fi @@ -305,19 +304,20 @@ fi # it is assumed that no other work will be done on the ROM # after calling this function. therefore this function is "final" -moverom() { +moverom() +{ rompath="$1" - newrompath="$2" + _newrom="$2" cuttype="$3" - printf "\nCreating new ROM image: %s\n" "${newrompath}" + printf "\nCreating new ROM image: %s\n" "${_newrom}" if [ "${cuttype}" = "4MiB IFD BIOS region" ]; then - dd if=${rompath} of=${newrompath} bs=1 \ + dd if=${rompath} of=${_newrom} bs=1 \ skip=$(($(stat -c %s ${rompath}) - 0x400000)) \ count=4194304 else - cp ${rompath} ${newrompath} + cp ${rompath} ${_newrom} fi for romsize in 4 8 16; do @@ -326,7 +326,7 @@ moverom() { if [ ! -f "${ifdgbe}" ]; then ./build descriptors ich9m fi - dd if=${ifdgbe} of=${newrompath} bs=1 count=12k \ + dd if=${ifdgbe} of=${_newrom} bs=1 count=12k \ conv=notrunc fi cmpstr="${romsize}MiB ICH9 IFD NOGBE NOR flash" @@ -335,24 +335,25 @@ moverom() { if [ ! -f "${ifdgbe}" ]; then ./build descriptors ich9m fi - dd if=${ifdgbe} of=${newrompath} bs=1 count=4k \ + dd if=${ifdgbe} of=${_newrom} bs=1 count=4k \ conv=notrunc fi done if [ "${cuttype}" = "i945 laptop" ]; then - dd if=${newrompath} of=top64k.bin bs=1 \ - skip=$(($(stat -c %s ${newrompath}) - 0x10000)) \ - count=64k - dd if=top64k.bin of=${newrompath} bs=1 \ - seek=$(($(stat -c %s ${newrompath}) - 0x20000)) \ - count=64k conv=notrunc + dd if=${_newrom} of=top64k.bin bs=1 \ + skip=$(($(stat -c %s ${_newrom}) - 0x10000)) \ + count=64k + dd if=top64k.bin of=${_newrom} bs=1 \ + seek=$(($(stat -c %s ${_newrom}) - 0x20000)) \ + count=64k conv=notrunc rm -f top64k.bin fi } # expected: configs must not specify a payload -mkCoreboot() { +mkCoreboot() +{ cbdir="${1}" # eg. coreboot/default cbcfgpath="${2}" # eg. resources/coreboot/e6400nvidia_4mb/config/normal if [ ! -f "${cbcfgpath}" ]; then @@ -385,7 +386,8 @@ mkCoreboot() { } # make a rom in /tmp/ and then print the path of that ROM -mkSeabiosRom() { +mkSeabiosRom() +{ target_cbrom="${1}" # rom to insert seabios in. will not be touched # (a tmpfile will be made instead) target_seabios_cbfs_path="${2}" # e.g. fallback/payload @@ -401,24 +403,22 @@ mkSeabiosRom() { "${cbfstool}" "${tmprom}" add-payload -f "${target_seabioself}" \ -n ${target_seabios_cbfs_path} -c lzma || exit 1 - "${cbfstool}" "${tmprom}" add-int -i 3000 -n etc/ps2-keyboard-spinup \ || exit 1 if [ "${target_initmode}" = "normal" ] \ || [ "${target_initmode}" = "libgfxinit" ]; then "${cbfstool}" "${tmprom}" add-int -i 2 \ - -n etc/pci-optionrom-exec || exit 1 + -n etc/pci-optionrom-exec || exit 1 elif [ "${target_initmode}" = "vgarom" ]; then # coreboot executes it "${cbfstool}" "${tmprom}" add-int -i 0 \ - -n etc/pci-optionrom-exec || exit 1 + -n etc/pci-optionrom-exec || exit 1 fi # for undefined modes, don't add this integer. use SeaBIOS defaults "${cbfstool}" "${tmprom}" add-int -i 0 -n etc/optionroms-checksum \ - || exit 1 - + || exit 1 "${cbfstool}" "${tmprom}" add-int -i ${target_opromloadonly} \ - -n etc/only-load-option-roms || exit 1 + -n etc/only-load-option-roms || exit 1 if [ "${target_initmode}" = "libgfxinit" ]; then "${cbfstool}" "${tmprom}" add -f "${target_seavgabios_rom}" \ @@ -429,7 +429,8 @@ mkSeabiosRom() { } # make a rom in /tmp/ and then print the path of that ROM -mkUbootRom() { +mkUbootRom() +{ target_cbrom="${1}" # rom to insert u-boot in. it won't be touched # (a tmpfile will be made instead) target_uboot_cbfs_path="${2}" # e.g. fallback/payload @@ -458,7 +459,8 @@ mkUbootRom() { } # make a rom in /tmp/ and then print the path of that ROM -mkGrubRom() { +mkGrubRom() +{ target_keymap="${1}" target_cbrom="${2}" target_grubelf_cbfs_path="${3}" # e.g. fallback/payload @@ -496,7 +498,6 @@ mkGrubRom() { "${cbfstool}" "${tmprom}" add -f "${tmpgrubcfg}" -n grub.cfg -t raw \ || exit 1 - "${cbfstool}" "${tmprom}" add -f "${tmpgrubtestcfg}" -n grubtest.cfg \ -t raw || exit 1 rm -f "${tmpgrubcfg}" "${tmpgrubtestcfg}" @@ -514,7 +515,8 @@ mkGrubRom() { } # Make separate ROM images with GRUB payload, for each supported keymap -mkRomsWithGrub() { +mkRomsWithGrub() +{ tmprompath="${1}" initmode="${2}" displaymode="${3}" @@ -524,19 +526,18 @@ mkRomsWithGrub() { y=${seabios_opromloadonly} z=${initmode} if [ "${payload_grub_withseabios}" = "y" ] \ - && [ "${firstpayloadname}" = "grub" ]; then + && [ "${firstpayloadname}" = "grub" ]; then mv "$(mkSeabiosRom "${x}" "seabios.elf" "${y}" "${z}")" \ "${tmprompath}" elif [ "${payload_seabios_withgrub}" ] \ - && [ "${firstpayloadname}" != "grub" ]; then + && [ "${firstpayloadname}" != "grub" ]; then mv "$(mkSeabiosRom "${x}" "fallback/payload" "$y" "$z")" \ "${tmprompath}" fi keymaps="" if [ -z ${keyboard_layouts} ]; then - for kmapfile in "${kmapdir}"/* - do + for kmapfile in "${kmapdir}"/*; do keymaps="${keymaps} ${kmapfile}" done else @@ -545,8 +546,6 @@ mkRomsWithGrub() { done fi for keymapfile in ${keymaps}; do - echo "keymaps is $keymaps, keymapfile is $keymapfile" - if [ ! -f "${keymapfile}" ]; then continue fi @@ -563,24 +562,22 @@ mkRomsWithGrub() { x=${keymap} y=${tmprompath} z=${grub_path_in_cbfs} - tmpgrubrom="$(mkGrubRom "${x}" "${y}" "${z}")" + _newrom="${romdir}/${firstpayloadname}_${board}_${initmode}_" if [ "${initmode}" = "normal" ]; then - newrompath="${romdir}/${firstpayloadname}_${board}_" - newrompath="${newrompath}${initmode}_${keymap}.rom" + _newrom="${_newrom}${keymap}.rom" else - newrompath="${romdir}/${firstpayloadname}_${board}_" - newrompath="${newrompath}${initmode}_${displaymode}_" - newrompath="${newrompath}${keymap}.rom" + _newrom="${_newrom}${displaymode}_${keymap}.rom" fi - moverom "${tmpgrubrom}" "${newrompath}" "${romtype}" + moverom "${tmpgrubrom}" "${_newrom}" "${romtype}" rm -f "${tmpgrubrom}" done } # Main ROM building function. This calls all other functions -mkRoms() { +mkRoms() +{ cbcfgpath="${1}" displaymode="${2}" initmode="${3}" @@ -607,16 +604,13 @@ mkRoms() { y=${seabios_opromloadonly} z=${initmode} t=$(mkSeabiosRom "$x" "fallback/payload" "$y" "$z") - if [ "${initmode}" = "normal" ]; then - newrompath="${romdir}/seabios_${board}_" - newrompath="${newrompath}${initmode}.rom" - else - newrompath="${romdir}/seabios_${board}_" - newrompath="${newrompath}${initmode}_" - newrompath="${newrompath}${displaymode}.rom" + + _newrom="${romdir}/seabios_${board}_${initmode}.rom" + if [ "${initmode}" != "normal" ]; then + _newrom="${_newrom%.rom}_${displaymode}.rom" fi - moverom "${t}" "${newrompath}" "${romtype}" + moverom "${t}" "${_newrom}" "${romtype}" rm -f "${t}" else tmprom=$(mktemp -t coreboot_rom.XXXXXXXXXX) @@ -638,13 +632,13 @@ mkRoms() { z=${cbfstool} tmpubootrom="$(mkUbootRom "$x" "fallback/payload" "$y" "$z")" if [ "${initmode}" = "normal" ]; then - newrompath="${romdir}/uboot_payload_${board}_" - newrompath="${newrompath}${initmode}.rom" + _newrom="${romdir}/uboot_payload_${board}_" + _newrom="${_newrom}${initmode}.rom" else - newrompath="${romdir}/uboot_payload_${board}_" - newrompath="${newrompath}${initmode}_${displaymode}.rom" + _newrom="${romdir}/uboot_payload_${board}_" + _newrom="${_newrom}${initmode}_${displaymode}.rom" fi - moverom "${tmpubootrom}" "${newrompath}" "${romtype}" + moverom "${tmpubootrom}" "${_newrom}" "${romtype}" rm -f "${tmpubootrom}" fi } |