summaryrefslogtreecommitdiffstats
path: root/modules.d/dnbd3-rootfs/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/dnbd3-rootfs/hooks')
-rwxr-xr-xmodules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh16
1 files changed, 12 insertions, 4 deletions
diff --git a/modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh b/modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh
index 802648d4..5051375c 100755
--- a/modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh
+++ b/modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh
@@ -79,15 +79,15 @@ if ! modprobe dnbd3; then
echo "Failed to load kernel module: dnbd3"
fi
-for try in {1..5} ""; do
- if [ -z "$try" ]; then
+for try in {1..5} FINAL; do
+ if [ "$try" = "FINAL" ]; then
emergency_shell "Failed to connect '${SLX_DNBD3_IMAGE}'" \
"(revision: ${SLX_DNBD3_RID:-0})" \
"from one of '$SLX_DNBD3_SERVERS' to '$_dnbd3_dev'." \
"Check if the image exists on one of the servers" \
"and if any is reachable from this client."
fi
- echo "Trying hosts '$SLX_DNBD3_SERVERS'."
+ echo "dnbd3-connect: Try ($try/5), trying hosts '$SLX_DNBD3_SERVERS'."
if dnbd3-client \
--host "$SLX_DNBD3_SERVERS" \
--image "$SLX_DNBD3_IMAGE" \
@@ -113,9 +113,11 @@ if [ -z "$SLX_QCOW_HANDLER" ]; then
echo "SLX_QCOW_HANDLER='$SLX_QCOW_HANDLER'" >> /etc/openslx
fi
if [[ $SLX_QCOW_HANDLER =~ ^(kernel|xloop)$ ]]; then
+ echo "Trying to unpack image from dnbd3 via xloop"
read_only_device="$(container_unpack_xloop "$_dnbd3_dev")"
fi
if [ -z "$read_only_device" ]; then
+ echo "Using raw image from dnbd3 device"
read_only_device="$(container_unpack_raw "$_dnbd3_dev")"
fi
@@ -130,20 +132,25 @@ if [[ "$SLX_SYSTEM_PARTITION_IDENTIFIER" =~ ^\+[0-9]+$ ]]; then
# Partition number, e.g. +2 for second partition
#
num="${SLX_SYSTEM_PARTITION_IDENTIFIER#+}"
+ echo "Got partition number $num from configuration, using that"
if [ -b "${read_only_device}p${num}" ]; then
read_only_partition="${read_only_device}p${num}"
elif [ -b "${read_only_device}${num}" ]; then
read_only_partition="${read_only_device}${num}"
+ else
+ emergency_shell "Failed to find partition $num from '$read_only_device'"
fi
else
# Find requested root partition by MBRID, GPT label, or GPT type - default to SLX_SYS label
#
+ identifier="${SLX_SYSTEM_PARTITION_IDENTIFIER:-SLX_SYS}"
+ echo "Trying to find partition with ID or label '$identifier' from '$read_only_device'"
declare -a parts
parts=( "${read_only_device}"?* )
if [ -b "${parts[0]}" ]; then
# There is at least one partition on the device, scan
mapfile -t parts < <( slx-tools dev_find_partitions \
- "$read_only_device" "${SLX_SYSTEM_PARTITION_IDENTIFIER:-SLX_SYS}" )
+ "$read_only_device" "${identifier}" )
if [ "${#parts[@]}" = 1 ]; then
# One match, perfect
read_only_partition="${parts[0]}"
@@ -176,6 +183,7 @@ if [ -z "$read_only_partition" ]; then
umount -lf "$p"
fi
done
+ echo "***** Please fix this by either specifying SLX_SYSTEM_PARTITION_IDENTIFIER or labeling your root partition SLX_SYS *****"
fi
# endregion