#!/bin/sh -eu

. shell-error

workdir=
exit_handler() {
	local rc=$?
	trap - EXIT
	[ ! -d "$workdir" ] || rm -rf -- "$workdir"
	exit $rc
}

trap exit_handler HUP PIPE INT QUIT TERM EXIT
workdir="`mktemp -dt "$PROG.XXXXXXXXXX"`"

grep -wqs forensic /proc/cmdline ||
	! type -t vgchange >/dev/null ||
	vgchange -ay

find-fstab "$workdir" || fatal "No fstab found (see dmesg?)"
cd "$workdir"

for fstab in fstab.*; do
	[ "$fstab" != "fstab.*" ] || break
	mpoint="/mnt/system${fstab##*.}"
	mkdir -p -- "$mpoint"
	if mount-fstab "$fstab" "$mpoint"; then
		message "$mpoint: done"
	fi
	mount --bind /proc "$mpoint/proc"
	mount --bind /sys "$mpoint/sys"
	mount --bind /dev "$mpoint/dev"
	[ -d /sys/firmware/efi/efivars ] &&
		mount --bind /sys/firmware/efi/efivars \
		"$mpoint/sys/firmware/efi/efivars" || :
done
cd ->/dev/null
