#!/bin/bash # # build script: builds the ROM images with GRUB payloads and puts them in ./bin/ # # Copyright (C) 2014 Francis Rowe # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # set -u -e -v # Build the ROM's # MAKE SURE THAT YOU RAN "buildall" OR "builddeps" *AT LEAST ONCE* # BEFORE RUNNING THIS! # Put GRUB payloads and config files # in the coreboot directory, ready for next step cd coreboot/ for romtype in txtmode vesafb do cd ../resources/utilities/grub-assemble ./gen."$romtype".sh rm -f ../../../coreboot/grub_"$romtype".elf mv grub_"$romtype".elf ../../../coreboot/ cd ../../../coreboot # GRUB configuration files for keymap in $(ls ../resources/utilities/grub-assemble/keymap/original) do cat ../resources/grub/config/extra/common.cfg > grub_"$keymap"_"$romtype".cfg cat ../resources/grub/config/extra/"$romtype".cfg >> grub_"$keymap"_"$romtype".cfg echo "keymap $keymap" >> grub_"$keymap"_"$romtype".cfg cat ../resources/grub/config/menuentries/common.cfg >> grub_"$keymap"_"$romtype".cfg cat ../resources/grub/config/menuentries/"$romtype".cfg >> grub_"$keymap"_"$romtype".cfg # grubtest.cfg should be able to switch back to grub.cfg sed 's/grubtest.cfg/grub.cfg/' < grub_"$keymap"_"$romtype".cfg > grub_"$keymap"_"$romtype"_test.cfg done done cd ../ # Build ROM images for supported boards for board in x60 t60 x60t macbook21 do ./buildrom-withgrub $board done # Needed on i945 systems for the bucts/dd trick (documented) # This enables the ROM to be flashed over the lenovo bios firmware for i945board in x60 x60t t60 do cd bin/"$i945board"/ for i945rom in $(ls) do dd if="$i945rom" of=top64k.bin bs=1 skip=$[$(stat -c %s "$i945rom") - 0x10000] count=64k dd if=top64k.bin of="$i945rom" bs=1 seek=$[$(stat -c %s "$i945rom") - 0x20000] count=64k conv=notrunc rm -f top64k.bin done cd ../../ done # The GRUB payloads are no longer needed rm -f coreboot/grub_vesafb.elf rm -f coreboot/grub_txtmode.elf # The GRUB configs are no longer needed rm -f coreboot/grub*cfg # ------------------- DONE ----------------------