force mounting _/_ and _/usr_ (if it is a separate device) read-write.
See also ro option.
+**rootfallback=**_<path to blockdevice>_::
+ specify the block device to use as the root filesystem, if the normal root cannot be found.
+ This can only be a simple block device with a simple file system, for which the filesystem
+ driver is either compiled in, or added manually to the initramfs.
+ This parameter can be specified multiple times.
+
**rd.auto** **rd.auto=1**::
enable autoassembly of special devices like cryptoLUKS, dmraid, mdraid or lvm.
Default is off as of dracut version >= 024.
--- /dev/null
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+for root in $(getargs rootfallback=); do
+ case "$root" in
+ block:LABEL=*|LABEL=*)
+ root="${root#block:}"
+ root="$(echo $root | sed 's,/,\\x2f,g')"
+ root="/dev/disk/by-label/${root#LABEL=}"
+ ;;
+ block:UUID=*|UUID=*)
+ root="${root#block:}"
+ root="${root#UUID=}"
+ root="$(echo $root | tr "[:upper:]" "[:lower:]")"
+ root="/dev/disk/by-uuid/${root#UUID=}"
+ ;;
+ block:PARTUUID=*|PARTUUID=*)
+ root="${root#block:}"
+ root="${root#PARTUUID=}"
+ root="$(echo $root | tr "[:upper:]" "[:lower:]")"
+ root="/dev/disk/by-partuuid/${root}"
+ ;;
+ block:PARTLABEL=*|PARTLABEL=*)
+ root="${root#block:}"
+ root="/dev/disk/by-partlabel/${root#PARTLABEL=}"
+ ;;
+ esac
+
+ if ! [ -b "$root" ]; then
+ warn "Could not find rootfallback $root"
+ continue
+ fi
+
+ if mount "$root" /sysroot; then
+ info "Mounted rootfallback $root"
+ exit 0
+ else
+ warn "Failed to mount rootfallback $root"
+ exit 1
+ fi
+done
+
+[ -e "$job" ] && rm -f "$job"