#!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin; export PATH [ "$(id -u)" = 0 ] || { echo "need root" >&2; exit 1; } ROOT=$(showtrans / 2>/dev/null) echo "root: $ROOT" case "$ROOT" in *wd[0-9]*) echo "root is on wd*; boot USB first"; exit 1;; esac RUMP=; ACPI= for c in /hurd/rumpdisk /hurd/rumpdisk.static; do [ -x "$c" ] && RUMP=$c; done for c in /hurd/acpi /hurd/acpi.static; do [ -x "$c" ] && ACPI=$c; done [ -n "$RUMP" ] || { echo "no rumpdisk binary"; exit 1; } echo "rumpdisk=$RUMP acpi=$ACPI" showtrans /servers/acpi 2>&1 if ! showtrans /servers/acpi >/dev/null 2>&1; then settrans -ck /servers/acpi "$ACPI"; sleep 1 fi ps -e -o pid,comm 2>/dev/null | grep -E 'acpi|rumpdisk|pci-arbiter' echo "--- before ---" ls -l /dev/wd* 2>&1 for p in $(ps -e -o pid,comm 2>/dev/null | awk '$2=="rumpdisk"{print $1}'); do kill "$p"; done sleep 1 echo "--- start rumpdisk ---" settrans -g /dev/rumpdisk 2>/dev/null settrans -ck /dev/rumpdisk "$RUMP" sleep 2; showtrans /dev/rumpdisk >/dev/null 2>&1; sleep 3 echo "--- after ---" ls -l /dev/wd* 2>&1 || echo " (none)" for d in /dev/wd0 /dev/wd1; do [ -e "$d" ] || continue echo "-- $d --" if dd if="$d" bs=512 count=1 of=/tmp/wd.sec 2>/dev/null; then od -An -tx1 -N32 /tmp/wd.sec; echo " read OK" else echo " read FAILED" fi done showtrans /dev/rumpdisk 2>&1