echo "Starting initrd..."
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
export TERM=linux
+NEWROOT="/sysroot"
+
trap "emergency_shell" 0
mknod /dev/null c 1 3
getarg 'break=pre-udev' && emergency_shell
source_all pre-udev
+
+[ "$root" ] || {
+ root=$(getarg root=)
+ case $root in
+ LABEL=*) root=${root#LABEL=}
+ root="$(echo $root |sed 's,/,\\x2f,g')"
+ root="/dev/disk/by-label/${root}" ;;
+ UUID=*) root="/dev/disk/by-uuid/${root#UUID=}" ;;
+ '') echo "Warning: no root specified"
+ root="/dev/sda1" ;;
+ esac
+}
+
+[ "$rflags" ] || {
+ if rflags="$(getarg rootflags=)"; then
+ getarg rw && rflags="${rflags},rw" || rflags="${rflags},ro"
+ else
+ getarg rw && rflags=rw || rflags=ro
+ fi
+}
+
+[ "$fstype" ] || {
+ fstype="$(getarg rootfstype=)" && fstype="-t ${fstype}"
+}
+
+resume=$(getarg resume=) && ! getarg noresume && [ -b "$resume" ] && {
+ # parsing the output of ls is Bad, but until there is a better way...
+ (
+ echo -e 'NAME=="'${resume#/dev/}'", RUN+="/bin/sh -c \047 echo %M:%m > /sys/power/resume \047 "'
+ echo -e 'SYMLINK=="'${resume#/dev/}'", RUN+="/bin/sh -c \047 echo %M:%m > /sys/power/resume \047 "'
+ ) >> /lib/udev/rules.d/99-resume.rules
+}
+
+(
+ echo -e ' NAME=="'${root#/dev/}'", RUN+="/bin/sh -c \047 mount '$fstype' -o '$rflags' '$root' '$NEWROOT' \047 " '
+ echo -e ' SYMLINK=="'${root#/dev/}'", RUN+="/bin/sh -c \047 mount '$fstype' -o '$rflags' '$root' '$NEWROOT' \047 " '
+) >> /lib/udev/rules.d/99-mount.rules
+
# start up udev and trigger cold plugs
udevd --daemon
udevadm trigger >/dev/null 2>&1
udevadm settle --timeout=30 >/dev/null 2>&1
-NEWROOT="/sysroot"
# pre-mount happens before we try to mount the root filesystem,
# and happens once.
getarg 'break=pre-mount' && emergency_shell
source_all pre-mount
getarg 'break=mount' && emergency_shell
+
# mount scripts actually try to mount the root filesystem, and may
# be sourced any number of times. As soon as one suceeds, no more are sourced.
i=0
while :; do
+ grep -q '/sysroot' /proc/mounts && break;
+
for f in /mount/*.sh; do
- [ -x "$f" ] && . "$f";
- [ "$ROOTFS_MOUNTED" ] && break;
+ [ -x "$f" ] && . "$f";
+ [ "$ROOTFS_MOUNTED" ] && break;
done
- [ "$ROOTFS_MOUNTED" ] && break;
+
sleep 1
i=$(($i+1))
(