|
|
@ -31,6 +31,8 @@ source_all() { |
|
|
|
echo "Starting initrd..." |
|
|
|
echo "Starting initrd..." |
|
|
|
export PATH=/sbin:/bin:/usr/sbin:/usr/bin |
|
|
|
export PATH=/sbin:/bin:/usr/sbin:/usr/bin |
|
|
|
export TERM=linux |
|
|
|
export TERM=linux |
|
|
|
|
|
|
|
NEWROOT="/sysroot" |
|
|
|
|
|
|
|
|
|
|
|
trap "emergency_shell" 0 |
|
|
|
trap "emergency_shell" 0 |
|
|
|
|
|
|
|
|
|
|
|
mknod /dev/null c 1 3 |
|
|
|
mknod /dev/null c 1 3 |
|
|
@ -52,26 +54,66 @@ mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts >/dev/null 2>&1 |
|
|
|
getarg 'break=pre-udev' && emergency_shell |
|
|
|
getarg 'break=pre-udev' && emergency_shell |
|
|
|
source_all pre-udev |
|
|
|
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 |
|
|
|
# start up udev and trigger cold plugs |
|
|
|
udevd --daemon |
|
|
|
udevd --daemon |
|
|
|
udevadm trigger >/dev/null 2>&1 |
|
|
|
udevadm trigger >/dev/null 2>&1 |
|
|
|
udevadm settle --timeout=30 >/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, |
|
|
|
# pre-mount happens before we try to mount the root filesystem, |
|
|
|
# and happens once. |
|
|
|
# and happens once. |
|
|
|
getarg 'break=pre-mount' && emergency_shell |
|
|
|
getarg 'break=pre-mount' && emergency_shell |
|
|
|
source_all pre-mount |
|
|
|
source_all pre-mount |
|
|
|
getarg 'break=mount' && emergency_shell |
|
|
|
getarg 'break=mount' && emergency_shell |
|
|
|
|
|
|
|
|
|
|
|
# mount scripts actually try to mount the root filesystem, and may |
|
|
|
# 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. |
|
|
|
# be sourced any number of times. As soon as one suceeds, no more are sourced. |
|
|
|
i=0 |
|
|
|
i=0 |
|
|
|
while :; do |
|
|
|
while :; do |
|
|
|
|
|
|
|
grep -q '/sysroot' /proc/mounts && break; |
|
|
|
|
|
|
|
|
|
|
|
for f in /mount/*.sh; do |
|
|
|
for f in /mount/*.sh; do |
|
|
|
[ -x "$f" ] && . "$f"; |
|
|
|
[ -x "$f" ] && . "$f"; |
|
|
|
[ "$ROOTFS_MOUNTED" ] && break; |
|
|
|
[ "$ROOTFS_MOUNTED" ] && break; |
|
|
|
done |
|
|
|
done |
|
|
|
[ "$ROOTFS_MOUNTED" ] && break; |
|
|
|
|
|
|
|
sleep 1 |
|
|
|
sleep 1 |
|
|
|
i=$(($i+1)) |
|
|
|
i=$(($i+1)) |
|
|
|
( |
|
|
|
( |
|
|
|