diff options
Diffstat (limited to 'modules.d/dnbd3-rootfs/hooks')
-rwxr-xr-x | modules.d/dnbd3-rootfs/hooks/s3-dnbd3root.sh | 16 |
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 |