Расписываю подробно. Я немного модифицировал init, так должно быть удобно всем - и usb и HDD. В инит я вставил такой код:
mount -t proc none /proc
mount -t sysfs none /sys
########### Tuxonice wake up ##############
if [ "$tux_path" != "" -a "$tux_delay" != "" ]; then
echo -n "Tuxonice wake up..." > /dev/console
sleep $tux_delay
echo $tux_path > /sys/power/tuxonice/resume
echo 1 > /sys/power/tuxonice/do_resume
sleep 3
exit
fi
############################################
#[ -e $PMEDIA ] && usbfunc
#[ "`echo "$PMEDIA" | grep 'usb'`" != "" ] && usbfunc #Pro add here
mount -t rootfs -o remount,rw rootfs /
ln -s /proc/mounts /etc/mtab #resize2fs,e2fsck need this.
То есть появляются два новых параметра для menu.lst:
tux_path - то же, что и resume, но передается не напрямую ядру, а через init. Зачем? Чтобы вставить задержку, без которой USB не заводится.
tux_delay - задержка в секундах. Если я ставлю <5, то получаю картинку как выше. На 5 хорошо все работает. В случае HDD и 0 прокатит, наверное.
Вот кусок из menu.lst:
title PuppyRus 2.11 Snow Dog (Tuxonice)
find --set-root --ignore-floppies --ignore-cd /PuppyRus_2.11/initrd.gz
kernel /PuppyRus_2.11/vmlinuz pmedia=usbflash psubdir=PuppyRus_2.11 pfix=ram tux_path=swap:/dev/sdb1:0x130df8 tux_delay=5
initrd /PuppyRus_2.11/initrd.gz
Весь процесс выглядит так:
Я загружаюсь как обычно, потом
# swapon /mnt/home/swapfile
# echo swap:/dev/sdb1:0x130df8 > /sys/power/tuxonice/resume
и правлю один из пунктов menu.lst
Потом hibernate - засыпаю, выбираю этот пункт - просыпаюсь, опять hibernate - опять засыпаю и т.д.
Засыпание идет на глаз столько же, сколько обычное сохранение, а просыпание гораздо быстрее загрузки, заметно. Мне даже начинает нравится
Надо еще с X-ами разобраться.
http://www.mediafire.com/file/sp7gcqklfou6ffd/initrd.gzможно тестировать. ошибок фс больше вроде нет, исправил баг.
UPD: Исправил неточность в тексте.