Ubuntu altında suspend ve suspend2(hibernate)
From Lapis Wiki
Konu başlıkları |
Giriş
Bazı durumlarda sisteminizi tümüyle kapatmak yerine, geçici olarak kapatıp, bir süre sonra tekrar açmak istersiniz. Bu gibi bir durumda Suspend ve Hibernate'den yararlanabilirsiniz. Suspend (ya da asıl olarak suspend to ram,ACPI state 3) sisteminizdeki o anki bilgileri Ram'inize aktarır ve sadece ram için gerekli olan enerjiyi kullanır (oldukça az). Ancak bu çok az enerji kullanılmasından feragat etmeniz, sisteminizi genel olarak 2-3 saniyede tekrar karşınızda görmeniz anlamına gelir. Kısacası oldukça karlı. Hibernate'de ise (ya da asıl olarak suspend to disk,ACPI state4) sisteminiz tamamen diskinize kaydedilir. Şu an için Linux üzerinde 3 farklı yol mevcut: kernele dahil olan swsusp,uswsusp ve suspend2 (software suspend). Aslında tümü için de hala geliştiriliyor diyebiliriz. Ancak en kullanışlısı ve işe yarar olanı suspend2 gibi gözükmekte.
Suspend
Tahmin ediyorum ki zaten standart Ubuntu kurulumlarında bu öntanımlı olarak işe yarar halde gelmektedir. Benim gibi Server üzerinden kurulum yapanlar ya da problemi olanlar için elle bunun nasıl yapılacağını tarif edelim. Öncelikle sisteminizin bunu destekleyip desteklemediğini görmek için:
cat /sys/power/state
komutunu verin. Çıktıların arasında "mem" varsa sisteminiz destekliyor demektir. Kısacası
sudo echo -n mem > /sys/power/state
komutu ile suspend edebilirsiniz fakat bazı ufak tefek görüntü problemlerinden dolayı şöyle bir betik kullanmanız daha iyi olacaktır. Aşağıdaki satırları bir dosyaya kaydedip suspend.sh (veya istediğiniz bir başka isim) ismini verin ve /usr/bin dizinine taşıyın,çalıştırma hakkı verin.
#!/bin/sh
# discover video card's ID
ID=`lspci | grep VGA | awk '{ print $1 }' | sed -e 's@0000:@@' -e 's@:@/@'`
# securely create a temporary file
TMP_FILE=`mktemp /var/tmp/video_state.XXXXXX`
trap 'rm -f $TMP_FILE' 0 1 15
# switch to virtual terminal 1 to avoid graphics
# corruption in X
chvt 1
# write all unwritten data (just in case)
sync
# dump current data from the video card to the
# temporary file
cat /proc/bus/pci/$ID > $TMP_FILE
# suspend
echo -n mem > /sys/power/state
# restore video card data from the temporary file
# on resume
cat $TMP_FILE > /proc/bus/pci/$ID
# switch back to virtual terminal 7 (running X)
chvt 7
# remove temporary file
rm -f $TMP_FILE
Daha sonra bunu
sudo sh suspend.sh
komutuyla çalıştırabilirsiniz.
Ayrıca şu satırı:
Option "VBERestore" "true"
/etc/X11/xorg.conf dosyanızdaki grafik kartı bölümünüze eklemeniz gerekli. Kısaca şu şekilde görünecektir:
Section "Device"
Identifier "NVIDIA Corporation NV40M? [GeForce Go 6200]"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "VBERestore" "true"
EndSection
Hibernate
Ben burada yukarıda da bahsettiğim gibi en kullanılabilir olan suspend2 kurulumunu anlatacağım. Öncelikle suspend2'yi sisteme kurmamız gerekli.
deb http://dagobah.ucc.asn.au/ubuntu-suspend2 dapper/
satırını /etc/apt/sources.list dosyanıza ekleyin ve
sudo aptitude update
komutunu vererek depolarınızı güncelleyin. Eğer GPG hatası veya uyarısı gibi bir şey alırsanız, verilen GPG anahtarını kullanarak
gpg --keyserver subkeys.pgp.net --recv KEY gpg --export --armor KEY | sudo apt-key add -
komutlarını verin ve tekrar update yapın. Yukarıdaki iki komuttaki KEY yerine size verilen anahtarı kullanın.
Güncelleme işleminden sonra,
sudo aptitude install suspend2
komutu ile suspend2'yi kurun. Suspend2 bir meta pakettir ve beraberinde sisteminizde yoksa şu paketleri de kuracaktır:
linux-image-2.6.15-xx-686 initramfs-tools-suspend2 suspend2-userui-usplash hibernate acpi-support
Paketler kurulduktan sonra, /boot/grub/menu.lst dosyanıza ufak bir ekleme yapmalısınız. Eğer yeni kernel kurulduysa bu kernelin satırına veya zaten sizde son kernel kurulu ise halihazırdaki kernel satırınıza şöyle bir ekleme yapacaksınız:
resume2=swap:/dev/hdaX
Buradaki X sizin swap alanınızın diskinizdeki bölüm numarasını gösterir. Eklemeyi ise şuraya yapacaksınız:
kernel /boot/vmlinuz-2.6.15-26-686 root=/dev/sda5 ro quiet rootflags=data=writeback resume2=swap:/dev/sda3
Görüldüğü gibi benim swap bölümüm /dev/sda3 olduğu için onu ekledim. Siz de kendi swap bölümünüzü eklemelisiniz. Eğer swap bölümünüzün ne olduğunu bilmiyorsanız
swapon -s
komutu ile öğrenebilirsiniz.
Yeni kernelinizle sistemi tekrar başlatıp
sudo hibernate
komutu ile sistemi hibernate edebilirsiniz.
Hatırlatma ve Uyarılar
Suspend to ram şu an sorun çıkartmamakta, ancak hibernate (suspend2) şu an için hala geliştirilmekte olduğundan bazı problemlerle beraber gelebilir. Örneğin ben kullanmak için --force parametresini eklemek zorunda kalıyorum. Ayrıca sistem kendine geldiğinde nvidia modülünü kaldıramadığı gibi garip bir uyarıyla beraber açılıyor. Bunun haricinde büyük bir problem yok.
İki şekilde de suspend ve hibernate , amarok açıkken denenmiş ve amarokun testten kaldığı görülmüştür (ya da suspend ve hibernate kaldı :-) ).
Yeni kernel kuracak ve nvidia sahibi kullanıcılar eğer yeni kernelle sistemi açtıklarında nvidia modülü yüklenemiyor hatası alırlarsa (yukarıda bahsettiğim uyarı gibi değil, bu bir hatadır ve X açılmaz) restricted-modülleri tekrar yüklemek zorunda kalabilirler.
sudo aptitude linux-restircted-modules-`uname -r`
komutu işe yarayacaktır. `uname -r` yeni kernel ile sistemi başlattıktan sonra işe yarar. Yeni kernelle başlatmadan önce en son yüklenen kerneli buraya yazmalısınız: 2.6.15-26-686 gibi.
Kullanılan kaynaklar:
