Implemented another level of "early shell". Now we have 2 early shells - one right after the initial mount procedure and another one right after the overlay procedure.
This commit is contained in:
parent
a01bc817b4
commit
f86add64c6
@ -159,7 +159,7 @@ for DEVICE in /dev/* ; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Move critical file systems to the new mountpoint.
|
# Move critical file systems to the new mountpoint.
|
||||||
echo "Remounting /dev, /sys, /tmp and /proc in /mnt..."
|
echo "Remounting /dev, /sys, /tmp and /proc in /mnt."
|
||||||
mount --move /dev /mnt/dev
|
mount --move /dev /mnt/dev
|
||||||
mount --move /sys /mnt/sys
|
mount --move /sys /mnt/sys
|
||||||
mount --move /proc /mnt/proc
|
mount --move /proc /mnt/proc
|
||||||
@ -168,6 +168,7 @@ mount --move /tmp /mnt/tmp
|
|||||||
# The new mountpoint becomes file system root. All original root folders are
|
# The new mountpoint becomes file system root. All original root folders are
|
||||||
# deleted automatically as part of the command execution. The '/sbin/init'
|
# deleted automatically as part of the command execution. The '/sbin/init'
|
||||||
# process is invoked and it becomes the new PID 1 parent process.
|
# process is invoked and it becomes the new PID 1 parent process.
|
||||||
|
echo "Moving from initramfs root area to overlayfs root area."
|
||||||
exec switch_root /mnt /etc/03_init.sh
|
exec switch_root /mnt /etc/03_init.sh
|
||||||
|
|
||||||
echo "(/etc/02_overlay.sh) - there is a serious bug..."
|
echo "(/etc/02_overlay.sh) - there is a serious bug..."
|
||||||
|
@ -37,13 +37,15 @@
|
|||||||
#
|
#
|
||||||
# exec /sbin/init
|
# exec /sbin/init
|
||||||
|
|
||||||
|
# Print message on screen.
|
||||||
cat << CEOF
|
cat << CEOF
|
||||||
|
|
||||||
Wait 5 seconds for the default system initialization process based on the
|
Wait 5 seconds for the system initialization process or press any key for
|
||||||
files /sbin/init and /etc/inittab or press any key for PID 1 shell.
|
PID 1 shell outside of the initramfs area.
|
||||||
|
|
||||||
CEOF
|
CEOF
|
||||||
|
|
||||||
|
# Wait 5 second or until any keybord key is pressed.
|
||||||
read -t 5 -n1 -s key
|
read -t 5 -n1 -s key
|
||||||
|
|
||||||
if [ "$key" = "" ] ; then
|
if [ "$key" = "" ] ; then
|
||||||
@ -51,20 +53,23 @@ if [ "$key" = "" ] ; then
|
|||||||
echo "Executing /sbin/init as PID 1."
|
echo "Executing /sbin/init as PID 1."
|
||||||
exec /sbin/init
|
exec /sbin/init
|
||||||
else
|
else
|
||||||
|
# Print message on screen.
|
||||||
# Using no indentation for this snippet or otherwise it causes kernel panic.
|
|
||||||
cat << CEOF
|
cat << CEOF
|
||||||
|
This is PID 1 shell outside of the initramfs area. Execute the following in
|
||||||
This is PID 1 shell. Execute the following in order to continue with the
|
order to continue with the system initialization.
|
||||||
default system initialization process:
|
|
||||||
|
|
||||||
exec /sbin/init
|
exec /sbin/init
|
||||||
|
|
||||||
CEOF
|
CEOF
|
||||||
|
|
||||||
|
if [ "$PID1_SHELL" = "true" ] ; then
|
||||||
|
# PID1_SHELL flag is set which means we have controlling terminal.
|
||||||
|
exec sh
|
||||||
|
else
|
||||||
# Interactive shell with controlling tty as PID 1.
|
# Interactive shell with controlling tty as PID 1.
|
||||||
exec setsid cttyhack sh
|
exec setsid cttyhack sh
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo "(/etc/03_init.sh) - there is a serious bug..."
|
echo "(/etc/03_init.sh) - there is a serious bug..."
|
||||||
|
|
||||||
|
@ -31,6 +31,39 @@ echo "Welcome to \"Minimal Linux Live\" (/init)"
|
|||||||
# Let's mount all core file systems.
|
# Let's mount all core file systems.
|
||||||
/etc/01_prepare.sh
|
/etc/01_prepare.sh
|
||||||
|
|
||||||
|
# Print message on screen.
|
||||||
|
cat << CEOF
|
||||||
|
|
||||||
|
Wait 5 seconds to continue with overlay initialization process or press any
|
||||||
|
key for PID 1 shell inside the initramfs area.
|
||||||
|
|
||||||
|
CEOF
|
||||||
|
|
||||||
|
# Wait 5 second or until any keybord key is pressed.
|
||||||
|
read -t 5 -n1 -s key
|
||||||
|
|
||||||
|
if [ ! "$key" = "" ] ; then
|
||||||
|
# Print message on screen.
|
||||||
|
cat << CEOF
|
||||||
|
This is PID 1 shell inside the initramfs area. Execute the following in order
|
||||||
|
to continue with the overlay initialization process.
|
||||||
|
|
||||||
|
exec /etc/02_overlay.sh
|
||||||
|
|
||||||
|
Execute the following in order to skip the overlay initialization and continue
|
||||||
|
directly with the system initialization:
|
||||||
|
|
||||||
|
exec /sbin/init
|
||||||
|
|
||||||
|
CEOF
|
||||||
|
|
||||||
|
# Set flag which indicates that we have obtained controlling terminal.
|
||||||
|
export PID1_SHELL=true
|
||||||
|
|
||||||
|
# Interactive shell with controlling tty as PID 1.
|
||||||
|
exec setsid cttyhack sh
|
||||||
|
fi
|
||||||
|
|
||||||
# Create new mountpoint in RAM, make it our new root location and overlay it
|
# Create new mountpoint in RAM, make it our new root location and overlay it
|
||||||
# with our storage area (if overlay area exists at all). This operation invokes
|
# with our storage area (if overlay area exists at all). This operation invokes
|
||||||
# the script '/etc/03_init.sh' as the new init process.
|
# the script '/etc/03_init.sh' as the new init process.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user