libreboot

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit da0b13bc655a4dab57d28697e73b1d44fa611cf3
parent 479070b54390a415b77883fb88d2e0a68e212e57
Author: Francis Rowe <info@gluglug.org.uk>
Date:   Wed, 13 May 2015 19:27:38 +0100

Integrate SeaBIOS payload as option on top of GRUB, with SeaVGABIOS

Diffstat:
.gitignore | 1+
docs/maintain/index.html | 36++++++++++++++++++++++++++++++++++++
resources/grub/config/menuentries/common.cfg | 4++++
resources/scripts/helpers/build/clean/seabios | 40++++++++++++++++++++++++++++++++++++++++
resources/scripts/helpers/build/config/seabiosmodify | 38++++++++++++++++++++++++++++++++++++++
resources/scripts/helpers/build/config/seabiosupdate | 36++++++++++++++++++++++++++++++++++++
resources/scripts/helpers/build/module/seabios | 49+++++++++++++++++++++++++++++++++++++++++++++++++
resources/scripts/helpers/download/seabios | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
resources/seabios/config/config | 89+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 352 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -9,6 +9,7 @@ /flashrom/ /grub/ /memtest86plus/ +/seabios/ /bin/ /release/ /resources/utilities/ich9deblob/*.rom diff --git a/docs/maintain/index.html b/docs/maintain/index.html @@ -60,6 +60,9 @@ <li> <a href="#updating_memtest86plus">Updating MemTest86+</a> </li> + <li> + <a href="#seabios">SeaBIOS</a> + </li> </ul> <p> @@ -596,6 +599,39 @@ </p> </div> + + <div class="section"> + + <h1 id="seabios">SeaBIOS</h1> + + <p> + Create the SeaBIOS config like so (changed from defaults):<br/> + $ <b>./build config seabiosmodify</b> + </p> +<pre> +General Features -&gt; Build Target -&gt; Build for coreboot (enable) +VGA ROM -&gt; VGA Hardware Type -&gt; coreboot linear framebuffer (enable) +Debugging -&gt; Serial port debugging (enable) +</pre> + + <p> + When updating SeaBIOS, run the following:<br/> + $ <b>./build config seabiosupdate</b><br/> + (this will run <b>make oldconfig</b> on seabios) + </p> + + <p> + Relevant scripts: + </p> + <ul> + <li>resources/scripts/helpers/build/config/seabiosmodify</li> + <li>resources/scripts/helpers/build/config/seabiosupdate</li> + <li>resources/scripts/helpers/download/seabios (change patches used, revision, etc)</li> + <li>resources/scripts/helpers/build/clean/seabios</li> + <li>resources/scripts/helpers/build/module/seabios</li> + </ul> + + </div> <div class="section"> diff --git a/resources/grub/config/menuentries/common.cfg b/resources/grub/config/menuentries/common.cfg @@ -135,3 +135,7 @@ menuentry 'Poweroff [P]' --hotkey='p' --hotkey='P' { menuentry 'Reboot [R]' --hotkey='r' --hotkey='R' { reboot } +menuentry 'Load SeaBIOS' { + set root='cbfsdisk' + chainloader /bios.bin.elf +} diff --git a/resources/scripts/helpers/build/clean/seabios b/resources/scripts/helpers/build/clean/seabios @@ -0,0 +1,40 @@ +#!/bin/bash + +# helper script: clean the dependencies that were built in seabios +# +# Copyright (C) 2015 Francis Rowe <info@gluglug.org.uk> +# +# 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 <http://www.gnu.org/licenses/>. +# + +# This script assumes that the current working directory is the root +# of libreboot_src or libreboot git + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +# clean bucts +# -------------------------------------------------------- + +printf "Cleaning the previous build of seabios\n" + +cd seabios/ +make clean + +printf "\n\n" + +# done. go back to main directory. +cd ../ + +# ------------------- DONE ---------------------- diff --git a/resources/scripts/helpers/build/config/seabiosmodify b/resources/scripts/helpers/build/config/seabiosmodify @@ -0,0 +1,38 @@ +#!/bin/bash + +# +# helper script: update the seabios config +# +# Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk> +# +# 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 <http://www.gnu.org/licenses/>. +# + +# This script assumes that the working directory is the root +# of libreboot_src or git + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +cd seabios/ + +if [ -f ../resources/seabios/config/config ]; then + cp ../resources/seabios/config/config .config +fi + +make menuconfig + +mv .config ../resources/seabios/config/config + +cd ../ diff --git a/resources/scripts/helpers/build/config/seabiosupdate b/resources/scripts/helpers/build/config/seabiosupdate @@ -0,0 +1,36 @@ +#!/bin/bash + +# +# helper script: update the seabios config +# +# Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk> +# +# 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 <http://www.gnu.org/licenses/>. +# + +# This script assumes that the working directory is the root +# of libreboot_src or git + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +cd seabios/ + +if [ -f ../resources/seabios/config/config ]; then + cp ../resources/seabios/config/config .config + make oldconfig + mv .config ../resources/seabios/config/config +fi + +cd ../ diff --git a/resources/scripts/helpers/build/module/seabios b/resources/scripts/helpers/build/module/seabios @@ -0,0 +1,49 @@ +#!/bin/bash + +# helper script: builds SeaBIOS source code +# +# Copyright (C) 2015 Francis Rowe <info@gluglug.org.uk> +# +# 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 <http://www.gnu.org/licenses/>. +# + +# This script assumes that the working directory is the root +# of libreboot_src or git + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +# Build SeaBIOS +# --------------------------------------------------------------------- + +printf "Building SeaBIOS\n" + +cd seabios/ + +cp ../resources/seabios/config/config .config + +# clean it first +[[ -f Makefile ]] && make clean + +# build SeaBIOS +make + +printf "\n\n" + +rm -f .config + +# done. go back to main directory +cd ../ + +# ------------------- DONE ---------------------- diff --git a/resources/scripts/helpers/download/seabios b/resources/scripts/helpers/download/seabios @@ -0,0 +1,59 @@ +#!/bin/bash + +# helper script: Downloads SeaBIOS and patches it. +# +# Copyright (C) 2015 Francis Rowe <info@gluglug.org.uk> +# +# 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 <http://www.gnu.org/licenses/>. +# + +# This script assumes that the working directory is the +# root of libreboot_src or libreboot git. + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +# Get GRUB, revert to commit last used and apply patches. + +# Remove the old version that may still exist +# ------------------------------------------------------------------------------ + +printf "Downloading GRUB\n" + +rm -rf seabios + +# Get latest GRUB +# ------------------------------------------------------------------------------ + +# download it using git +git clone git://git.seabios.org/seabios.git seabios + +# modifications are required +cd seabios/ + +# Reset to the last commit that was tested +# ------------------------------------------------------------------------------ + +git reset --hard 92f9b9189eb00da42a8bfcf26c664f48ee8d2868 + +# Apply patches +# ------------------------------------------------------------------------------ + +# no patches are used in this revision of libreboot + +cd ../ +printf "\n\n" + +# ------------------- DONE ---------------------- + diff --git a/resources/seabios/config/config b/resources/seabios/config/config @@ -0,0 +1,89 @@ +# +# Automatically generated file; DO NOT EDIT. +# SeaBIOS Configuration +# + +# +# General Features +# +CONFIG_COREBOOT=y +# CONFIG_QEMU is not set +# CONFIG_CSM is not set +# CONFIG_QEMU_HARDWARE is not set +CONFIG_THREADS=y +CONFIG_RELOCATE_INIT=y +CONFIG_BOOTMENU=y +CONFIG_BOOTSPLASH=y +CONFIG_BOOTORDER=y +CONFIG_COREBOOT_FLASH=y +CONFIG_LZMA=y +CONFIG_CBFS_LOCATION=0 +CONFIG_FLASH_FLOPPY=y +CONFIG_ENTRY_EXTRASTACK=y +CONFIG_MALLOC_UPPERMEMORY=y +CONFIG_ROM_SIZE=0 + +# +# Hardware support +# +CONFIG_ATA=y +# CONFIG_ATA_DMA is not set +# CONFIG_ATA_PIO32 is not set +CONFIG_AHCI=y +CONFIG_MEGASAS=y +CONFIG_FLOPPY=y +CONFIG_PS2PORT=y +CONFIG_USB=y +CONFIG_USB_UHCI=y +CONFIG_USB_OHCI=y +CONFIG_USB_EHCI=y +CONFIG_USB_XHCI=y +CONFIG_USB_MSC=y +CONFIG_USB_UAS=y +CONFIG_USB_HUB=y +CONFIG_USB_KEYBOARD=y +CONFIG_USB_MOUSE=y +CONFIG_SERIAL=y +CONFIG_LPT=y +CONFIG_PMTIMER=y + +# +# BIOS interfaces +# +CONFIG_DRIVES=y +CONFIG_CDROM_BOOT=y +CONFIG_CDROM_EMU=y +CONFIG_PCIBIOS=y +CONFIG_APMBIOS=y +CONFIG_PNPBIOS=y +CONFIG_OPTIONROMS=y +CONFIG_PMM=y +CONFIG_BOOT=y +CONFIG_KEYBOARD=y +CONFIG_KBD_CALL_INT15_4F=y +CONFIG_MOUSE=y +CONFIG_S3_RESUME=y +CONFIG_VGAHOOKS=y +# CONFIG_DISABLE_A20 is not set + +# +# VGA ROM +# +# CONFIG_NO_VGABIOS is not set +# CONFIG_VGA_GEODEGX2 is not set +# CONFIG_VGA_GEODELX is not set +CONFIG_VGA_COREBOOT=y +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_EMULATE_TEXT=y +CONFIG_VGA_FIXUP_ASM=y +CONFIG_VGA_ALLOCATE_EXTRA_STACK=y +CONFIG_VGA_EXTRA_STACK_SIZE=512 +CONFIG_VGA_VBE=y + +# +# Debugging +# +CONFIG_DEBUG_LEVEL=1 +CONFIG_DEBUG_SERIAL=y +CONFIG_DEBUG_SERIAL_PORT=0x3f8 +CONFIG_DEBUG_COREBOOT=y