Create specific netboot initramfs file (WIP) mika/netboot
authorMichael Prokop <mika@grml.org>
Thu, 17 Dec 2020 21:38:13 +0000 (22:38 +0100)
committerMichael Prokop <mika@grml.org>
Wed, 23 Dec 2020 17:26:11 +0000 (18:26 +0100)
This work was funded by Grml-Forensic.

etc/grml/fai/config/files/etc/grml-netboot/initramfs.conf/GRMLBASE [new file with mode: 0644]
etc/grml/fai/config/grml/squashfs-excludes
etc/grml/fai/config/scripts/GRMLBASE/80-initramfs
grml-live

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 (file)
index 0000000..c27751f
--- /dev/null
@@ -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%
index 82cf083..478f276 100755 (executable)
@@ -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
index 54250ee..874ea57 100755 (executable)
--- 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