#!/bin/sh load_modules() { (sed "s,^[^#][^[:space:]]*,insmod /lib/modules/$(uname -r)/&.ko," $* | sh 2>&- || :) } echo -n "Kernel currently running: " uname -rsmo echo -n "Kernel parameters: "; cat /proc/cmdline for word in $(cat /proc/cmdline) ; do case $word in [a-z]*=*) eval "export $word" ;; esac done echo 0 > /proc/sys/kernel/printk load_modules /etc/modules for f in /etc/modules.d/*; do [[ -e $f ]] && load_modules /etc/modules.d/* break done mount /dev/sda1 /boot mkdir -p /var/run/openct openct-control init pcscd -f & sleep 2 fail=0 count=0 while true; do pkcs15-crypt --decipher --input /boot/key --pkcs1 --raw >/tmp/skey cryptsetup -d /tmp/skey --batch-mode luksOpen $swap swapcrypt if [ $? = 0 ];then break fi if [ $count = 2 ];then echo "You are not allowed" sleep 3 fail=1 break fi count=$(($count+1)) done if [ $fail -eq 1 ];then echo "Poweroff." p fi echo "Try to resume from hibernation" echo "254:0" > /sys/power/resume cryptsetup -d /tmp/skey --batch-mode luksOpen $root rootcrypt swapon /dev/mapper/swapcrypt mount /dev/mapper/rootcrypt /mnt umount /proc umount /sys umount /dev/pts rm /tmp/skey pkill pcscd umount /tmp