From f625d7cf258cb6a4f96411bbad7fab3172962bc3 Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Thu, 17 Dec 2020 22:38:13 +0100 Subject: [PATCH] Create specific netboot initramfs file (WIP) This work was funded by Grml-Forensic. --- .../files/etc/grml-netboot/initramfs.conf/GRMLBASE | 10 ++++++++++ etc/grml/fai/config/grml/squashfs-excludes | 3 ++- etc/grml/fai/config/scripts/GRMLBASE/80-initramfs | 22 ++++++++++++++++++---- grml-live | 8 +++++++- 4 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 etc/grml/fai/config/files/etc/grml-netboot/initramfs.conf/GRMLBASE diff --git a/etc/grml/fai/config/files/etc/grml-netboot/initramfs.conf/GRMLBASE b/etc/grml/fai/config/files/etc/grml-netboot/initramfs.conf/GRMLBASE new file mode 100644 index 0000000..c27751f --- /dev/null +++ b/etc/grml/fai/config/files/etc/grml-netboot/initramfs.conf/GRMLBASE @@ -0,0 +1,10 @@ +# This file is installed by grml-live in 80-initramfs. +# Its purpose is an initramfs configuration file, used by grml-live +# to generate the initramfs file for the netboot package. +BUSYBOX=auto +COMPRESS=xz +DEVICE= +KEYMAP=n +MODULES=netboot +NFSROOT=auto +RUNSIZE=10% diff --git a/etc/grml/fai/config/grml/squashfs-excludes b/etc/grml/fai/config/grml/squashfs-excludes index 6c28c80..4036e80 100644 --- a/etc/grml/fai/config/grml/squashfs-excludes +++ b/etc/grml/fai/config/grml/squashfs-excludes @@ -1,3 +1,4 @@ +grml-live/ run/* -var/run/* var/lock/* +var/run/* diff --git a/etc/grml/fai/config/scripts/GRMLBASE/80-initramfs b/etc/grml/fai/config/scripts/GRMLBASE/80-initramfs index 82cf083..478f276 100755 --- a/etc/grml/fai/config/scripts/GRMLBASE/80-initramfs +++ b/etc/grml/fai/config/scripts/GRMLBASE/80-initramfs @@ -12,6 +12,9 @@ set -e fcopy -v /etc/initramfs-tools/hooks/000-udev-shutup fcopy -v /etc/initramfs-tools/conf.d/xz-compress +# used for grml-live's netboot package +fcopy -i -B -v -r /etc/grml-netboot + if ! [ -f $target/usr/share/initramfs-tools/scripts/live ] ; then echo "Error: live-boot/-initramfs does not seem to be present, can not create initramfs. Exiting.">&2 exit 1 @@ -20,8 +23,19 @@ fi echo "Rebuilding initramfs" for initrd in "$(basename $target/boot/vmlinuz-*)" ; do - if ! $ROOTCMD update-initramfs -k "${initrd##vmlinuz-}" -c ; then - echo "Creating fresh initramfs did not work, trying update instead:" - $ROOTCMD update-initramfs -k "${initrd##vmlinuz-}" -u - fi + if ! $ROOTCMD update-initramfs -k "${initrd##vmlinuz-}" -c ; then + echo "Creating fresh initramfs did not work, trying update instead:" + $ROOTCMD update-initramfs -k "${initrd##vmlinuz-}" -u + fi + + # write it to /grml-live/, as we ignore that directory via + # /etc/grml/fai/config/grml/squashfs-excludes, to + # not include the file into the ISO itself, but have + # it available for netboot package usage + if [ -d "${target}"/etc/grml-netboot ] ; then + echo "Creating netboot initrd file (/grml-live/netboot.initrd)" + $ROOTCMD mkinitramfs -d /etc/grml-netboot -o /grml-live/netboot.initrd -k "${initrd##vmlinuz-}" + else + echo "Warning: /etc/grml-netboot doesn't exist, skipping netboot initrd generation." + fi done diff --git a/grml-live b/grml-live index 54250ee..874ea57 100755 --- a/grml-live +++ b/grml-live @@ -1646,8 +1646,14 @@ create_netbootpackage() { mkdir -p "$WORKING_DIR" + if [ -r ${CHROOT_OUTPUT}/grml-live/netboot.initrd ] ; then + cp "${CHROOT_OUTPUT}"/grml-live/netboot.initrd "$WORKING_DIR"/initrd.img + else + eerror "Could not find netboot.initrd in ${CHROOT_OUTPUT}, make sure config/scripts/GRMLBASE/80-initramfs was executed." ; eend 1 + bailout 22 + fi + cp "${CHROOT_OUTPUT}"/boot/vmlinuz-* "$WORKING_DIR"/vmlinuz - cp "${CHROOT_OUTPUT}"/boot/initrd.img-* "$WORKING_DIR"/initrd.img cp "${CHROOT_OUTPUT}/${pxelinux_dir}/pxelinux.0" "${WORKING_DIR}/pxelinux.0" if [ -r "${CHROOT_OUTPUT}"/usr/lib/syslinux/modules/bios/ldlinux.c32 ] ; then -- 2.1.4