2014. május 3., szombat

Hibernálás Ubuntu 14.04 LTS alatt

Az előző disztribúcióhoz készült leírás egy az egyben használható Ubuntu 14.04 LTS alatt is. Közzéteszem (újra) aktualizált állapotban. Előre jelzem, ez a megoldás valószínű, de nem biztos, hogy minden számítógépen használható, több gépen teszteltem, eddig valamennyin bevált. Az esetleges komplikációkért felelősséget nem vállalok! Az első lépés a SWAP tisztázása.

A telepítéskor megadott SWAP (cserehely) partíció egész egyszerűen "eltűnt", mintha nem is hoztam volna létre SWAP partíciót, így hát azt a 8 GB-s partíciót használtam, amit már egyszer elkészítettem, ezt nyugodtan be tudjuk állítani a rendszer használata közben is. Először is listázzuk ki az lsblk paranccsal azt, hogy milyen partícióink is vannak! Ha nem vagyunk teljesen figyelmetlenek, észre fogjuk venni már csak a méretéből adódóan is, mely partíciót szántuk cserehelynek, ezt a terminálunk /dev/sdXY jelöléssel fogja ellátni (pl. /dev/sda7). Ebben a leírásban a /dev/sda7 legyen a SWAP-nek szánt partíció!

FIGYELEM!!! A CSEREHELY PARTÍCIÓ MÉRETE LEGYEN A FIZIKAI MEMÓRIÁNK MÉRETÉNEK ~KÉTSZERESE (8 GB-NÁL NAGYOBB MÉRETŰ PARTÍCIÓ HASZNÁLATA NEM SZÜKSÉGES)!

Ha telepítéskor csináltunk cserehely partíciót, és az cryptswap néven még él, először el kell távolítanunk. A sudo blkid parancs megmondja nekünk, mi a szóban forgó partíció UUID azonosítója. A lecsatoláshoz először is a sudo swapoff -U UUID parancsra lesz szükségünk, ahol az UUID helyére az éppen aktuális, még működő SWAP partíciónk azonosítóját kell írnunk (SHIFT+CTRL+C a másoláshoz, SHIFT+CTRL+V a beillesztéshez terminál alatt). Ezután szerkesszük az fstab-ot a sudo nano /etc/fstab paranccsal, és a /dev/mapper/... kezdetű sort kommenteljük (írjunk a sor elé közvetlenül egy # karaktert), majd mentsük el a fájlt (CTRL+X)! Ha ezzel megvagyunk, adjuk ki a sudo cryptsetup remove cryptswap1 parancsot, és már kezdhetjük is az új SWAP partíciónk létrehozását (az előzőket akkor kell megcsinálni, ha az lsblk azt mutatta, hogy van aktív cryptswap/swap partíciónk).

SWAP létrehozásához nyissunk egy terminált, és adjuk ki a sudo mkswap /dev/sda7 parancsot! Ezután meg kell néznünk a cserehely partíciójának UUID azonosítóját. Ehhez a sudo blkid parancsot kell begépelnünk. Ha ezzel megvagyunk, terminálon belül jelöljük ki (idézőjelek nélkül), majd másoljuk az azonosítót a SHIFT+CTRL+C billentyűkombinációval, és gépeljük be a sudo swapon -U UUID parancsot (az UUID helyére az imént vágólapra helyezett azonosítót illesszük be a SHIFT+CTRL+V billentyűkombinációval)! Ha ezzel megvagyunk, módosítsuk a sudo nano /etc/fstab paranccsal előhívott terminálos szövegszerkesztővel az fstab-ot! Egy új sorba illesszük be a  következő szöveget (ha van már sora a SWAP-nak, azt előtte töröljük ki, vagy ami még hatékonyabb, az xxx-et cseréljük csak ki a megfelelőre):

UUID=xxx    none    swap    sw      0   0

Az xxx helyére írjuk a nemrég kimásolt UUID azonosítót! Ha ezzel megvagyunk (elmentettük a fájlt CTRL+X-szel is ezt megtéve akár), az lsblk parancs ismételt begépelése hatására a /dev/sda7-es cserehely partíciónk mellett látnunk kell a [SWAP] csatolási pontot. Ez azt jelenti, hogy a SWAP partíciónk él és virul. Hibernálni azonban még nem tudjuk a gépet.

Módosítanunk kell a sudo nano /etc/default/grub fájlt is, és valahol a fájl elején egy GRUB_CMDLINE_LINUX_DEFAULT="..." sort találunk. A sor végére (de értelemszerűen az idézőjel elé, a már meglévő adatokat ettől egy szóközzel elválasztva) be kell illesztenünk a resume=UUID=xxx szöveget, majd el kell mentenünk a fájlt (itt se felejtsük el az xxx helyére beírni a megfelelő azonosítót). Ha ezzel megvagyunk, kiadjuk a sudo update-grub parancsot, és a gépünk elméletben már hibernálható, viszont ezt egyelőre csak terminálból tudjuk megtenni (sudo pm-hibernate), egyéb híján. Ha azt szeretnénk, hogy a "fogaskerék" menünkben is megjelenjen a hibernálás funkció, egyéb teendőnk is van.

Hozzuk létre a megfelelő fájlt a sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla paranccsal, aminek a tartalma a következő legyen:

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes

CTRL+X billentyűkombinációval mentsük el a fájlunk, majd adjuk ki a killall indicator-session-service parancsot! Ha mindezzel megvagyunk, nyissuk meg a sudo nano /etc/initramfs-tools/conf.d/resume paranccsal a szóban forgó fájlt, és a resume=UUID=xxx részt módosítjuk úgy, hogy az xxx helyére a megfelelő azonosító kerüljön, majd a fájl elmentése után futtassuk a sudo update-initramfs -u parancsot! Ha a szóban forgó fájlban nincs szöveg, akkor módosítás helyett írjuk bele a megfelelő szöveget (resume=UUID=xxx)! A gépünket ezzel hibernálhatóvá tettük. (Egy újraindítás lehet, hogy "nem árt" neki.) Kellemes játszadozást!

BUG! Ha hibernálás után nincs internetkapcsolat, a WiFi adapter nem üzemel, adjuk ki a sudo service network-manager restart parancsot, és a hiba elhárul. NVIDIA Optimus kártya által hajtott szoftver esetén a programot sajnos újra el kell indítanunk.

4 megjegyzés:

  1. A sudo pm-hibernate parancs müködik, de a menüben és az energiagazdálkodásnál továbbra is le van tiltva. Javaslat?

    VálaszTörlés
    Válaszok
    1. "Hozzuk létre a megfelelő fájlt a sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla paranccsal, aminek a tartalma a következő legyen:

      [Re-enable hibernate by default in upower]
      Identity=unix-user:*
      Action=org.freedesktop.upower.hibernate
      ResultActive=yes

      [Re-enable hibernate by default in logind]
      Identity=unix-user:*
      Action=org.freedesktop.login1.hibernate
      ResultActive=yes

      CTRL+X billentyűkombinációval mentsük el a fájlunk, majd adjuk ki a killall indicator-session-service parancsot!"

      Törlés
  2. Szia! Megvan a menüpont, de kiválasztom, s mintha rögtön vissza is kapcsolnám: leáll egy pillanatra, majd "visszaébred" :-( Javaslat?

    VálaszTörlés
    Válaszok
    1. Szia! Légy szíves, másold be a /etc/fstab, /etc/default/grub fájlok tartalmát, valamint az lsblk parancs kimenetét!

      Törlés