diff options
author | Jonathan Bauer | 2020-05-25 11:26:54 +0200 |
---|---|---|
committer | Jonathan Bauer | 2020-05-25 11:26:54 +0200 |
commit | 8b36285c9ec75ee9fa59f44b0714b952b574190f (patch) | |
tree | 3d4e51530e54e3d7643e47f2bd4e550be0de07f0 /modules.d/dnbd3-rootfs/hooks | |
parent | build-initramfs.sh: support CentOS-7 again (diff) | |
parent | Merge branch 'master' into nobash-merge (diff) | |
download | systemd-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')
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 |