diff --git a/src/08_generate_rootfs/etc/02_overlay.sh b/src/08_generate_rootfs/etc/02_overlay.sh index 57e9c098e..fdd5bc5e1 100755 --- a/src/08_generate_rootfs/etc/02_overlay.sh +++ b/src/08_generate_rootfs/etc/02_overlay.sh @@ -159,7 +159,7 @@ for DEVICE in /dev/* ; do done # 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 /sys /mnt/sys 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 # deleted automatically as part of the command execution. The '/sbin/init' # 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 echo "(/etc/02_overlay.sh) - there is a serious bug..." diff --git a/src/08_generate_rootfs/etc/03_init.sh b/src/08_generate_rootfs/etc/03_init.sh index 852317407..200a36f15 100755 --- a/src/08_generate_rootfs/etc/03_init.sh +++ b/src/08_generate_rootfs/etc/03_init.sh @@ -37,13 +37,15 @@ # # exec /sbin/init +# Print message on screen. cat << CEOF - Wait 5 seconds for the default system initialization process based on the - files /sbin/init and /etc/inittab or press any key for PID 1 shell. + Wait 5 seconds for the system initialization process or press any key for + PID 1 shell outside of the initramfs area. CEOF +# Wait 5 second or until any keybord key is pressed. read -t 5 -n1 -s key if [ "$key" = "" ] ; then @@ -51,19 +53,22 @@ if [ "$key" = "" ] ; then echo "Executing /sbin/init as PID 1." exec /sbin/init else - -# Using no indentation for this snippet or otherwise it causes kernel panic. -cat << CEOF - - This is PID 1 shell. Execute the following in order to continue with the - default system initialization process: + # Print message on screen. + cat << CEOF + This is PID 1 shell outside of the initramfs area. Execute the following in + order to continue with the system initialization. exec /sbin/init CEOF - # Interactive shell with controlling tty as PID 1. - exec setsid cttyhack sh + 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. + exec setsid cttyhack sh + fi fi echo "(/etc/03_init.sh) - there is a serious bug..." diff --git a/src/08_generate_rootfs/init b/src/08_generate_rootfs/init index 4f1113068..670f81b75 100755 --- a/src/08_generate_rootfs/init +++ b/src/08_generate_rootfs/init @@ -31,6 +31,39 @@ echo "Welcome to \"Minimal Linux Live\" (/init)" # Let's mount all core file systems. /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 # with our storage area (if overlay area exists at all). This operation invokes # the script '/etc/03_init.sh' as the new init process.