diff options
Diffstat (limited to 'testModule/hooks')
| -rwxr-xr-x | testModule/hooks/cmdline/enable-sysrq.sh | 2 | ||||
| -rwxr-xr-x | testModule/hooks/cmdline/expand-kcl-ip.sh (renamed from testModule/hooks/cmdline.sh) | 8 | ||||
| -rwxr-xr-x | testModule/hooks/cmdline/mark-root-device.sh | 9 | ||||
| -rwxr-xr-x | testModule/hooks/mount.sh | 3 | ||||
| -rwxr-xr-x | testModule/hooks/mount/mount-root-device.sh | 4 | ||||
| -rwxr-xr-x | testModule/hooks/nbd-cmdline.sh | 5 | ||||
| -rwxr-xr-x | testModule/hooks/pre-mount.sh | 9 | ||||
| -rwxr-xr-x | testModule/hooks/pre-mount/fetch-config.sh | 12 | ||||
| -rwxr-xr-x | testModule/hooks/pre-mount/mount-qcow.sh | 49 | ||||
| -rwxr-xr-x | testModule/hooks/pre-pivot/mount-tmp.sh | 38 | ||||
| -rwxr-xr-x | testModule/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 |
