#!/bin/sh echo "Warewulf pre-init (/init)" echo echo "Mounting kernel file systems..." mountpoint -q /proc || (mkdir -p /proc && mount -t proc proc /proc && echo "Mounted /proc") mountpoint -q /dev || (mkdir -p /dev && mount -t devtmpfs devtmpfs /dev && echo "Mounted /dev") mountpoint -q /sys || (mkdir -p /sys && mount -t sysfs sysfs /sys && echo "Mounted /sys") echo echo "Loading /warewulf/config..." if [ -f "/warewulf/config" ]; then . /warewulf/config else echo "ERROR: Warewulf configuration file not found." echo "Rebooting in 1 minute..." sleep 60 echo b > /proc/sysrq-trigger || /sbin/reboot -f fi echo echo "Configuring root file system..." WWPRESCRIPTS=/warewulf/wwprescripts chmod +rx "${WWPRESCRIPTS}" WWROOT="${WWROOT:-initramfs}" if [ "${WWROOT}" = "initramfs" ]; then echo "WWROOT=${WWROOT}: using initial rootfs and invoking ${WWPRESCRIPTS}..." exec "${WWPRESCRIPTS}" elif [ "${WWROOT}" = "ramfs" -o "${WWROOT}" = "tmpfs" ]; then echo "WWROOT=${WWROOT}: setting up new ${WWROOT} rootfs (/newroot)..." mkdir /newroot mount wwroot /newroot -t ${WWROOT} -o mpol=interleave # mpol ignored for ramfs tar -cf - --exclude ./proc --exclude ./sys --exclude ./dev --exclude --exclude ./newroot . | tar -xf - -C /newroot mkdir /newroot/proc /newroot/dev /newroot/sys 2>/dev/null echo "Switching to new rootfs (/newroot) and invoking ${WWPRESCRIPTS}..." exec /sbin/switch_root /newroot "${WWPRESCRIPTS}" else echo "ERROR: Unrecognized rootfs type requested: ${WWROOT}" echo "Rebooting in 1 minute..." sleep 60 echo b > /proc/sysrq-trigger || /sbin/reboot -f fi echo echo "ERROR: wwinit encountered a problem." echo "Rebooting in 1 minute..." sleep 60 echo b > /proc/sysrq-trigger || /sbin/reboot -f