Bezproblemowa hibernacja - patch TuxOnIce
Kategoria: Artykuły, etykiety: system, hibernacja, kernel
Dodany: 2011-01-01 21:42
(zmodyfikowany: 2011-01-16 19:24)
Przez: k4misiek
Wyświetleń: 8138
Dystrybucyjne jądro domyślnie nie wspiera TuxOnIce. Jeżeli twój system cierpi na problemy z hibernacją i późniejszym wybudzaniem komputera to ten poradnik jest dla Ciebie.
Z chwilą pisania następujące pakiety znajdowały się w:
linux-patch-tuxonice - unstable (Sid) ; tuxonice-userui - testing (Squeeze) ; libusplash0 - stable (Lenny) - zależność tuxonice-userui ;
Dlatego na samym początku dodajemy repozytoria dla Lenny, Squeeze i Sid a następnie w apt.conf ustawiamy główną dystrybucję jakiej używamy. W moim przypadku jest to squeeze, dzięki temu zabiegowi mogę wpisać aptitude dist-upgrade a system i tak nie zostanie zaktualizowany do unstable(Sid) czy experimental.
# nano -w /etc/apt/sources.list
deb http://ftp.pl.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.pl.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
deb http://ftp.pl.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.pl.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb http://ftp.pl.debian.org/debian/ sid main contrib non-free
deb-src http://ftp.pl.debian.org/debian/ sid main contrib non-free
deb http://ftp.pl.debian.org/debian/ experimental main contrib non-free
deb-src http://ftp.pl.debian.org/debian/ experimental main contrib non-free
# nano -w /etc/apt/apt.conf
APT::Default-Release "squeeze";
Instalujemy wymagane oprogramownie:
# aptitude install pm-utils libncurses5-dev linux-source-2.6.32 kernel-package linux-patch-tuxonice tuxonice-userui build-essential
Usuwamy obecny symlink /usr/src/linux który zapewne wskazuje na linux-headers (możesz to sprawdzić za pomocą ls -l). Rozpakowujemy paczkę linux-source którą przed chwilą ściąnęliśmy i tworzymy nowy symlink wskazujący na rozpakowane źródła jądra:
# cd /usr/src/
# unlink linux
# tar -xf linux-source-2.6.32.tar.bz2
# ln -s linux-headers-2.6.32 linux
Konfiguracja jądra dystrybucyjnego powinna znajdować się w /boot/config-*, gdyby tak nie było to z pomocą przychodzi http://merkel.debian.org/~jurij/ . Kopiujemy konfig i nakładamy łatkę TuxOnIce:
# cp /boot/config-`uname -r` /usr/src/linux/.config
# cd linux
# /usr/src/kernel-patches/all/apply/tuxonice
Powinniśmy otrzymać odpowiedni komunikat, że łatka została nałożona ale warto jeszcze sprawdzić czy wymagane nastepujące opcje zostaną wkompilowane na stałe (nie mogą być jako moduły). Aby przyspieszyć proces hibernacji można wykorzystać dość szybką metodę kompresji LZO lub w przypadku problemów wolniejszą LZF. We wcześniejszej konfiguracji którą skopiowaliśmy obie kompresje ustawione są jako moduł, musimy to zmienić. Na tym etapie przydatna(ale nie wymagana) może być wiedza o swoim sprzęcie, odznaczając sterowniki których nie potrzebujemy znacznie skrócimy proces kompilacji.
>Power management and ACPI options
> <*> Enhanced Hibernation (TuxOnIce)
> <*> Swap/File Allocator
> <*> Compression support
> <*> Userspace User Interface support
> (/usr/lib/tuxonice-userui/tuxoniceui_text) Default userui program location
> [*] Replace swsusp by default
>Cryptographic API
> <*> LZO compression algorithm
lub
> <*> LZF compression algorithm
# make menuconfig
Czas skompilować jądro i stworzyć łatwą do instalacji paczuszkę. Proces ten będzie trwał bardzo długo lub krótko w zależności od tego jak dużo niepotrzebnych sterowników zostawiliśmy do skompilowania. Na samym końcu zostanie wyświetlona informacja jak długo trwała kompilacja... Herbatę na pewno zdążycie zaparzyć ;P
# time (make-kpkg --jobs 3 --append-to-version="-tuxonice" --revision="2.6.32-29" --initrd kernel_headers kernel_image)
Instalujemy gotowe jądro i upewniamy się, czy odpowiednie wpisy zostały dodane do bootloadera. Szczególną uwagę należy zwrócić na initrd, gdyby takiego wiersza nie było w sekcji z naszym nowym jądrem to należy wygenerować ręcznie za pomocą update-initramfs -c -k po czym zaktualizować bootloader za pomocą update-grub2:
# dpkg -i ../*.deb
# cat /boot/grub/grub.cfg
Jak używamy DKMS(Dynamic Kernel Module Support Framework) to sterowniki do karty graficznej i inne aplikacje które dodają własne moduły do /lib/modules/ powinny zostać przeinstalowane automatycznie po instalacji nowego jądra, w przeciwnym wypadku robimy to ręcznie. Na koniec uruchamiamy system ponownie z nowym jądrem i hibernujemy komputer. W tym drugim przypadku, powinien wyświetlić się ekran tekstowy tuxonice[(/usr/lib/tuxonice-userui/tuxoniceui_text) Default userui program location] z paskiem postępu podczas hibernacji i wybudzania.
Na koniec wspomnę, że na Intel(R) Core(TM)2 Duo CPU T5800 @ 2.00GHz i dystrybucyjnym konfigu całość kompilowała się i budowała do paczki około 2 godzin, natomiast po optymalizacji pod mój sprzęt około 6minut.
Wszelkie sugestie, błędy i problemy proszę zgłaszać w odpowiednim temacie w dziale kernel. http://forum.dug.net.pl/viewtopic.php?id=18019