From da0b13bc655a4dab57d28697e73b1d44fa611cf3 Mon Sep 17 00:00:00 2001 From: Francis Rowe Date: Wed, 13 May 2015 19:27:38 +0100 Subject: Integrate SeaBIOS payload as option on top of GRUB, with SeaVGABIOS --- .gitignore | 1 + docs/maintain/index.html | 36 +++++++++ resources/grub/config/menuentries/common.cfg | 4 + resources/scripts/helpers/build/clean/seabios | 40 ++++++++++ .../scripts/helpers/build/config/seabiosmodify | 38 +++++++++ .../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(+) create mode 100644 resources/scripts/helpers/build/clean/seabios create mode 100755 resources/scripts/helpers/build/config/seabiosmodify create mode 100755 resources/scripts/helpers/build/config/seabiosupdate create mode 100755 resources/scripts/helpers/build/module/seabios create mode 100755 resources/scripts/helpers/download/seabios create mode 100644 resources/seabios/config/config diff --git a/.gitignore b/.gitignore index 86de641d..d94ae446 100644 --- 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 index 0dc95654..3a0da0ae 100644 --- a/docs/maintain/index.html +++ b/docs/maintain/index.html @@ -60,6 +60,9 @@
  • Updating MemTest86+
  • +
  • + SeaBIOS +
  • @@ -596,6 +599,39 @@

    + +
    + +

    SeaBIOS

    + +

    + Create the SeaBIOS config like so (changed from defaults):
    + $ ./build config seabiosmodify +

    +
    +General Features -> Build Target -> Build for coreboot (enable)
    +VGA ROM -> VGA Hardware Type -> coreboot linear framebuffer (enable)
    +Debugging -> Serial port debugging (enable)
    +
    + +

    + When updating SeaBIOS, run the following:
    + $ ./build config seabiosupdate
    + (this will run make oldconfig on seabios) +

    + +

    + Relevant scripts: +

    + + +
    diff --git a/resources/grub/config/menuentries/common.cfg b/resources/grub/config/menuentries/common.cfg index 7b74ec3d..8573df51 100644 --- 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 new file mode 100644 index 00000000..63642634 --- /dev/null +++ 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 +# +# 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 . +# + +# 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 new file mode 100755 index 00000000..750fcad6 --- /dev/null +++ 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 +# +# 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 . +# + +# 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 new file mode 100755 index 00000000..160cb53e --- /dev/null +++ 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 +# +# 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 . +# + +# 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 new file mode 100755 index 00000000..d869c03a --- /dev/null +++ b/resources/scripts/helpers/build/module/seabios @@ -0,0 +1,49 @@ +#!/bin/bash + +# helper script: builds SeaBIOS source code +# +# Copyright (C) 2015 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 . +# + +# 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 new file mode 100755 index 00000000..e55f395e --- /dev/null +++ b/resources/scripts/helpers/download/seabios @@ -0,0 +1,59 @@ +#!/bin/bash + +# helper script: Downloads SeaBIOS and patches it. +# +# Copyright (C) 2015 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 . +# + +# 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 new file mode 100644 index 00000000..2096c922 --- /dev/null +++ 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 -- cgit v1.2.3-70-g09d2