#!/bin/bash # addseabios script: add SeaBIOS to the ROM images. # This also adds SeaVGABIOS, SeaBIOS's free/libre video bios "wrapper" for coreboot native graphics # # 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 echo "Adding SeaBIOS and SeaVGABIOS to the ROM's" # Because the DEBLOB script isn't included in the binary archives. # This is how we know. if [ -f "DEBLOB" ]; then echo "Do not run this in meta/src directory. Do it in binary archive, either with libreboot-supplied ROM images or your own binary archive created with 'build-release'." exit 1 fi if [ $(uname -i) = "i686" ] || [ $(uname -i) = "i686" ] then echo "You are on an i686 host" if [ ! -f "cbfstool/i686/cbfstool" ]; then echo "cbfstool binary not found. You will need to build it from source and put it in cbfstool/i686/" exit 1 fi $cbfstool = "../cbfstool/i686/cbfstool" elif [ $(uname -i) = "x86_64" ] || [ $(uname -i) = "x86_64" ] then echo "You are on an x86_64 host" if [ ! -f "cbfstool/x86_64/cbfstool" ]; then echo "cbfstool binary not found. You will need to build it from source and put it in cbfstool/x86_64/" exit 1 fi $cbfstool = "../cbfstool/x86_64/cbfstool" else echo "You need to run this script on an i686 or x86_64 host" exit 1 fi # Add SeaBIOS and SeaVGABIOS to *all* ROM's cd bin/ for rom in $(find -type f) do # Add them $cbfstool $rom add -f ../vgabios.bin -n vgaroms/vgabios.bin -t raw $cbfstool $rom add -f ../bios.bin.elf -n bios.bin.elf -t raw # Modify the GRUB configuration for config in grub.cfg grubtest.cfg do # Extract (dump) the config $cbfstool $rom extract -n $config -f $config # Delete it from the ROM $cbfstool $rom remove -n $config # Add the menuentry for loading SeaBIOS cat seabios.cfg >> $config # Re-add the newly modified GRUB configuration to the ROM $cbfstool $rom add -f $config -n $config -t raw # The GRUB configuration is no longer needed rm -rf $config done done cd ../ echo "DONE! All of the ROM's under bin/ have been modified to include SeaBIOS/SeaVGABIOS and include a GRUB menuentry for it."