summaryrefslogtreecommitdiffstats
path: root/modules.d/dnbd3-rootfs/hooks
diff options
context:
space:
mode:
authorJonathan Bauer2020-05-25 11:26:54 +0200
committerJonathan Bauer2020-05-25 11:26:54 +0200
commit8b36285c9ec75ee9fa59f44b0714b952b574190f (patch)
tree3d4e51530e54e3d7643e47f2bd4e550be0de07f0 /modules.d/dnbd3-rootfs/hooks
parentbuild-initramfs.sh: support CentOS-7 again (diff)
parentMerge branch 'master' into nobash-merge (diff)
downloadsystemd-init-8b36285c9ec75ee9fa59f44b0714b952b574190f.tar.gz
systemd-init-8b36285c9ec75ee9fa59f44b0714b952b574190f.tar.xz
systemd-init-8b36285c9ec75ee9fa59f44b0714b952b574190f.zip
Merge branch 'nobash-merge' into downloader-nobash-merge
Diffstat (limited to 'modules.d/dnbd3-rootfs/hooks')
-rwxr-xr-xmodules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh2
-rwxr-xr-xmodules.d/dnbd3-rootfs/hooks/fetch-config.sh14
-rwxr-xr-xmodules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh40
3 files changed, 45 insertions, 11 deletions
diff --git a/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh b/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh
index 5de1f2e9..aca83b8e 100755
--- a/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh
+++ b/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh
@@ -30,6 +30,6 @@ do
# "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 || \
+ ln --symbolic "$source_path" "$target_path" &>/dev/null || \
warn "Failed to link \"$source_path\" to \"$target_path\"."
done
diff --git a/modules.d/dnbd3-rootfs/hooks/fetch-config.sh b/modules.d/dnbd3-rootfs/hooks/fetch-config.sh
index a11332a7..2fa1c78c 100755
--- a/modules.d/dnbd3-rootfs/hooks/fetch-config.sh
+++ b/modules.d/dnbd3-rootfs/hooks/fetch-config.sh
@@ -7,6 +7,20 @@ type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
slx_server="$(getarg slxsrv=)"
slx_server_base="$(getarg slxbase=)"
+# if no slxsrv was specified, use the server the kernel was
+# downloaded from as fallback. Mostly for legacy PXE boot.
+if [ -z "$slx_server" ]; then
+ slx_server="$(getarg BOOT_IMAGE= | awk -F[/:] '{print $4}')"
+fi
+if [ -z "$slx_server" ]; then
+ # use tftp server from ip parameter
+ slx_server="$(getarg ip= | awk -F: '{print $2}' )"
+fi
+if [ -z "$slx_server" ]; then
+ # we have a problem :/
+ emergency_shell "Failed to determine SLX server to fetch config from."
+fi
+
# build config_url
config_url="http://${slx_server#@}/${slx_server_base}/config"
diff --git a/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh b/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh
index aa782184..38a2dd72 100755
--- a/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh
+++ b/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh
@@ -46,7 +46,27 @@ container_unpack_losetup() {
}
# endregion
-(
+# region connect dnbd3 image
+# Determine stage4 image path and revision
+if [ -z "$SLX_DNBD3_IMAGE" ]; then
+ # specified on the KCL?
+ SLX_DNBD3_IMAGE="$(getarg slx.stage4.path=)"
+fi
+if [ -z "$SLX_DNBD3_IMAGE" ]; then
+ # not specified, fall back to old bwlp default path convention
+ SLX_DNBD3_IMAGE="stage4/bwlp/maxilinux-$(uname -r)"
+fi
+# save it for later
+echo "SLX_DNBD3_IMAGE='$SLX_DNBD3_IMAGE'" >> /etc/openslx
+if [ -z "$SLX_DNBD3_RID" ]; then
+ # specified on the KCL?
+ SLX_DNBD3_RID="$(getarg slx.stage4.rid=)"
+fi
+if [ -n "$SLX_DNBD3_RID" ]; then
+ _dnbd3_client_additional_args=("--rid" "$SLX_DNBD3_RID")
+ echo "SLX_DNBD3_RID='$SLX_DNBD3_RID'" >> /etc/openslx
+fi
+
IFS=", "
for host in ${SLX_DNBD3_SERVERS} FAIL; do
if [ "$host" = "FAIL" ]; then
@@ -59,11 +79,11 @@ for host in ${SLX_DNBD3_SERVERS} FAIL; do
--host "$host" \
--image "${SLX_DNBD3_IMAGE}" \
--device "$_dnbd3_dev" \
- ${SLX_DNBD3_RID:+--rid "$SLX_DNBD3_RID"}; then
+ "${_dnbd3_client_additional_args[@]}"; then
break
fi
done
-)
+
# endregion
# region unpack dnbd3 image
[ -z "$SLX_QCOW_HANDLER" ] && SLX_QCOW_HANDLER="xmount"
@@ -76,19 +96,19 @@ else
fi
# Fail fast if unpacking dnbd3 image failed.
-[ -z "$read_only_device" ] && exit 1
+if [ -z "$read_only_device" ]; then
+ emergency_shell "Failed to unpack the qcow2 image!"
+fi
# 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")"
+ SLX_SYSTEM_PARTITION_IDENTIFIER="SLX_SYS"
+ echo "SLX_SYSTEM_PARTITION_IDENTIFIER='$SLX_SYSTEM_PARTITION_IDENTIFIER'" >> /etc/openslx
fi
+ read_only_partition="$(slx-tools dev_find_partitions \
+ "$read_only_device" "$SLX_SYSTEM_PARTITION_IDENTIFIER")"
else
eval "$SLX_SYSTEM_PARTITION_PREPARATION_SCRIPT"
fi