summaryrefslogtreecommitdiff
path: root/resources
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2021-11-01 02:51:10 +0000
committerLeah Rowe <leah@libreboot.org>2021-11-01 02:51:10 +0000
commit68d3c9372af6eda1bd122aa92e6a08c32cfa2202 (patch)
treef24e364bf374159a0aa22451f749c2348274f0a2 /resources
parentcca23ac713cdf8c5d5dfb2be68dd5e5d1e113437 (diff)
Revert "nuke memtest86+"
This reverts commit 84a1bc502b1f296d8ad6389b9e38aa3e0ca94958.
Diffstat (limited to 'resources')
-rw-r--r--resources/grub/config/grub.cfg6
-rwxr-xr-xresources/scripts/build/boot/roms_helper15
-rwxr-xr-xresources/scripts/build/clean/memtest86plus35
-rwxr-xr-xresources/scripts/build/dependencies/arch5
-rwxr-xr-xresources/scripts/build/dependencies/ubuntu20045
-rwxr-xr-xresources/scripts/build/module/memtest86plus37
-rwxr-xr-xresources/scripts/build/release/src2
-rwxr-xr-xresources/scripts/download/memtest86plus68
8 files changed, 172 insertions, 1 deletions
diff --git a/resources/grub/config/grub.cfg b/resources/grub/config/grub.cfg
index 2444422c..ef3c8a48 100644
--- a/resources/grub/config/grub.cfg
+++ b/resources/grub/config/grub.cfg
@@ -245,3 +245,9 @@ menuentry 'Load Tianocore UEFI payload' {
chainloader /tianocore.elf
}
fi
+if [ -f (cbfsdisk)/img/memtest ]; then
+menuentry 'Load MemTest86+ [m]' --hotkey='m' {
+ set root='cbfsdisk'
+ chainloader /img/memtest
+}
+fi
diff --git a/resources/scripts/build/boot/roms_helper b/resources/scripts/build/boot/roms_helper
index c493ad58..a4d5ff32 100755
--- a/resources/scripts/build/boot/roms_helper
+++ b/resources/scripts/build/boot/roms_helper
@@ -59,6 +59,7 @@ payload_seabios="n"
payload_seabios_withgrub="n" # i386-coreboot grub accessible from SeaBIOS boot menu
payload_tianocore="n"
seabios_opromloadonly="0"
+payload_memtest="n"
# Override the above defaults using board.cfg
source "resources/coreboot/${board}/board.cfg"
if [ "${cbtree}" = "undefined" ]; then
@@ -74,6 +75,10 @@ if [ "${seabios_opromloadonly}" != "0" ] && \
[ "${seabios_opromloadonly}" != "1" ]; then
seabios_opromloadonly="0"
fi
+if [ "${payload_memtest}" != "n" ] && \
+ [ "${payload_memtest}" != "y" ]; then
+ payload_memtest="n"
+fi
if [ "${payload_grub_withseabios}" = "y" ] \
|| [ "${payload_grub_withtianocore}" = "y" ]; then
payload_grub="y"
@@ -104,6 +109,12 @@ if [ "${payload_grub}" != "y" ] && [ "${payload_seabios}" != "y" ] \
done
fi
+if [ "${payload_memtest}" = "y" ]; then
+ if [ ! -f "memtest86plus/memtest" ]; then
+ ./build module memtest86plus
+ fi
+fi
+
romdir="bin/${board}"
cbdir="coreboot/${board}"
if [ "${board}" != "${cbtree}" ]; then
@@ -415,6 +426,10 @@ mkRoms() {
mkRomWithTianocoreOnly "${corebootrom}" "${initmode}"
fi
+ if [ "${displaymode}" = "txtmode" ] && [ "${payload_memtest}" = "y" ]; then
+ "${cbfstool}" "${corebootrom}" add-payload -f memtest86plus/memtest -n img/memtest -c lzma
+ fi
+
if [ "${payload_seabios}" = "y" ]; then
if [ "${payload_seabios_withgrub}" = "n" ]; then
tmpseabiosrom="$(make_seabios_rom "${corebootrom}" "fallback/payload" "${seabios_opromloadonly}" "${initmode}" "${cbfstool}")"
diff --git a/resources/scripts/build/clean/memtest86plus b/resources/scripts/build/clean/memtest86plus
new file mode 100755
index 00000000..e4d7b200
--- /dev/null
+++ b/resources/scripts/build/clean/memtest86plus
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+
+# helper script: clean the dependencies that were built in memtest86+
+#
+# Copyright (C) 2014, 2015 Leah Rowe <info@minifree.org>
+# Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>
+#
+# 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 git or release archive
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+printf "Cleaning the previous build of MemTest86+\n"
+
+[ ! -d "memtest86plus" ] && exit 0
+
+# clean MemTest86+
+make -C memtest86plus clean
+
+printf "\n\n"
diff --git a/resources/scripts/build/dependencies/arch b/resources/scripts/build/dependencies/arch
index aa98158b..c933f433 100755
--- a/resources/scripts/build/dependencies/arch
+++ b/resources/scripts/build/dependencies/arch
@@ -59,6 +59,11 @@ pacman -S --needed --noconfirm sharutils curl parted e2fsprogs unzip
# for cross-compiling ARM binaries
pacman -S --needed --noconfirm arm-none-eabi-gcc
+# Memtest86+ build dependencies
+# ------------------------------------------------------------
+
+pacman -S --needed --noconfirm base-devel python2
+
# i945-pwm build dependencies
# ------------------------------------------------------------
diff --git a/resources/scripts/build/dependencies/ubuntu2004 b/resources/scripts/build/dependencies/ubuntu2004
index a2dd721e..2082d27d 100755
--- a/resources/scripts/build/dependencies/ubuntu2004
+++ b/resources/scripts/build/dependencies/ubuntu2004
@@ -73,6 +73,11 @@ if [ "${arch}" -eq 0 ]; then
apt-get -y install lib32tinfo-dev
fi
+# Memtest86+ build dependencies
+# ------------------------------------------------------------
+
+apt-get -y install build-essential python2.7
+
# i945-pwm build dependencies
# ------------------------------------------------------------
diff --git a/resources/scripts/build/module/memtest86plus b/resources/scripts/build/module/memtest86plus
new file mode 100755
index 00000000..065eec88
--- /dev/null
+++ b/resources/scripts/build/module/memtest86plus
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+# helper script: builds memtest86+ source code
+#
+# Copyright (C) 2014, 2015, 2020 Leah Rowe <info@minifree.org>
+# Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>
+#
+# 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 git or release archive
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+# Build MemTest86+ payload
+# --------------------------------------------------------------------
+
+printf "Building MemTest86+\n"
+
+if [ ! -d "memtest86plus/" ]; then
+ ./download memtest86plus
+fi
+
+make -j$(nproc) -BC memtest86plus
diff --git a/resources/scripts/build/release/src b/resources/scripts/build/release/src
index 7b0a444a..700b3d6c 100755
--- a/resources/scripts/build/release/src
+++ b/resources/scripts/build/release/src
@@ -53,7 +53,7 @@ mkdir -p "${srcdir}/"
printf "%s" "${version}" > "${srcdir}"/version
-modlist="coreboot flashrom grub seabios ich9utils"
+modlist="coreboot flashrom grub memtest86plus seabios ich9utils"
dirlist="resources"
filelist="download build README.md COPYING Makefile update version versiondate projectname"
diff --git a/resources/scripts/download/memtest86plus b/resources/scripts/download/memtest86plus
new file mode 100755
index 00000000..6b3b68d8
--- /dev/null
+++ b/resources/scripts/download/memtest86plus
@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+
+# helper script: Downloads MemTest86+ and patches it
+#
+# Copyright (C) 2014, 2015, 2020, 2021 Leah Rowe <info@minifree.org>
+# Copyright (C) 2015 Joseph Michael Thompson <jmt@josepht.me>
+# Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>
+#
+# 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/>.
+#
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+# Get the last version of MemTest86+ used, apply patches, build it.
+
+# Remove the old version that may exist
+# ------------------------------------------------------------------------------
+
+printf "Downloading MemTest86+\n"
+
+rm -Rf "memtest86plus/"
+
+# Get latest memtest86+:
+# ------------------------------------------------------------------------------
+
+# download it using wget
+wget http://memtest.org/download/5.31b/memtest86+-5.31b.tar.gz
+
+if [ "$(sha512sum memtest86+-5.31b.tar.gz | cut -c1-128)" = "ad5891fd0c430ce7a5d0cde2d10dee20b66ad8060d47c3e70e038461d9cde3a78dfc13442b5b09da7c662741945a670353c72dbc08fd5ee8bae82256001a9541" ]; then
+ printf "Valid checksum for memtest86plus\n"
+else
+ rm -f "memtest86+-5.31b.tar.gz"
+ printf "Invalid checksum for memtest86plus, or memtest86plus not downloaded\n"
+ exit 1
+fi
+
+# extract it
+tar -xzf "memtest86+-5.31b.tar.gz"
+
+# delete the tar file (no longer needed)
+rm -f "memtest86+-5.31b.tar.gz"
+
+# make direcotory name consistent
+mv "memtest86+-5.31b/" "memtest86plus/"
+
+# Apply necessary patches
+# ------------------------------------------------------------------------------
+
+(
+cd "memtest86plus/"
+for patch in ../resources/memtest86plus/patch/*; do
+ patch < "${patch}"
+done
+)
+
+printf "\n\n"