From 68d3c9372af6eda1bd122aa92e6a08c32cfa2202 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 1 Nov 2021 02:51:10 +0000 Subject: [PATCH] Revert "nuke memtest86+" This reverts commit 84a1bc502b1f296d8ad6389b9e38aa3e0ca94958. --- .gitignore | 1 + Makefile | 1 + resources/grub/config/grub.cfg | 6 ++ resources/scripts/build/boot/roms_helper | 15 ++++ resources/scripts/build/clean/memtest86plus | 35 ++++++++++ resources/scripts/build/dependencies/arch | 5 ++ .../scripts/build/dependencies/ubuntu2004 | 5 ++ resources/scripts/build/module/memtest86plus | 37 ++++++++++ resources/scripts/build/release/src | 2 +- resources/scripts/download/memtest86plus | 68 +++++++++++++++++++ 10 files changed, 174 insertions(+), 1 deletion(-) create mode 100755 resources/scripts/build/clean/memtest86plus create mode 100755 resources/scripts/build/module/memtest86plus create mode 100755 resources/scripts/download/memtest86plus diff --git a/.gitignore b/.gitignore index c3f830a..6bb0a55 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ /flashrom/ /resources/coreboot/*/seen /grub/ +/memtest86plus/ /seabios/ /bin/ /release/ diff --git a/Makefile b/Makefile index c445518..6b3f503 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,7 @@ clean: ./build clean payloads ./build clean seabios ./build clean grub + ./build clean memtest86plus ./build clean rom_images ./build clean tianocore diff --git a/resources/grub/config/grub.cfg b/resources/grub/config/grub.cfg index 2444422..ef3c8a4 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 c493ad5..a4d5ff3 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 0000000..e4d7b20 --- /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 +# Copyright (C) 2015 Klemens Nanni +# +# 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 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 aa98158..c933f43 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 a2dd721..2082d27 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 0000000..065eec8 --- /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 +# Copyright (C) 2015 Klemens Nanni +# +# 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 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 7b0a444..700b3d6 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 0000000..6b3b68d --- /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 +# Copyright (C) 2015 Joseph Michael Thompson +# Copyright (C) 2015 Klemens Nanni +# +# 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 . +# + +[ "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"