summaryrefslogtreecommitdiffstats
path: root/builder/modules.d/dnbd3-rootfs
diff options
context:
space:
mode:
authorJonathan Bauer2020-05-13 11:04:02 +0200
committerJonathan Bauer2020-05-13 11:04:02 +0200
commit1130873aa55c9b0a7e5af48edc44bd6c6fd1f888 (patch)
tree0fcfa186cd631d8d36611b3d4bc509fd38841d51 /builder/modules.d/dnbd3-rootfs
parentMerge branch 'centos8' into downloader (diff)
downloadsystemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.tar.gz
systemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.tar.xz
systemd-init-1130873aa55c9b0a7e5af48edc44bd6c6fd1f888.zip
restructure repo
* remove packager * move everything from builder/* back to root
Diffstat (limited to 'builder/modules.d/dnbd3-rootfs')
m---------builder/modules.d/dnbd3-rootfs/binaries/dnbd30
m---------builder/modules.d/dnbd3-rootfs/binaries/kernel-qcow2-linux0
m---------builder/modules.d/dnbd3-rootfs/binaries/kernel-qcow2-util-linux0
m---------builder/modules.d/dnbd3-rootfs/binaries/qemu-xmount0
-rw-r--r--builder/modules.d/dnbd3-rootfs/binaries/systemd-preserve-process-marker/Makefile12
-rw-r--r--builder/modules.d/dnbd3-rootfs/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker.c33
m---------builder/modules.d/dnbd3-rootfs/binaries/xmount0
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/configuration/bash3
-rw-r--r--builder/modules.d/dnbd3-rootfs/helper/build.inc291
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/copy-dnbd3-service-into-newroot.sh12
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh35
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/copy-openslx-configuration-into-newroot.sh18
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/enable-sysrq.sh5
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/fetch-config.sh50
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh12
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/mount-root-device.sh9
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh107
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/hooks/set-dracut-environment-variables.sh16
-rw-r--r--builder/modules.d/dnbd3-rootfs/hooks/shutdown-umount.sh11
-rwxr-xr-xbuilder/modules.d/dnbd3-rootfs/module-setup.sh231
-rw-r--r--builder/modules.d/dnbd3-rootfs/services/dnbd3root.service12
21 files changed, 0 insertions, 857 deletions
diff --git a/builder/modules.d/dnbd3-rootfs/binaries/dnbd3 b/builder/modules.d/dnbd3-rootfs/binaries/dnbd3
deleted file mode 160000
-Subproject a6ddfe1212a2df72cacb0f44cc872b1bd0363c3
diff --git a/builder/modules.d/dnbd3-rootfs/binaries/kernel-qcow2-linux b/builder/modules.d/dnbd3-rootfs/binaries/kernel-qcow2-linux
deleted file mode 160000
-Subproject 0761b3e9e03ed63b4adfd8b4a82f334352729a4
diff --git a/builder/modules.d/dnbd3-rootfs/binaries/kernel-qcow2-util-linux b/builder/modules.d/dnbd3-rootfs/binaries/kernel-qcow2-util-linux
deleted file mode 160000
-Subproject 0692b963aa3cb846d8abab5ef5247c4dbb3fec9
diff --git a/builder/modules.d/dnbd3-rootfs/binaries/qemu-xmount b/builder/modules.d/dnbd3-rootfs/binaries/qemu-xmount
deleted file mode 160000
-Subproject 4873cd023da8511ed9792a318d1456c94904612
diff --git a/builder/modules.d/dnbd3-rootfs/binaries/systemd-preserve-process-marker/Makefile b/builder/modules.d/dnbd3-rootfs/binaries/systemd-preserve-process-marker/Makefile
deleted file mode 100644
index 406ec50f..00000000
--- a/builder/modules.d/dnbd3-rootfs/binaries/systemd-preserve-process-marker/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-CC=gcc
-OPTS=-c -Wall
-SOURCES=$(wildcard *.c)
-OBJECTS=$(SOURCES:.c=.o)
-BINS=$(SOURCES:.c=)
-
-all: $(BINS)
-
-$(BINS): $(OBJECTS)
-
-clean:
- rm -f $(BINS) $(OBJECTS)
diff --git a/builder/modules.d/dnbd3-rootfs/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker.c b/builder/modules.d/dnbd3-rootfs/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker.c
deleted file mode 100644
index 8f0fc108..00000000
--- a/builder/modules.d/dnbd3-rootfs/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-void print_array(int argc, char *argv[]) {
- // Helper function to print given array with given length.
- int i = 0;
- int j = 0;
- for (i = 0; i < argc; i ++) {
- j = 0;
- while(argv[i][j] != '\0')
- printf("%c", argv[i][j++]);
- printf(" ");
- }
- printf("\n");
-}
-int main(int argc, char *argv[]) {
- int count;
- // Last item acts as null pointer.
- char **copy = calloc(sizeof(char *), argc);
- // Slice first given command line argument.
- for (count = 0; count < argc - 1; count++)
- copy[count] = strdup(argv[count + 1]);
- // Adding systemd indicator to preserve wrapped process during changing
- // root filesystem. We mark wrapper and child process.
- argv[0][0] = '@';
- copy[0][0] = '@';
- if (-1 == execvp(argv[1], copy)) {
- perror("Executing child process failed.");
- return -1;
- }
-}
diff --git a/builder/modules.d/dnbd3-rootfs/binaries/xmount b/builder/modules.d/dnbd3-rootfs/binaries/xmount
deleted file mode 160000
-Subproject 015137556fce1e21273f198ae0b9158157f74f7
diff --git a/builder/modules.d/dnbd3-rootfs/configuration/bash b/builder/modules.d/dnbd3-rootfs/configuration/bash
deleted file mode 100755
index adefda40..00000000
--- a/builder/modules.d/dnbd3-rootfs/configuration/bash
+++ /dev/null
@@ -1,3 +0,0 @@
-alias poweroff='poweroff --force'
-alias halt='poweroff'
-alias reboot='reboot --force'
diff --git a/builder/modules.d/dnbd3-rootfs/helper/build.inc b/builder/modules.d/dnbd3-rootfs/helper/build.inc
deleted file mode 100644
index b3f9561c..00000000
--- a/builder/modules.d/dnbd3-rootfs/helper/build.inc
+++ /dev/null
@@ -1,291 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-
-declare -rg _mainmoddir="$(dirname "${BASH_SOURCE[0]}")/.." 2> /dev/null
-
-declare -rg _supported_qcow_handlers=("xmount" "kernel")
-build_initialize_components() {
- local qcow_handler="$_QCOW_HANDLER"
- IFS='|' _pattern="^(${_supported_qcow_handlers[*]})$" export _pattern
- if [[ ! "$qcow_handler" =~ $_pattern ]] ; then
- echo "Unknown qcow handler '$qcow_handler' - will built all known."
- echo "Supported handlers: ${_supported_qcow_handlers[*]}"
- fi
- _deps_base_dir="${_mainmoddir}/binaries"
- # We might want to move the "binaries" repos from the dnbd3-rootfs module to main repo one day...
- # TODO check for its existence using modinfo -k <kernel_version>
- if [[ ! -f "${_deps_base_dir}/dnbd3/build/dnbd3.ko" ]] || \
- [[ ! -f "${_deps_base_dir}/dnbd3/build/dnbd3-client" ]]; then
- echo "Could not find dnbd3, building it..."
- if ! CMAKE_FLAGS="-DKERNEL_DIR=${kernel_headers}" \
- build_compile_dnbd3 "${_deps_base_dir}/dnbd3/"; then
- echo "Failed to build dnbd3."
- return 1
- fi
- fi
- # take care of the qcow handler
- if [ -z "$qcow_handler" ] || [ "$qcow_handler" = "xmount" ]; then
- if [[ ! -f "${_deps_base_dir}/xmount/trunk/build/src/xmount" ]]; then
- echo "Could not find xmount binary, building it..."
- if ! build_compile_xmount "${_deps_base_dir}/xmount/"; then
- echo "Failed to build xmount binary."
- return 1
- fi
- fi
- if [[ ! -f "${_deps_base_dir}/qemu-xmount/libxmount_input_qemu.so" ]]; then
- echo "Could not find xmount qemu library, building it..."
- if ! build_compile_qemu_xmount "${_deps_base_dir}/qemu-xmount/"; then
- echo "Failed to build xmount qemu library."
- return 1
- fi
- fi
- fi
- if [ -z "$qcow_handler" ] || [ "$qcow_handler" = "kernel" ]; then
- if [ ! -f "${_deps_base_dir}/kernel-qcow2-linux/drivers/block/loop/loop.ko" ] \
- || [ ! -f "${_deps_base_dir}/kernel-qcow2-linux/drivers/block/loop/loop_file_fmt_qcow.ko" ] \
- || [ ! -f "${_deps_base_dir}/kernel-qcow2-linux/drivers/block/loop/loop_file_fmt_raw.ko" ]; then
- echo "Could not find loop kernel modules, building them..."
- if ! build_compile_kernel_qcow "${_deps_base_dir}/kernel-qcow2-linux"; then
- echo "Failed to build qcow loop kernel modules."
- return 1
- fi
- fi
- if [ ! -f "${_deps_base_dir}/kernel-qcow2-util-linux/losetup" ]; then
- echo "Could not find losetup with qcow2 support, building it..."
- if ! build_compile_losetup_qcow "${_deps_base_dir}/kernel-qcow2-util-linux"; then
- echo "Failed to build losetup with qcow support."
- return 1
- fi
- fi
- fi
-
- # always compile this helper since it does not cost much to do so
- if [[ ! -f "${_deps_base_dir}/systemd-preserve-process-marker/systemd-preserve-process-marker" ]]; then
- echo "Could not find systemd-preserve-process-marker binary, building it ..."
- if ! build_compile_systemd_preserve_process_marker \
- "${_deps_base_dir}/systemd-preserve-process-marker/"; then
- echo "Failed to build systemd-preserve-process-marker"
- return 1
- fi
- fi
- echo "Compilation of dnbd3-rootfs dependencies succeeded."
- return 0
-}
-
-clean_components() {
- local __doc__='
- Removes all compiled kernel specific files.
- NOTE: This method is triggered manually and not supported by dracut itself.
-
- Example:
-
- `clean`
- '
- local _submoddir="${_mainmoddir}/binaries"
- build_clean_xmount "${_submoddir}/xmount/"
- build_clean_qemu_xmount "${_submoddir}/qemu-xmount/"
- build_clean_dnbd3 "${_submoddir}/dnbd3/"
- build_clean_losetup_qcow "${_submoddir}/kernel-qcow2-util-linux"
- build_clean_dnbd3 "${_submoddir}/dnbd3/"
- build_clean_systemd_preserve_process_marker \
- "${_submoddir}/systemd-preserve-process-marker/"
- return 0
-}
-# endregion
-
-build_compile_qemu_xmount() {
- local __doc__='
- Compiles qemu libxmount.
- NOTE: expects xmount installation under
- $1/../xmount/trunk/build/release_build/
-
- Provides the following file:
- "$1/libxmount_input_qemu.so"
-
- Example:
-
- `build_compile_qemu_xmount /qemu_source /xmount/installation`
- '
- pushd "$1"
- local xmount_installation="../xmount/trunk/build/release_build/usr"
- [ ! -z "$2" ] && xmount_installation="$2"
- ./configure --enable-xmount-input --python="$(which python2)" \
- --extra-cflags="-std=gnu99" \
- --disable-werror \
- --extra-cflags="-fPIC" \
- --extra-cflags="-I${xmount_installation}/include" \
- --extra-cflags="-I${xmount_installation}/include/xmount" \
- --disable-fdt --target-list=""
- make -j libxmount_input_qemu.so
- local ret=$?
- popd
- return $ret
-}
-build_clean_qemu_xmount() {
- local __doc__='Clean the build of `build_compile_qemu_xmount`.'
- pushd "$1"
- make clean
- local ret=$?
- popd
- return $ret
-}
-build_compile_xmount() {
- local __doc__='
- Compiles xmount.
-
- Provides the xmount installation under:
- "$1/trunk/build/release_build/"
-
- Example:
-
- `build_compile_xmount /xmount_source /xmount_source/build /usr`
- '
- pushd "$1"
-
- local destination_directory="./release_build"
- [ ! -z "$2" ] && destination_directory="$2"
- local install_prefix="/usr"
- [ ! -z "$3" ] && install_prefix="$3"
-
- mkdir --parents trunk/build
- cd trunk/build || return 1
- cmake -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX="$install_prefix" ..
- make -j
- make install DESTDIR="$destination_directory"
- local ret=$?
- popd
- return $ret
-}
-build_clean_xmount() {
- local __doc__='Clean the build of `build_compile_xmount`.'
- rm --recursive --force "$1/trunk/build"
-}
-build_compile_dnbd3() {
- local __doc__='
- Compiles dnbd3 kernel module and client.
-
- Provides the following file:
- "$1/build/dnbd3.ko"
- "$1/build/dnbd3-client"
-
- Examples:
-
- `build_compile_dnbd3 path/to/dnbd3/source/`
-
- Passing the kernel version to cmake:
- `CMAKE_FLAGS="-DKERNEL_VERSION=4.14.6-openslx+" \
- build_compile_dnbd3 path/to/dnbd3/source/`
- '
- pushd "$1"
- # NOTE: The generic way would be: "./build.sh" but this tries to build
- # more than we really need and takes more time.
- mkdir --parents build
- cd build
- # Inject CMAKE_FLAGS as a way to control how cmake is called,
- # e.g. to pass the kernel version
- cmake ${CMAKE_FLAGS} \
- -DBUILD_FUSE_CLIENT=OFF \
- -DBUILD_KERNEL_MODULE=ON \
- -DBUILD_SERVER=OFF \
- -DBUILD_STRESSTEST=OFF \
- ../
- make -j dnbd3 dnbd3-client
- local ret=$?
- popd
- return $ret
-}
-build_clean_dnbd3() {
- local __doc__='Clean the build of `build_compile_dnbd3`.'
- rm --recursive --force "$1/build"
- return $?
-}
-build_compile_kernel_qcow() {
- pushd "$1"
- # https://lab.ks.uni-freiburg.de/projects/kernel-qcow2/wiki
- if [ -z "$kernel_headers" ]; then
- echo "Kernel header directory not set, ignoring."
- return 1
- fi
- mkdir -p "${kernel_headers}/drivers/block/loop"
- for _file in \
- include/uapi/linux/loop.h \
- drivers/block/Kconfig \
- drivers/block/loop/loop_main.h \
- drivers/block/loop/loop_file_fmt.h \
- drivers/block/loop/Kconfig; do
- cp -f "${_file}" "${kernel_headers}/${_file}"
- done
- (
- set -o errexit
- make -C "$kernel_headers" CONFIG_BLK_DEV_LOOP=m \
- M=$(pwd)/drivers/block/loop loop.ko
- make -C "$kernel_headers" CONFIG_BLK_DEV_LOOP_FILE_FMT_RAW=m \
- M=$(pwd)/drivers/block/loop loop_file_fmt_raw.ko
- make -C "$kernel_headers" CONFIG_BLK_DEV_LOOP_FILE_FMT_QCOW=m \
- M=$(pwd)/drivers/block/loop loop_file_fmt_qcow.ko
- )
- local ret=$?
- popd
- return $ret
-}
-build_clean_kernel_qcow() {
- if [ -z "$kernel_headers" ]; then
- echo "Kernel header directory not set, ignoring."
- return 1
- fi
- pushd "$kernel_headers"
- make -C "$kernel_headers" M=$(pwd)/drivers/block/loop clean
- local ret=$?
- popd
- return $ret
-}
-build_compile_losetup_qcow() {
- pushd "$1"
- (
- set -o errexit
- ./autogen.sh
- ./configure
- make -j losetup
- gcc -I./libsmartcols/src -O2 -o .libs/losetup sys-utils/losetup-losetup.o .libs/libcommon.a .libs/libsmartcols.a
- )
- local ret=$?
- popd
- return $ret
-}
-build_clean_losetup_qcow() {
- pushd "$1"
- make clean
- local ret=$?
- popd
- return $ret
-}
-build_compile_systemd_preserve_process_marker() {
- local __doc__='
- Compiles simple c program.
-
- Examples:
-
- `build_compile_systemd_preserve_process_marker path/to/program/folder`
- '
- pushd "$1"
- make
- local ret=$?
- popd
- return $ret
-}
-build_clean_systemd_preserve_process_marker() {
- local __doc__='
- Clean the build of
- `build_compile_systemd_preserve_process_marker`.
- '
- pushd "$1"
- make clean
- local ret=$?
- popd
- return $ret
-}
-# region vim modline
-# vim: set tabstop=4 shiftwidth=4 expandtab:
-# vim: foldmethod=marker foldmarker=region,endregion:
-# endregion
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/copy-dnbd3-service-into-newroot.sh b/builder/modules.d/dnbd3-rootfs/hooks/copy-dnbd3-service-into-newroot.sh
deleted file mode 100755
index ddfe4992..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/copy-dnbd3-service-into-newroot.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
-
-systemd_system_unit_path="$(dirname \
- "$(systemctl show -p FragmentPath dracut-mount.service | cut -c 14-)")"
-new_systemd_system_unit_path="${NEWROOT}/lib/systemd/system"
-cp "${systemd_system_unit_path}/dnbd3root.service" \
- "${new_systemd_system_unit_path}/dnbd3root.service"
-mkdir --parents "${new_systemd_system_unit_path}/sysinit.target.wants"
-ln --symbolic '../dnbd3root.service' \
- "${new_systemd_system_unit_path}/sysinit.target.wants/dnbd3root.service"
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh b/builder/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh
deleted file mode 100755
index 5de1f2e9..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
-
-# Needed to be able to go back to dracut at system shutdown.
-temporary_directory_path="$(mktemp --directory)"
-mount --options bind / "$temporary_directory_path"
-cp --recursive --no-target-directory "$temporary_directory_path" /run/initramfs
-umount "$temporary_directory_path"
-rm --dir "$temporary_directory_path"
-
-# Dracut may not be installed on the new root. Thus copy all services over.
-dracut_mount_unit_path="$(systemctl show -p FragmentPath dracut-mount.service \
- | cut -c 14-)"
-systemd_system_unit_path="${dracut_mount_unit_path%/*}"
-new_systemd_system_unit_path="${NEWROOT}/lib/systemd/system"
-
-mkdir --parents "$new_systemd_system_unit_path/initrd.target.wants"
-for file in \
- dracut-cmdline.service \
- dracut-initqueue.service \
- dracut-mount.service \
- dracut-pre-mount.service \
- dracut-pre-pivot.service \
- dracut-pre-trigger.service \
- dracut-pre-udev.service
-do
- cp "${systemd_system_unit_path}/${file}" \
- "${new_systemd_system_unit_path}/${file}"
- # "ln" returns an error if the link already exists.
- source_path="../${file}"
- target_path="${new_systemd_system_unit_path}/initrd.target.wants/${file}"
- ln --symbolic "$source_path" "$targetPath" &>/dev/null || \
- warn "Failed to link \"$source_path\" to \"$target_path\"."
-done
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/copy-openslx-configuration-into-newroot.sh b/builder/modules.d/dnbd3-rootfs/hooks/copy-openslx-configuration-into-newroot.sh
deleted file mode 100755
index ff01474f..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/copy-openslx-configuration-into-newroot.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
-source "/etc/openslx"
-
-mkdir --parents "${NEWROOT}/opt/openslx"
-cp "/etc/openslx" "${NEWROOT}/opt/openslx/config"
-
-echo "## Generated by '$0' in stage3" >> "${NEWROOT}/opt/openslx/config"
-cat "/run/openslx/network.conf" >> "${NEWROOT}/opt/openslx/config"
-
-# Set root/demo password for stage4, if set
-if [ -n "${SLX_ROOT_PASS}" ]; then
- sed -i "s#^root:[^:]*:#root:$SLX_ROOT_PASS:#" $NEWROOT/etc/shadow
-fi
-if [ -n "${SLX_DEMO_PASS}" ] && grep -q '^demo' $NEWROOT/etc/shadow; then
- sed -i "s#^demo:[^:]*:#demo:$SLX_DEMO_PASS:#" $NEWROOT/etc/shadow
-fi
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/enable-sysrq.sh b/builder/modules.d/dnbd3-rootfs/hooks/enable-sysrq.sh
deleted file mode 100755
index 323ec45e..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/enable-sysrq.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-
-# Enables magic sysrq kernel supported key combinations.
-echo 1 > /proc/sys/kernel/sysrq
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/fetch-config.sh b/builder/modules.d/dnbd3-rootfs/hooks/fetch-config.sh
deleted file mode 100755
index a11332a7..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/fetch-config.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-# region imports
-type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
-# endregion
-
-slx_server="$(getarg slxsrv=)"
-slx_server_base="$(getarg slxbase=)"
-
-# build config_url
-config_url="http://${slx_server#@}/${slx_server_base}/config"
-
-# check if system's uuid was set
-if [ -s "/run/system-uuid" ]; then
- uuid=$(cat "/run/system-uuid")
- if [ -n "$uuid" ]; then
- config_url="${config_url}?uuid=${uuid}"
- fi
-fi
-
-config_path="/etc/openslx.tmp"
-
-echo "Downloading '$config_url'..."
-slx-tools download_retry -s "$config_url" > "$config_path"
-
-if [ ! -s "$config_path" ] ; then
- warn "Downloading OpenSLX configuration file from '$config_url' failed with: $return_code"
- emergency_shell "CRITICAL: System unusable."
-fi
-
-if ! ash -n "$config_path"; then
- warn "Downloaded OpenSLX configuration failed syntax check!"
- emergency_shell "CRITICAL: System unusable."
-fi
-
-# remember kcl server and base
-{
- echo "SLX_KCL_SERVERS='$slx_server'"
- echo "SLX_BASE_PATH='$slx_server_base'"
- echo "# Config fetched from $config_url"
- echo "CONFIG_DOWNLOAD_TIME=$(sed -r 's/^([0-9]+)\.([0-9]+).*$/\1\2/' /proc/uptime)"
- echo '#_RCONFIG_TAG'
-} > /etc/openslx
-
-# finally copy remote config into it
-cat "$config_path" >> /etc/openslx
-
-# slxsrv overrides SLX_DNBD3_SERVERS if prefixed with @
-[ "${slx_server#@}" != "${slx_server}" ] && sed -i "s/^SLX_DNBD3_SERVERS=.*/SLX_DNBD3_SERVERS='${slx_server#@}'/" "/etc/openslx"
-true
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh b/builder/modules.d/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh
deleted file mode 100755
index b3d3eb75..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
-for kmod in dnbd3 \
- "loop max_loop=8" \
- loop_file_fmt_qcow \
- loop_file_fmt_raw; do
- if ! modprobe ${kmod}; then
- warn "Failed to load kernel module: $kmod"
- ! :
- fi
-done
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/mount-root-device.sh b/builder/modules.d/dnbd3-rootfs/hooks/mount-root-device.sh
deleted file mode 100755
index 6f31bbac..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/mount-root-device.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
-
-source "/etc/openslx"
-mount "$SLX_DNBD3_DEVICE_COW" "$NEWROOT" $SLX_MOUNT_ROOT_OPTIONS
-if [ -n "$SLX_GENERATE_FSTAB_SCRIPT" ]; then
- eval "$SLX_GENERATE_FSTAB_SCRIPT"
-else
- echo "" > "$NEWROOT/etc/fstab"
-fi
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh b/builder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh
deleted file mode 100755
index aa782184..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/env bash
-type emergency_shell > /dev/null 2>&1 || source /lib/dracut-lib.sh
-source /etc/openslx
-
-export PATH="/usr/local/bin:$PATH"
-export LD_LIBRARY_PATH="/usr/local/lib"
-
-
-# hardcode dnbd device path
-declare -rg _dnbd3_dev="/dev/dnbd0"
-
-# all outputs are redirected to stderr, since this functions should
-# only echo the path to the unpacked container to stdout.
-container_unpack_xmount() {
- local in_device="$1"
- local out_path="/mnt/xmount"
- mkdir -p "$out_path"
- # check tools first
- if ! hash xmount systemd-preserve-process-marker; then
- warn "Missing xmount deps, will try raw..." 1>&2
- elif ! systemd-preserve-process-marker xmount \
- --in qemu "$in_device" \
- --out raw "$out_path" &>/dev/null; then
- warn "xmount call failed, assuming raw image." 1>&2
- else
- in_device="${out_path}/${_dnbd3_dev##*/}.dd"
- fi
- local out_device="$(losetup -f)"
- if ! losetup "$out_device" "$in_device" --partscan; then
- warn "Failed to attach '$in_device' to '$out_device'."
- return 1
- fi
- udevadm settle
- echo "$out_device"
-}
-
-container_unpack_losetup() {
- local in_device="$1"
- local out_device="$(losetup -f)"
- if ! losetup -r -t QCOW "$out_device" "$in_device" --partscan; then
- warn "Failed to attach '$in_device' to '$out_device'."
- return
- fi
- udevadm settle
- echo "$out_device"
-}
-# endregion
-
-(
-IFS=", "
-for host in ${SLX_DNBD3_SERVERS} FAIL; do
- if [ "$host" = "FAIL" ]; then
- emergency_shell "Failed to connect '${SLX_DNBD3_IMAGE}' "\
- "${SLX_DNBD3_RID:+(revision: $SLX_DNBD3_RID)} "
- "from one of '$SLX_DNBD3_SERVERS' to '$_dnbd3_dev'."
- fi
- info "Trying host \"$host\"."
- if systemd-preserve-process-marker dnbd3-client \
- --host "$host" \
- --image "${SLX_DNBD3_IMAGE}" \
- --device "$_dnbd3_dev" \
- ${SLX_DNBD3_RID:+--rid "$SLX_DNBD3_RID"}; then
- break
- fi
-done
-)
-# endregion
-# region unpack dnbd3 image
-[ -z "$SLX_QCOW_HANDLER" ] && SLX_QCOW_HANDLER="xmount"
-if [ "$SLX_QCOW_HANDLER" = "xmount" ]; then
- read_only_device="$(container_unpack_xmount "$_dnbd3_dev")"
-elif [ "$SLX_QCOW_HANDLER" = "kernel" ]; then
- read_only_device="$(container_unpack_losetup "$_dnbd3_dev")"
-else
- warn "Unsupported QCOW handler: $SLX_QCOW_HANDLER"
-fi
-
-# Fail fast if unpacking dnbd3 image failed.
-[ -z "$read_only_device" ] && exit 1
-
-# endregion
-# region find system partition within dnbd3 image
-if [ -z "$SLX_SYSTEM_PARTITION_PREPARATION_SCRIPT" ]; then
- if [ -z "$SLX_SYSTEM_PARTITION_IDENTIFIER" ]; then
- # if empty use whole device
- read_only_partition="$read_only_device"
- true
- else
- read_only_partition="$(slx-tools dev_find_partitions \
- "$read_only_device" "$SLX_SYSTEM_PARTITION_IDENTIFIER")"
- fi
-else
- eval "$SLX_SYSTEM_PARTITION_PREPARATION_SCRIPT"
-fi
-if [[ ! $? || -z "$read_only_partition" ]]; then
- warn "Failed to find unique device with identifier" \
- "\"${SLX_SYSTEM_PARTITION_IDENTIFIER}\"; matched devices:" \
- "\"${read_only_partition}\""
- exit 1
-fi
-info "Using read-only partition: $read_only_partition"
-# endregion
-
-# region add rw layer to dnbd3 image
-# don't be fooled to think we are done, the next part is crucial
-dmsetup-slx-device "$read_only_partition"
-# endregion
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/set-dracut-environment-variables.sh b/builder/modules.d/dnbd3-rootfs/hooks/set-dracut-environment-variables.sh
deleted file mode 100755
index ad80349b..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/set-dracut-environment-variables.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-
-# Set rootok and root as dracut expects them to be set by the module preparing
-# the root filesystem.
-
-# Tell dracut that we parsed the command line and all needed parameters are
-# available.
-rootok=1
-# Tell dracut where the final root fs will be located.
-root=block:/dev/devicemapper/root
-
-# region vim modline
-# vim: set tabstop=4 shiftwidth=4 expandtab:
-# vim: foldmethod=marker foldmarker=region,endregion:
-# endregion
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/shutdown-umount.sh b/builder/modules.d/dnbd3-rootfs/hooks/shutdown-umount.sh
deleted file mode 100644
index ab78733c..00000000
--- a/builder/modules.d/dnbd3-rootfs/hooks/shutdown-umount.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env bash
-
-source /etc/openslx
-
-export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
-
-umount /oldroot
-dmsetup --noudevsync remove root
-losetup --detach-all
-umount /mnt/*
-dnbd3-client --device "$SLX_DNBD3_DEVICE" --close
diff --git a/builder/modules.d/dnbd3-rootfs/module-setup.sh b/builder/modules.d/dnbd3-rootfs/module-setup.sh
deleted file mode 100755
index 77543a54..00000000
--- a/builder/modules.d/dnbd3-rootfs/module-setup.sh
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-
-
-_parse_dracut_args() {
- local __doc__='
- Set log level via dracut logging options and returns current debug state.
-
- >>> echo "$_debug"
- 1
- >>> _parse_dracut_args; echo $?
- 1
-
- >>> _parse_dracut_args --stdlog 3; echo $?
-
- >>> _parse_dracut_args --stdlog 4; echo $?
- >>> logging.get_commands_level
- >>> logging.get_level
- 0
- debug
- debug
-
- >>> logging.get_level
- critical
- >>> _parse_dracut_args --stdlog 4 --verbose
- >>> logging.get_level
- debug
-
- >>> _parse_dracut_args --stdlog 4 --unknown-dracut-option; echo $?
- 0
- '
- local verbose=false
- local debug=false
- while true; do
- case "$1" in
- --stdlog)
- shift
- local level="$1"
- shift
- [[ "$level" -ge 4 ]] && debug=true
- ;;
- --verbose)
- shift
- verbose=true
- ;;
- '')
- break
- ;;
- *)
- shift
- ;;
- esac
- local level
- $verbose && level=info
- $debug && level=debug
- #logging.set_level "$level"
- #logging.set_commands_level debug
- done
- $debug
- return $?
-}
-# WTF does this actually do aside from taking space!
-_debug=0
-_parse_dracut_args ${dracut_args[*]} || _debug=$?
-# endregion
-
-clean() {
-# Sourcing some helper functions
- . "$(dirname "${BASH_SOURCE[0]}")/helper/build.inc"
- clean_components
-}
-# region dracut plugin api
-check() {
-# Sourcing some helper functions
- . "$(dirname "${BASH_SOURCE[0]}")/helper/build.inc"
- if ! build_initialize_components; then
- echo "Failed to initialize components."
- return 1
- fi
- # NOTE: xmount must be compiled before qemu_xmount
- local xmount_is_built=true
- if [[ ! -f "$moddir/binaries/xmount/trunk/build/src/xmount" ]] ||
- [[ ! -f "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" ]]; then
- xmount_is_built=false
- fi
- # non-critical if failed
- $xmount_is_built || warn "Compiling 'xmount'/'libxmount_input_qemu' failed."
-
- if [[ ! -f "$moddir/binaries/dnbd3/build/dnbd3.ko" ]] || \
- [[ ! -f "$moddir/binaries/dnbd3/build/dnbd3-client" ]]; then
- CMAKE_FLAGS="-DKERNEL_VERSION=${kernel}" \
- build_compile_dnbd3 "$moddir/binaries/dnbd3/"
- [[ $? != 0 ]] && return 1
- fi
- if [[ ! -f "$moddir/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker" ]]; then
- build_compile_systemd_preserve_process_marker \
- "$moddir/binaries/systemd-preserve-process-marker/"
- [[ $? != 0 ]] && return 1
- fi
- # TODO do we still need this ?
- # NOTE: This are workarounds for:
- # - distributions where "systemd-udevd" doesn't lives in "/usr/lib" but in
- # "/lib".
- local alternate_systemd_udevd_location='/lib/systemd/systemd-udevd'
- if [[ ! -f "${systemdutildir}/systemd-udevd" ]] && \
- [[ -f "$alternate_systemd_udevd_location" ]]; then
- mkdir --parents "${initdir}${systemdutildir}"
- ln --symbolic --force "$alternate_systemd_udevd_location" \
- "${initdir}${systemdutildir}/systemd-udevd"
- fi
- # WTF?
- # - "/usr/bin/sh" isn't available but "/bin/sh".
- if [[ ! -f /usr/bin/sh ]] && [[ -f /bin/sh ]]; then
- ln --symbolic --force /bin/sh /usr/bin/sh
- fi
- return 255
-}
-depends() {
- echo base bash kernel-modules shutdown slx-dmsetup slx-network
-}
-installkernel() {
- local block_kmod_dir="/lib/modules/${kernel}/kernel/drivers/block"
-
- # dnbd3
- mkdir -p "${initdir}/${block_kmod_dir}"
- inst "${moddir}/binaries/dnbd3/build/dnbd3.ko" "${block_kmod_dir}/dnbd3.ko"
-
- # kqcow2 kernel
- local kqcow_loop_kmod_dir="${moddir}/binaries/kernel-qcow2-linux/drivers/block/loop"
- if [ -e "${kqcow_loop_kmod_dir}/loop.ko" ] && \
- [ -e "${kqcow_loop_kmod_dir}/loop_file_fmt_raw.ko" ] && \
- [ -e "${kqcow_loop_kmod_dir}/loop_file_fmt_qcow.ko" ]; then
- mkdir -p "${initdir}/${block_kmod_dir}/loop"
- for kmod in "${kqcow_loop_kmod_dir}/"*.ko ; do
- inst "$kmod" "${block_kmod_dir}/loop/$(basename $kmod)"
- done
- fi
-}
-install() {
- # region binaries
- inst "$moddir/binaries/dnbd3/build/dnbd3-client" /usr/local/bin/dnbd3-client
- inst "$moddir/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker" \
- /usr/local/bin/systemd-preserve-process-marker
- # xmount
- local \
- xmount_installation="$moddir/binaries/xmount/trunk/build/release_build"
- if [[ -f "${xmount_installation}/usr/bin/xmount" ]]; then
- inst "${xmount_installation}/usr/bin/xmount" /usr/bin/xmount
- for file in ${xmount_installation}/usr/lib/xmount/*; do
- inst "$file" /usr/lib/xmount/"$(basename "$file")"
- done
- inst "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" \
- /usr/lib/xmount/libxmount_input_qemu.so
- # HACK fix missing libraries for some xmount input libs
- # TODO copy the dependencies using dracut functions...
- inst_libdir_file 'libafflib.so*'
- inst_libdir_file 'libewf.so*'
- fi
- # kqcow2 losetup
- local losetup_qcow2_dir="$moddir/binaries/kernel-qcow2-util-linux"
- if [[ -f "${losetup_qcow2_dir}/.libs/losetup" ]]; then
- inst "${losetup_qcow2_dir}/.libs/losetup" /usr/local/bin/losetup
- mkdir -p "${initdir}/usr/local/lib"
- cp -a "${losetup_qcow2_dir}/.libs/"*.so* "${initdir}/usr/local/lib"
- fi
- # endregion
- # region hooks
- inst_hook cmdline 00 "$moddir/hooks/enable-sysrq.sh"
- # NOTE: Can be used to support old style ip append syntax and have an
- # exclusive interface name - required when using dracut's regular
- # 'network' module
- dracut_module_included "network" && inst_hook cmdline 10 \
- "$moddir/hooks/prepare-kernel-command-line-parameter.sh"
- inst_hook cmdline 90 "$moddir/hooks/set-dracut-environment-variables.sh"
- inst_hook pre-udev 00 "$moddir/hooks/load-custom-kernel-modules.sh"
- # Get the openslx config from the servers configured in the kernel command
- # line (${SLX_SERVER}/${SLX_SERVER_BASE}/config).
- inst_hook pre-mount 10 "$moddir/hooks/fetch-config.sh"
- # make the final blockdevice for the root system (dnbd3 -> xmount ->
- # device-mapper)
- if dracut_module_included "systemd-initrd"; then
- inst "$moddir/hooks/prepare-root-partition.sh" \
- /usr/local/bin/dnbd3root
- inst_simple "${moddir}/services/dnbd3root.service" \
- "${systemdsystemunitdir}/dnbd3root.service"
- mkdir --parents \
- "${initdir}/${systemdsystemunitdir}/dracut-mount.service.requires"
- ln_r "${systemdsystemunitdir}/dnbd3root.service" \
- "${systemdsystemunitdir}/dracut-mount.service.requires/dnbd3root.service"
- mkdir --parents \
- "${initdir}/${systemdsystemunitdir}/initrd.target.requires"
- ln_r "${systemdsystemunitdir}/dnbd3root.service" \
- "${systemdsystemunitdir}/initrd.target.requires/dnbd3root.service"
- # Copy systemd services to new root (so they don't get killed after
- # switch_root)
- inst_hook pre-pivot 00 \
- "$moddir/hooks/copy-dnbd3-service-into-newroot.sh"
- inst_hook pre-pivot 00 \
- "$moddir/hooks/copy-dracut-systemd-files-into-newroot.sh"
- inst_hook pre-shutdown 00 "$moddir/hooks/shutdown-umount.sh"
- else
- inst_hook pre-mount 10 "$moddir/hooks/prepare-root-partition.sh"
- fi
- inst_hook mount 10 "$moddir/hooks/mount-root-device.sh"
- inst_hook pre-pivot 00 \
- "$moddir/hooks/copy-openslx-configuration-into-newroot.sh"
- # endregion
- # region scripts
- # endregion
- # region configuration files
- # Use terminal readline settings from the template system.
- inst /etc/inputrc /etc/inputrc
- # Set some aliases for the initramfs context.
- if [[ "$_debug" == 0 ]]; then
- inst "$moddir/configuration/bash" '/etc/bash.bashrc'
- inst "$moddir/configuration/bash" '/etc/profile.d/aliases'
- fi
- # endregion
- inst_multiple \
- awk \
- basename bash blockdev \
- cat cut curl \
- dd diff dirname dmsetup \
- find \
- grep \
- insmod \
- lsblk \
- mkfifo mktemp mount mountpoint \
- sed sleep sort \
- tee touch tr
-}
diff --git a/builder/modules.d/dnbd3-rootfs/services/dnbd3root.service b/builder/modules.d/dnbd3-rootfs/services/dnbd3root.service
deleted file mode 100644
index df079576..00000000
--- a/builder/modules.d/dnbd3-rootfs/services/dnbd3root.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=root fs on dnbd3 (distributed network block device)
-After=dracut-pre-mount.service network.target
-Before=dracut-mount.service
-DefaultDependencies=no
-IgnoreOnIsolate=true
-
-[Service]
-Type=oneshot
-RemainAfterExit=true
-KillMode=none
-ExecStart=/usr/local/bin/dnbd3root