Suspend2
Aus Cryptronic
Inhaltsverzeichnis |
Der Ruhezustand auf einem gecrypteten System
Vorberteitungen
Als erstes braucht man die KernelSources die Softwaresuspend beinhalten.
emerge sys-kernel/suspend2-sources
I das neue Verzeichnis wechseln und ein make oldconfig ausführen.
Dann
make menuconfig
Kernel kompilieren
Unter "Power management options":
Power management options (ACPI, APM) ---> [*] Power Management support Software Suspend Software Suspend 2 --->
Power management options (ACPI, APM) --->
[*] Power Management support
Software Suspend []
Software Suspend 2 --->
<*> Software Suspend 2
Image Storage (you need at least one writer)
<*> Swap Writer
<*> Warn if possibility of filesystem corruption
Unter "Cryptographic options" </pre> Cryptographic --->
<*> Cryptographic API <*> LZF compression algorithm</pre>
Auf jeden Fall alles statisch kompilieren und auf keinen Fall als Modul! Den Kernel nach /boot kopieren und grub anpassen:
die /boot/grub/menu.lst
title Gentoo 2.6.x Suspend root (hd0,0) kernel (hd0,0)/kernel-2.6.x-gentoo-suspend-rx root=/dev/ram0 rw init=/linuxrc resume2=swap:/dev/mapper/swap0 initrd (hd0,0)/initrd
nun muss man noch die initrd anpassen.
Meine initrd:
!/bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
# Filter kernel messages on boot
dmesg -n 1
haltme() {
b=0
while [ "$b" = 0 ]
do
sleep 60
done
}
mount -t proc none /proc
CMDLINE=`cat /proc/cmdline`
## Create /dev/mapper/control nod for udev systems # Only if you choosed
sh devmap_mknod # to use devmap_mknod
#/bin/bash
#loadkeys
loadkeys /usr/share/keymaps/i386/qwertz/de.map.gz
echo ""
echo ""
echo ""
cat ./ascii
echo ""
# correct password while loop
echo "Please insert passphrase"
read key
c=0
while [ "$c" != 5 ]
do
echo $key | cryptsetup luksOpen /dev/sda2 swap0
echo $key | cryptsetup luksOpen /dev/sda3 root
echo > /proc/suspend2/do_resume
umount -n /proc
mount -t reiserfs /dev/mapper/root /root
if [ "$?" = 0 ]; then
echo "Swap Decrypted"
echo "Root Decrypted"
break
else
umount /root
cryptsetup luksClose root
cryptsetup luksClose swap
let c=$c+1
if [ "$c" = 5 ]; then
echo "Illegal Trasspassing attempted"
echo "Halting..."
haltme
fi
fi
done
echo "Switching..."
cd /root
mkdir initrd
pivot_root . initrd
# start init and flush ram device
exec chroot . /bin/sh <<- EOF >dev/console 2>&1
umount initrd
rm -rf initrd
blockdev --flushbufs /dev/ram0
exec /sbin/init ${CMDLINE}
EOF
Ab in den neuen Kernel booten!
System Vorbereiten
als erstes benötigen wir das hibernate Script.
emerge hibernate-script
Die Konfigurationsdateien liegen unter /etc/hibernate
hibernate.conf
Die conf Datei bearbeiten:
ProcSetting extra_pages_allowance 5000 RestartServices alsasound hotplug net.eth1