#!/bin/ash # This is the very first script invoked by the Linux kernel and is # running out of the ram disk. There are no fileysstems mounted. # It is important to have a way to invoke a recovery shell in case # the boot scripts are messed up, but also important to modify the # PCRs if this happens to prevent the TPM disk keys from being revealed. # First thing it is vital to mount the /dev and other system directories mkdir /proc /sys /dev /tmp /boot /media 2>&- 1>&- mount /dev mount /proc mount /sys # Recovery shells will erase anything from here mkdir -p /tmp/secret # Setup our path export PATH=/sbin:/bin # Now it is safe to print a banner if [ -r /etc/motd ]; then cat /etc/motd fi # Load the date from the hardware clock, setting it in local time hwclock -l -s # Read the system configuration parameters . /etc/functions . /etc/config if [ ! -x "$CONFIG_BOOTSCRIPT" ]; then recovery 'Boot script missing? Entering recovery shell' # just in case... tpm extend -ix 4 recovery exec /bin/ash fi # Give the user a second to enter a recovery shell read \ -t "1" \ -p "Press 'r' for recovery shell: " \ -n 1 \ boot_option echo if [ "$boot_option" = "r" ]; then # Start an interactive shell recovery 'User requested recovery shell' # just in case... tpm extend -ix 4 recovery exec /bin/ash fi echo '***** Normal boot' exec "$CONFIG_BOOTSCRIPT" # We should never reach here, but just in case... recovery 'Boot script failure? Entering recovery shell' # belts and suspenders, just in case... tpm extend -ix 4 recovery exec /bin/ash