mirror of
https://github.com/dracutdevs/dracut.git
synced 2024-10-27 00:55:34 +03:00
Make exec failure not kill init or switch_root.
If exec fails, then the shell will die unless the next command is part of a command list. So, exec $whatever || onoes is the way to go There are also some minor cleanups that were leftovers from splitting out switch_root in its current form.
This commit is contained in:
parent
3f9c86ab86
commit
9cead591ad
16
init
16
init
@ -57,7 +57,7 @@ udevd --daemon
|
||||
udevadm trigger >/dev/null 2>&1
|
||||
|
||||
# mount the rootfs
|
||||
export NEWROOT="/sysroot"
|
||||
NEWROOT="/sysroot"
|
||||
|
||||
# FIXME: there's got to be a better way ...
|
||||
# it'd be nice if we had a udev rule that just did all of the bits for
|
||||
@ -96,10 +96,10 @@ INIT=$(getarg init)
|
||||
}
|
||||
|
||||
source_all pre-pivot
|
||||
|
||||
exec switch_root "$NEWROOT" "$INIT" $CMDLINE
|
||||
# davej doesn't like initrd bugs
|
||||
echo "Something went very badly wrong in the initrd. Please "
|
||||
echo "file a bug against mkinitrd."
|
||||
sleep 100d
|
||||
exit 1
|
||||
echo "Switching to real root filesystem $root"
|
||||
exec switch_root "$NEWROOT" "$INIT" $CMDLINE || {
|
||||
# davej doesn't like initrd bugs
|
||||
echo "Something went very badly wrong in the initrd. Please "
|
||||
echo "file a bug against mkinitrd."
|
||||
emergency_shell
|
||||
}
|
||||
|
@ -72,7 +72,6 @@ update_newroot_libpath
|
||||
|
||||
# start looking for required binaries and bits of infrastructure
|
||||
BINDIRS="/bin /sbin /usr/bin /usr/sbin"
|
||||
INITDIRS="/sbin /etc /"
|
||||
RM=$(simple_find rm $BINDIRS) || die "Cannnot find rm on $NEWROOT"
|
||||
CHROOT=$(simple_find chroot $BINDIRS) || die "Cannot find chroot on $NEWROOT"
|
||||
LDD=$(simple_find ldd $BINDIRS) || die "Cannot find ldd on $NEWROOT"
|
||||
@ -108,5 +107,5 @@ run_from_newroot "$MOUNT_LDSO" "$MOUNT" -n --move . /
|
||||
# exec init.
|
||||
NEWROOT="."
|
||||
update_newroot_libpath
|
||||
run_from_newroot "$CHROOT_LDSO" exec "$CHROOT" "$NEWROOT" "$INIT" "$@"
|
||||
die "The chroot did not take for some reason"
|
||||
run_from_newroot "$CHROOT_LDSO" exec "$CHROOT" "$NEWROOT" "$INIT" "$@" || \
|
||||
die "The chroot did not take for some reason"
|
||||
|
Loading…
Reference in New Issue
Block a user