#!/bin/bash # mounts a windows VHD in wsl APP_DIR="$(dirname "$0")" WINDOWS_MOUNT="$APP_DIR/windows-mount" WSL_PATH="$APP_DIR/wsl-path" WSL_INTEROP_READY="$APP_DIR/wsl-interop-ready" SLEEP_INTERVAL=0.5 DRIVE="$1" DISK_LABEL="$2" DISK_PATH="/dev/disk/by-label/$DISK_LABEL" if ! $WINDOWS_MOUNT >/dev/null; then echo "Error: Windows not mounted" >&2 exit 1 fi if ! $WSL_INTEROP_READY; then echo "Error: WSL Interop not ready" >&2 exit 1 fi WSL="$($WSL_PATH)" if ! [ -e "$DISK_PATH" ]; then $WSL --mount --bare --vhd "$DRIVE" # poll until the block device node appears or task times out until [ -L "$DISK_PATH" ] && [ -b "$DISK_PATH" ]; do sleep "$SLEEP_INTERVAL" done fi exit 0