From d1f1a4586131e063ea6b03bf05ec2f803713c858 Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Tue, 29 Oct 2019 14:57:12 +0100 Subject: [PATCH] TT#69504 Support ISO addons, rework build environment + provide initial tests * Addon fixes: * Provide custom addon template according to our needs, instead of relying on the default one being present in grml-live.git/templates * Install memtest86+ as addon for BIOS usage * Install netboot.xyz.lkrn for BIOS usage and netboot.xyz.efi for EFI usage * Install ipxe.lkrn for BIOS usage and ipxe.efi for EFI usage * Stick grml-live version to v0.34.3, instead of relying on some random git master version * Stick grml2usb version to v0.17.0, instead of relying on the grml2usb version available on the host system (being 0.14.14 on Debian/stretch as present on our current build hosts). For arbitrary addon file names we need grml2iso (which uses grml2usb underneath) from grml2usb >=0.17.0. FTR, grml2iso and grml2usb can be executed from within the git repository, assuming all relevant tools are present * No longer invoke isohybrid on the resulting ISO, instead rely on grml2iso behaviour (which also checks for EFI support and enables according switches as needed) * Fix usage instructions in t/Dockerfile: * it's "deployment-iso-buster" and not "lua-ngcp-kamailio-buster" * refer to working directory instead of "deployment-iso.git", which very probably isn't named as such on any of our systems, while the $(pwd) approach works for c/p * Fix docker build usage in grml_build/Dockerfile (for building we need to provide a PATH (being current working directory for us) * Provide testing tools in grml-build-buster docker environment * Provide new testing script t/iso-tester to compare generated ISO against pre-defined screenshot (only testing memtest feature using ./t/screenshots/01-memtest.jpg for now) Change-Id: I67e3f85bbe86bd1b3ee709161504b5250ca5d7fe (cherry picked from commit c3d753562d44b1653374e29b0b54a944b127afeb) --- build_iso.sh | 16 +++++- grml_build/Dockerfile | 53 +++++++++++------ t/Dockerfile | 8 +-- t/iso-tester | 101 +++++++++++++++++++++++++++++++++ t/screenshots/01-memtest.jpg | Bin 0 -> 81841 bytes templates/boot/grub/addons.cfg | 25 ++++++++ 6 files changed, 180 insertions(+), 23 deletions(-) create mode 100755 t/iso-tester create mode 100644 t/screenshots/01-memtest.jpg create mode 100644 templates/boot/grub/addons.cfg diff --git a/build_iso.sh b/build_iso.sh index d40cd64..1dcacfe 100755 --- a/build_iso.sh +++ b/build_iso.sh @@ -88,10 +88,17 @@ echo "*** Copying isolinux.cfg to syslinux.cfg for grml2usb support ***" cp ${TEMPLATES}/boot/isolinux/isolinux.cfg ${TEMPLATES}/boot/isolinux/syslinux.cfg echo "*** Generating Sipwise ISO ***" -sudo /usr/sbin/grml2iso -c ./${TEMPLATES} -o "${SIPWISE_ISO}" "${GRML_ISO}" -echo "*** Generating dd-able ISO ***" -sudo /usr/bin/isohybrid "${SIPWISE_ISO}" +if [[ ! -d grml2usb.git ]] ; then + GRML2USB_VERSION='v0.17.0' + if ! git clone -b "${GRML2USB_VERSION}" --single-branch --depth 1 https://github.com/grml/grml2usb grml2usb.git ; then + echo "Cloning grml2usb from github failed, falling back to git.grml.org" + git clone -b "${GRML2USB_VERSION}" --single-branch --depth 1 git://git.grml.org/grml2usb.git + fi +fi +GRML2USB_DIR=$(pwd)/grml2usb.git + +sudo GRML2USB="${GRML2USB_DIR}/grml2usb" "${GRML2USB_DIR}/grml2iso" -c ./${TEMPLATES} -o "${SIPWISE_ISO}" "${GRML_ISO}" sudo implantisomd5 "${SIPWISE_ISO}" @@ -103,4 +110,7 @@ mkdir -p artifacts echo "*** Moving ${SIPWISE_ISO} ${SIPWISE_ISO}.sha1 ${SIPWISE_ISO}.md5 to artifacts/ ***" mv "${SIPWISE_ISO}" "${SIPWISE_ISO}.sha1" "${SIPWISE_ISO}.md5" artifacts/ +docker run --rm -i --privileged -v "$(pwd)":/code/ docker.mgm.sipwise.com/deployment-iso-buster:latest \ + /code/t/iso-tester /code/artifacts/"${SIPWISE_ISO}" /code/artifacts/memtest.jpg /code/t/screenshots/01-memtest.jpg + popd &>/dev/null diff --git a/grml_build/Dockerfile b/grml_build/Dockerfile index 62f9fd8..ecdd532 100644 --- a/grml_build/Dockerfile +++ b/grml_build/Dockerfile @@ -5,9 +5,10 @@ FROM docker.mgm.sipwise.com/sipwise-buster:latest # is updated with the current date. It will force refresh of all # of the base images and things like `apt-get update` won't be using # old cached versions when the Dockerfile is built. -ENV REFRESHED_AT 2019-08-01 +ENV REFRESHED_AT 2019-11-08 -RUN apt-get update && apt-get install --assume-yes \ +# tools for building and testing +RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ bc \ bzip2 \ dosfstools \ @@ -15,6 +16,7 @@ RUN apt-get update && apt-get install --assume-yes \ fai-server \ git \ grml2usb \ + imagemagick \ isolinux \ isomd5sum \ kmod \ @@ -23,38 +25,57 @@ RUN apt-get update && apt-get install --assume-yes \ moreutils \ mtools \ pciutils \ + qemu-system-x86 \ rsync \ + socat \ squashfs-tools \ sudo \ syslinux \ + wget \ xorriso -RUN echo "SECURE_BOOT=disable ./grml-live -s buster -a amd64 -c GRMLBASE,SIPWISE,AMD64 -t /code/grml-live/templates/ -o /grml/ -r grml-sipwise -v 0.42" >/root/.bash_history -RUN echo "export LIVE_CONF=/code/grml-live/etc/grml/grml-live.conf" >>/root/.bash_history -RUN echo "export SCRIPTS_DIRECTORY=/code/grml-live/scripts" >>/root/.bash_history -RUN echo "export GRML_FAI_CONFIG=/code/grml-live/etc/grml/fai" >>/root/.bash_history -RUN echo "cp /deployment-iso/grml_build/package_config/SIPWISE /code/grml-live/etc/grml/fai/config/package_config/SIPWISE" >>/root/.bash_history +RUN echo "SECURE_BOOT=disable ./grml-live -s buster -a amd64 -c GRMLBASE,SIPWISE,AMD64 -t /code/grml-live/templates/ -o /grml/ -r grml-sipwise -v 0.42" >/root/.bash_history && \ + echo "export LIVE_CONF=/code/grml-live/etc/grml/grml-live.conf" >>/root/.bash_history && \ + echo "export SCRIPTS_DIRECTORY=/code/grml-live/scripts" >>/root/.bash_history && \ + echo "export GRML_FAI_CONFIG=/code/grml-live/etc/grml/fai" >>/root/.bash_history && \ + echo "cp /deployment-iso/grml_build/package_config/SIPWISE /code/grml-live/etc/grml/fai/config/package_config/SIPWISE" >>/root/.bash_history +# base build tools WORKDIR /code/ -RUN git clone https://github.com/grml/grml-live - -WORKDIR /code/grml-live - -RUN mkdir -p /code/grml-live/etc/grml/fai/config/files/etc/apt/sources.list.d/sipwise.list/ \ +RUN git clone -b 'v0.34.3' --single-branch --depth 1 https://github.com/grml/grml-live +RUN mkdir -p /code/grml-live/templates/boot/addons/ \ + /code/grml-live/etc/grml/fai/config/files/etc/apt/sources.list.d/sipwise.list/ \ /code/grml-live/etc/grml/fai/config/files/etc/apt/trusted.gpg.d/sipwise-keyring.gpg/ \ /code/grml-live/etc/grml/fai/config/files/etc/apt/trusted.gpg.d/sipwise-keyring-bootstrap.gpg/ \ /code/grml-live/etc/grml/fai/config/files/root/puppet.gpg/ \ /code/grml-live/etc/grml/fai/config/scripts/PUPPETLABS/ +# addons +RUN wget https://debian.sipwise.com/debian/pool/main/m/memtest86+/memtest86+_5.01-3_amd64.deb && \ + dpkg -x memtest86+_5.01-3_amd64.deb /tmp/memtest86 && \ + cp /tmp/memtest86/boot/memtest86+.bin /code/grml-live/templates/boot/addons/memtest && \ + rm -rf /tmp/memtest86 + +RUN wget -O /code/grml-live/templates/boot/addons/netboot.xyz.efi https://boot.netboot.xyz/ipxe/netboot.xyz.efi && \ + wget -O /code/grml-live/templates/boot/addons/netboot.xyz.lkrn https://boot.netboot.xyz/ipxe/netboot.xyz.lkrn + +RUN wget http://ftp.de.debian.org/debian/pool/main/i/ipxe/ipxe_1.0.0+git-20190125.36a4c85-1_all.deb && \ + dpkg -x ipxe_1.0.0+git-20190125.36a4c85-1_all.deb /tmp/ipxe && \ + cp /tmp/ipxe/boot/ipxe.efi /code/grml-live/templates/boot/addons/ipxe.efi && \ + cp /tmp/ipxe/boot/ipxe.lkrn /code/grml-live/templates/boot/addons/ipxe.lkrn && \ + rm -rf /tmp/ipxe + +WORKDIR /code/grml-live + ### Usage instructions ############################################################################# ## Build docker image: # -# docker build --tag="grml-sipwise" -f grml_build/Dockerfile +# docker build --tag="grml-sipwise" -f grml_build/Dockerfile . # -## Build GRML image: +## Build Grml image (assuming current working directory is deployment-iso.git): # # mkdir -p grml/ -# docker run --rm -i -t --privileged -v deployment-iso.git:/deployment-iso/ -v $(pwd)/grml:/grml/ grml-sipwise +# docker run --rm -i -t --privileged -v $(pwd):/deployment-iso/ -v $(pwd)/grml:/grml/ grml-sipwise # ## inside docker container (also available in shell history): # @@ -67,4 +88,4 @@ RUN mkdir -p /code/grml-live/etc/grml/fai/config/files/etc/apt/sources.list.d/si ## A successfull run results in ISO file in /grml/grml_isos/ (inside container), ## available via volume folder also outside of docker container ($pwd/grml/grml_isos/). # -### Usage instructions ############################################################################# +#################################################################################################### diff --git a/t/Dockerfile b/t/Dockerfile index d9aef5e..50fa904 100644 --- a/t/Dockerfile +++ b/t/Dockerfile @@ -19,13 +19,13 @@ WORKDIR /code/ # When you want to build the base image from scratch # jump to the next section if you don't want to build yourself!: # -# % docker build --tag="lua-ngcp-kamailio-buster" -f t/Dockerfile . -# % docker run --rm -i -t -v $(pwd):/code:rw lua-ngcp-kamailio-buster:latest bash +# % docker build --tag="deployment-iso-buster" -f t/Dockerfile . +# % docker run --rm -i -t -v $(pwd):/code:rw deployment-iso-buster:latest bash # # Use the existing docker image: -# % docker pull docker.mgm.sipwise.com/lua-ngcp-kamailio-buster +# % docker pull docker.mgm.sipwise.com/deployment-iso-buster # NOTE: run the following command from root folder of git repository: -# % docker run --rm -i -t -v $(pwd):/code:rw docker.mgm.sipwise.com/lua-ngcp-kamailio-buster:latest bash +# % docker run --rm -i -t -v $(pwd):/code:rw docker.mgm.sipwise.com/deployment-iso-buster:latest bash # # Inside docker (the command is in history, just press UP button): # ./t/testrunner diff --git a/t/iso-tester b/t/iso-tester new file mode 100755 index 0000000..b4b5ea3 --- /dev/null +++ b/t/iso-tester @@ -0,0 +1,101 @@ +#!/bin/bash + +set -eu -o pipefail + +usage_information() { + local PN + PN="$(basename "$0")" + + echo "${PN}: tool to boot an ISO, generate a screenshot of the system," + echo "and optionally compare the screenshot against a reference image" + echo + echo "Usage: ${PN} []" >&2 + echo + echo "Usage examples: + + ${PN} ./sip_provider_mr7.5.1.iso /tmp/screenshot.jpg + + ${PN} ./sip_provider_mr7.5.1.iso /tmp/memtest.jpg ./t/screenshots/01-memtest.jpg + " +} + +if [ $# -lt 2 ] ; then + usage_information >&2 + exit 1 +fi + +ISO="$1" +SCREENSHOT="$2" + +if [ -n "${3:-}" ] ; then + SCREENSHOT_COMPARE="$3" +fi + +QEMU_MONITOR=$(mktemp) +SCREENDUMP=$(mktemp) + +send_command() { + echo "$*" | socat - UNIX-CONNECT:"${QEMU_MONITOR}" + # this is necessary to give the system some time to execute it before receiving the next command + sleep 0.1 +} + +if [[ ! -x "$(which qemu-system-x86_64)" ]] || [[ ! -x "$(which socat)" ]] || [[ ! -x "$(which convert)" ]]; then + # only install tools automatically inside docker environment + if [ -e /.dockerinit ] || [ -e /.dockerenv ] ; then + apt-get update + apt-get install --assume-yes --no-install-recommends socat qemu-system-x86 imagemagick + else + echo "Please make sure to have socat qemu-system-x86 imagemagick available, not automatically installing them." >&2 + exit 1 + fi +fi + +qemu-system-x86_64 -display none -monitor unix:"${QEMU_MONITOR}",server,nowait -boot order=d -m 128 -cdrom "${ISO}" & +PID=$! +echo "qemu process running as PID $PID" + +# ensure the qemu process is ready for receiving commands +sleep 1 + +send_command "sendkey down" +send_command "sendkey down" +send_command "sendkey down" +send_command "sendkey down" +send_command "sendkey down" +send_command "sendkey down" +send_command "sendkey ret" +send_command "sendkey down" +send_command "sendkey ret" +send_command "screendump ${SCREENDUMP}" +send_command "quit" + +rm -f "${QEMU_MONITOR}" + +if ! [ -f "${SCREENDUMP}" ] ; then + echo "Failed to generated screenshot file, bailing out." >&2 + kill "$PID" || true + exit 1 +fi + +convert "${SCREENDUMP}" "${SCREENSHOT}" +echo "Generated screenshot file ${SCREENSHOT}" +rm -f "${SCREENDUMP}" + +if ! [ -x ./screenshot-compare ] ; then + wget -O ./screenshot-compare https://deb.sipwise.com/files/screenshot-compare + chmod 755 ./screenshot-compare +fi + +mkdir -p reports +if [ -n "${SCREENSHOT_COMPARE:-}" ] ; then + echo "Comparing ${SCREENSHOT} against ${SCREENSHOT_COMPARE}" + if ./screenshot-compare "${SCREENSHOT}" "${SCREENSHOT_COMPARE}" ; then + echo "Looks like ${SCREENSHOT} and ${SCREENSHOT_COMPARE} are looking similar enough." + echo "1..0" > ./reports/screenshot.tap + else + echo "Looks like ${SCREENSHOT} and ${SCREENSHOT_COMPARE} are NOT looking similar enough." + echo "1..1" > ./reports/screenshot.tap + echo "not ok 1 ${SCREENSHOT} and ${SCREENSHOT_COMPARE} don't look similar enough" >> ./reports/screenshot.tap + fi +fi diff --git a/t/screenshots/01-memtest.jpg b/t/screenshots/01-memtest.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ddda8ecf2e71d963bc8b4cfd525d3ccb5b4d8ac8 GIT binary patch literal 81841 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

D<~D}VsA4jw{7QUY(oJgv+oa)=ni|0 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 literal 0 HcmV?d00001 diff --git a/templates/boot/grub/addons.cfg b/templates/boot/grub/addons.cfg new file mode 100644 index 0000000..e257de3 --- /dev/null +++ b/templates/boot/grub/addons.cfg @@ -0,0 +1,25 @@ +submenu "Addons ->" --class=submenu { + menuentry "iPXE - boot via network/PXE" { + if [ "${grub_platform}" == "efi" ] ; then + chainloader /boot/addons/ipxe.efi + else + insmod linux16 + linux16 /boot/addons/ipxe.lkrn + fi + } + + menuentry "Netboot.xyz" { + if [ "${grub_platform}" == "efi" ] ; then + chainloader /boot/addons/netboot.xyz.efi + else + insmod linux16 + linux16 /boot/addons/netboot.xyz.lkrn + fi + } + + menuentry "Boot OS of first partition on first disk" { + set root=(hd0,1) + chainloader +1 + } + +}