cryptinitsc 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/sh
  2. load_modules() {
  3. (sed "s,^[^#][^[:space:]]*,insmod /lib/modules/$(uname -r)/&.ko," $* | sh 2>&- || :)
  4. }
  5. echo -n "Kernel currently running: "
  6. uname -rsmo
  7. echo -n "Kernel parameters: "; cat /proc/cmdline
  8. for word in $(cat /proc/cmdline) ; do
  9. case $word in
  10. [a-z]*=*)
  11. eval "export $word"
  12. ;;
  13. esac
  14. done
  15. echo 0 > /proc/sys/kernel/printk
  16. load_modules /etc/modules
  17. for f in /etc/modules.d/*; do
  18. [[ -e $f ]] && load_modules /etc/modules.d/*
  19. break
  20. done
  21. mount /dev/sda1 /boot
  22. mkdir -p /var/run/openct
  23. openct-control init
  24. pcscd -f >/dev/null &
  25. sleep 2
  26. fail=0
  27. count=0
  28. while true; do
  29. pkcs15-crypt --decipher --input /boot/key --pkcs1 --raw >/tmp/skey
  30. cryptsetup -d /tmp/skey --batch-mode luksOpen $swap swapcrypt
  31. if [ $? = 0 ];then
  32. break
  33. fi
  34. if [ $count = 2 ];then
  35. echo "You are not allowed"
  36. sleep 3
  37. fail=1
  38. break
  39. fi
  40. count=$(($count+1))
  41. done
  42. if [ $fail -eq 1 ];then
  43. echo "Poweroff."
  44. p
  45. fi
  46. echo "Try to resume from hibernation"
  47. echo "254:0" > /sys/power/resume
  48. cryptsetup -d /tmp/skey --batch-mode luksOpen $root rootcrypt
  49. swapon /dev/mapper/swapcrypt
  50. mount /dev/mapper/rootcrypt /mnt
  51. pkill pcscd
  52. rm /tmp/skey
  53. umount /proc
  54. umount /sys
  55. umount /dev/pts
  56. umount /tmp