summaryrefslogtreecommitdiffstats
path: root/testModule/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'testModule/hooks')
-rwxr-xr-xtestModule/hooks/cmdline/enable-sysrq.sh2
-rwxr-xr-xtestModule/hooks/cmdline/expand-kcl-ip.sh (renamed from testModule/hooks/cmdline.sh)8
-rwxr-xr-xtestModule/hooks/cmdline/mark-root-device.sh9
-rwxr-xr-xtestModule/hooks/mount.sh3
-rwxr-xr-xtestModule/hooks/mount/mount-root-device.sh4
-rwxr-xr-xtestModule/hooks/nbd-cmdline.sh5
-rwxr-xr-xtestModule/hooks/pre-mount.sh9
-rwxr-xr-xtestModule/hooks/pre-mount/fetch-config.sh12
-rwxr-xr-xtestModule/hooks/pre-mount/mount-qcow.sh49
-rwxr-xr-xtestModule/hooks/pre-pivot/mount-tmp.sh38
-rwxr-xr-xtestModule/hooks/pre-udev/load-dnbd3-nbd-modules.sh (renamed from testModule/hooks/pre-udev.sh)20
11 files changed, 121 insertions, 38 deletions
diff --git a/testModule/hooks/cmdline/enable-sysrq.sh b/testModule/hooks/cmdline/enable-sysrq.sh
new file mode 100755
index 00000000..f779aa7a
--- /dev/null
+++ b/testModule/hooks/cmdline/enable-sysrq.sh
@@ -0,0 +1,2 @@
+# enables magic sysrq keys
+echo 1 > /proc/sys/kernel/sysrq
diff --git a/testModule/hooks/cmdline.sh b/testModule/hooks/cmdline/expand-kcl-ip.sh
index b1f06ea6..8be1c718 100755
--- a/testModule/hooks/cmdline.sh
+++ b/testModule/hooks/cmdline/expand-kcl-ip.sh
@@ -1,5 +1,3 @@
-echo 1 > /proc/sys/kernel/sysrq
-
# fakes the cmdline to fix the ip parsing when using
# syslinux's IPAPPEND 1 mask
[ -d /fake ] || mkdir /fake
@@ -12,11 +10,11 @@ mount -t tmpfs tmpfs /fake
sed 's/\(ip=\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}:\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}:\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}:\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)/\1:hiwi:eno1:none/' /proc/cmdline > /fake/cmdline
# bind mount it. Can we trust mount return codes here?
-# if so, we should check what we get in $?
+# # if so, we should check what we get in $?
mount -o bind /fake/cmdline /proc/cmdline
# check if it worked
if ! grep 'hiwi:eth0:none' /proc/cmdline; then
- command -v warn >/dev/null || . /lib/dracut-lib.sh
- warn 'Haxing cmdline did not work :( sad pandaz...'
+ command -v warn >/dev/null || . /lib/dracut-lib.sh
+ warn 'Haxing cmdline did not work :( sad pandaz...'
fi
diff --git a/testModule/hooks/cmdline/mark-root-device.sh b/testModule/hooks/cmdline/mark-root-device.sh
new file mode 100755
index 00000000..b7282521
--- /dev/null
+++ b/testModule/hooks/cmdline/mark-root-device.sh
@@ -0,0 +1,9 @@
+# set rootok and root as dracut expects them to be set by
+# the module preparing the root filesystem.
+#
+# Once the root filesystem is mounted per dnbd3 and
+# exported as qcow2 per nbd, /dev/root will be a symlink
+# to /dev/nbd0 as this is then our rootfs-device
+rootok=1
+root=block:/dev/root
+
diff --git a/testModule/hooks/mount.sh b/testModule/hooks/mount.sh
deleted file mode 100755
index e893642d..00000000
--- a/testModule/hooks/mount.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-mount /dev/root $NEWROOT
diff --git a/testModule/hooks/mount/mount-root-device.sh b/testModule/hooks/mount/mount-root-device.sh
new file mode 100755
index 00000000..d02f9002
--- /dev/null
+++ b/testModule/hooks/mount/mount-root-device.sh
@@ -0,0 +1,4 @@
+# this rudimentary script just mounts the rootfs device that was symlinked to
+# /dev/root to dracut's $NEWROOT (usually /sysroot).
+
+mount /dev/root $NEWROOT
diff --git a/testModule/hooks/nbd-cmdline.sh b/testModule/hooks/nbd-cmdline.sh
deleted file mode 100755
index 6464646f..00000000
--- a/testModule/hooks/nbd-cmdline.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-rootok=1
-root=block:/dev/root
-
diff --git a/testModule/hooks/pre-mount.sh b/testModule/hooks/pre-mount.sh
deleted file mode 100755
index b22cdc35..00000000
--- a/testModule/hooks/pre-mount.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/bash
-
-while ! /sbin/setup-qcow2; do
- sleep 0.5
-done
-
-while ! /sbin/setup-nbdroot; do
- sleep 0.5
-done
diff --git a/testModule/hooks/pre-mount/fetch-config.sh b/testModule/hooks/pre-mount/fetch-config.sh
new file mode 100755
index 00000000..013b0058
--- /dev/null
+++ b/testModule/hooks/pre-mount/fetch-config.sh
@@ -0,0 +1,12 @@
+command -v info >/dev/null || . /lib/dracut-lib.sh
+
+info "Getting configuration from OPENSLX-Server..."
+
+WGET="$(busybox which wget)"
+if [ -z $WGET ]; then
+ # do nothing
+ warn "'wget' not found. Skipping openslx configuration..."
+ exit 1
+fi
+mkdir -p /opt/openslx
+$WGET http://10.4.9.51/openslx/config -O /opt/openslx/config
diff --git a/testModule/hooks/pre-mount/mount-qcow.sh b/testModule/hooks/pre-mount/mount-qcow.sh
new file mode 100755
index 00000000..d70492bf
--- /dev/null
+++ b/testModule/hooks/pre-mount/mount-qcow.sh
@@ -0,0 +1,49 @@
+###############################################################################
+# CHECKS
+#
+
+SETUP_ROOTFS_SCRIPT="/sbin/setup-qcow2"
+
+if [ ! -e "${SETUP_ROOTFS_SCRIPT}" ]; then
+ warn "No such file of directory: ${SETUP_ROOTFS_SCRIPT}"
+ emergency_shell -n "Error in $0"
+ return 1
+fi
+
+if [ ! -x "${SETUP_ROOTFS_SCRIPT}" ]; then
+ warn "Cannot execute: ${SETUP_ROOTFS_SCRIPT}"
+ emergency_shell -n "Error in $0"
+ return 1
+fi
+
+#
+# END CHECKS
+###############################################################################
+
+###############################################################################
+# MAIN CODE
+#
+
+# ok, let's source the setup script
+if ! . ${SETUP_ROOTFS_SCRIPT} ; then
+ warn "Could not source: ${SETUP_ROOTFS_SCRIPT}"
+ emergency_shell -n "Error in $0"
+ return 1
+fi
+
+# just go over the functions in the right order ;-)
+for fun in connect_dnbd3 create_qcow export_qcow connect_qcow; do
+ if ! $fun; then
+ # something failed, drop a shell for debugging
+ warn "'$fun' failed with: $?"
+ emergency_shell -n "Error in $fun"
+ return 1
+ fi
+done
+
+# all good, we are done
+return 0
+
+#
+# END MAIN CODE
+###############################################################################
diff --git a/testModule/hooks/pre-pivot/mount-tmp.sh b/testModule/hooks/pre-pivot/mount-tmp.sh
new file mode 100755
index 00000000..3fa24cce
--- /dev/null
+++ b/testModule/hooks/pre-pivot/mount-tmp.sh
@@ -0,0 +1,38 @@
+# This script only checks if we found a usable partition for the
+# future /tmp. The discovery of that partition is done by udev during
+# the initqueue. If a valid partition is found (either GPT with the label
+# OPENSLX_TMP or MBR with the type 0x44) its path will be written to
+# /tmp/openslx.tmpdisk
+OPENSLX_TMP_DISK_FLAG="/tmp/openslx.disk.tmp"
+
+if [ ! -e "$OPENSLX_TMP_DISK_FLAG" ]; then
+ warn "'$OPENSLX_TMP_DISK_FLAG' not found!"
+ warn "Systemd will manage $NEWROOT/tmp on its own."
+ # no partition for the future /tmp found, just
+ # let systemd manage it then (probably a tmpfs)
+ return 1
+fi
+
+# in /tmp/openslx.disk.tmp is the name of the device
+# to mount as /tmp in the real system
+# meaning we need to mount it to /sysroot/tmp here.
+
+OPENSLX_TMP_DISK_DEV="$(cat $OPENSLX_TMP_DISK_FLAG)"
+
+# sanity check: is the content a block device?
+if [ ! -b "$OPENSLX_TMP_DISK_DEV" ]; then
+ warn "'$OPENSLX_TMP_DISK_DEV' appears not to be a block device!"
+ warn "Systemd will manage $NEWROOT/tmp on its own."
+ return 1
+fi
+
+# all good, keep on
+if ! mount -t auto "$OPENSLX_TMP_DISK_DEV" /sysroot/tmp; then
+ # something else went wrong :(
+ warn "Mounting '$OPENSLX_TMP_DISK_DEV' to '/sysroot/tmp' failed with: $!"
+ warn "Systemd will manage $NEWROOT/tmp on its own."
+ return 1
+fi
+
+# still here? mount worked wohoo
+return 0
diff --git a/testModule/hooks/pre-udev.sh b/testModule/hooks/pre-udev/load-dnbd3-nbd-modules.sh
index 578169e9..29f9f210 100755
--- a/testModule/hooks/pre-udev.sh
+++ b/testModule/hooks/pre-udev/load-dnbd3-nbd-modules.sh
@@ -1,19 +1,10 @@
-#!/usr/bin/bash
-
# include dracut-lib.sh to use 'warn'
command -v warn >/dev/null || . /lib/dracut-lib.sh
-SETUP_SCRIPT="/sbin/setup-qcow2"
-NBDROOT_SCRIPT="/sbin/setup-nbdroot"
NBD_MOD_PATH="/usr/lib/modules/current/extra/nbd.ko"
DNBD3_MOD_PATH="/usr/lib/modules/current/extra/dnbd3.ko"
-# sanity checks
-if [ ! -e "${SETUP_SCRIPT}" ]; then
- warn "No such file of directory: ${SETUP_SCRIPT}"
- emergency_shell -n "Error in $0"
- return 1
-fi
+# do we actually have our modules?
if [ ! -e "${NBD_MOD_PATH}" ]; then
warn "No such file of directory: ${NBD_MOD_PATH}"
emergency_shell -n "Error in $0"
@@ -26,19 +17,16 @@ if [ ! -e "${DNBD3_MOD_PATH}" ]; then
fi
# load the kernel modules for dnbd3 and nbd
-if ! insmod /usr/lib/modules/current/extra/dnbd3.ko; then
+if ! insmod "${DNBD3_MOD_PATH}"; then
warn "Failed to load DNBD3 kernel module..."
emergency_shell -n "Error in $0"
return 1
fi
-if ! insmod /usr/lib/modules/current/extra/nbd.ko; then
+if ! insmod "${NBD_MOD_PATH}"; then
warn "Failed to load NBD kernel module..."
emergency_shell -n "Error in $0"
return 1
fi
-# now let's "install" the setup script in the initqueue
-#/sbin/initqueue --settled --unique "${SETUP_SCRIPT}"
-#/sbin/initqueue --settled --unique "${NBDROOT_SCRIPT}"
-#/sbin/initqueue --settled --unique "/sbin/retry-nbdroot"
+return 0