qubes-installer-qubes-os/anaconda/dracut/anaconda-diskroot

63 lines
2.1 KiB
Plaintext
Raw Normal View History

#!/bin/sh
# anaconda-diskroot: find our root image on the given disk device
# usage: anaconda-diskroot DEVICE [PATH]
. /lib/anaconda-lib.sh
command -v getargbool >/dev/null || . /lib/dracut-lib.sh
# Run checkisomd5 on a device
run_checkisomd5() {
livedev=$1
if getargbool 0 rd.live.check -d check; then
[ -b $livedev ] && fs=$(blkid -s TYPE -o value $livedev)
if [ "$fs" = "iso9660" -o "$fs" = "udf" ]; then
[ -x /bin/plymouth ] && /bin/plymouth --hide-splash
if [ -n "$DRACUT_SYSTEMD" ]; then
p=$(dev_unit_name "$livedev")
systemctl start checkisomd5@${p}.service
retcode=$(systemctl -p ExecMainStatus show checkisomd5@${p}.service)
status=$(systemctl -p ActiveState show checkisomd5@${p}.service)
splitsep "=" "$retcode" ignore rc
splitsep "=" "$status" ignore state
else
checkisomd5 --verbose $livedev
rc=$?
state="inactive"
fi
if [ "$rc" == "1" ]; then
die "CD check failed!"
exit 1
fi
if [ "$state" = "failed" ]; then
die "CD check failed!"
exit 1
fi
[ -x /bin/plymouth ] && /bin/plymouth --show-splash
fi
fi
}
dev="$1"
path="$2" # optional, could be empty
kickstart="$(getarg ks= inst.ks=)"
[ -e "/dev/root" ] && exit 1 # we already have a root device!
modprobe -q loop
# If we're waiting for a cdrom kickstart, the user might need to swap discs.
# So if this is a CDROM drive, make a note of it, but don't mount it (yet).
# Once we get the kickstart either the udev trigger or disk-reinsertion will
# retrigger this script, and we'll mount the disk as normal.
if str_starts "$kickstart" "cdrom" && [ ! -e /tmp/ks.cfg.done ]; then
if dev_is_cdrom "$dev"; then
> /tmp/anaconda-on-cdrom
exit 0
fi
fi
info "anaconda using disk root at $dev"
mount $dev $repodir || warn "Couldn't mount $dev"
anaconda_live_root_dir $repodir $path
run_checkisomd5 $dev