Suspend to disk amb fitxers swap
|
No apte per non-hackers ;-)
Si heu pensat en emprar un fitxer swap, però vos heu tirat enrera per por a no poder hivernar (swsuspend o suspend to disk), aquí teniu una explicació de com fer-ho.
La font de documentació principal és: "Documentation/power/swsusp-and-swap-files.txt" (està dins la documentació de Linux).
En resum diu que: "Es pot fer. Necessitam saber la partició a la que pertany el fitxer i la localització del primer bloc del fitxer dins el nostre sistema de fitxers i afegir aquestes dades als paràmetres d'arrencada del nucli de la següent forma: resume= resume_offset=".
La primera part és senzilla, en el meu cas és /dev/hda1. Si vos sembla bé passam a la segona directament...
He trobat dos comandaments que ens ajudaran a fer això (sobre un sistema de fitxers ext2/ext3): filefrag i debugfs.
El meu fitxer de swap el tenc localitzat a "/var/swap", empraré aquest nom de fitxer als exemples, juntament amb la partició /dev/hda1.
filefrag ens mostra molta informació, a la sisena línia trobam el que necessitam
# filefrag -v /var/swap | head -n 7
Checking /var/swap
Filesystem type is: ef53
Filesystem cylinder groups is approximately 111
Blocksize of file /var/swap is 4096
File size of /var/swap is 2147483648 (524288 blocks)
First block: 1675082
Last block: 2776529
Podem retallar la sortida així (per a fer un script que llegeixi aquesta dada):
# filefrag -v /var/swap | head -n 6 | awk '"First"==$1{print $3}'
1675082
Amb debugfs és més senzill, simplement executam:
# debugfs /dev/hda1 -R "bmap /var/swap 0"
debugfs 1.40.2 (12-Jul-2007)
1675082
(la primera línia va per STDERR, o sigui que no serà un problema)
De totes formes, la execució de filefrag és més ràpida (si retallam la sortida). D'una manera o l'altre haurem obtingut la informació que necessitam...
Ja tenim part de la feina feta, només ens falta configurar-ho al carregador d'arrencada.
Si empram Debian, bastarà que afegim " resume=/dev/hda1 resume_offset=1675082" a les "defoptions" del menu.lst i executem update-grub. Si no és el cas, podem afegir manualment aquesta informació a la línia de cada kernel, quedarà una cosa així:
title Debian GNU/Linux, kernel 2.6.24-rc2
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-rc2 root=/dev/hda1 ro profile resume=/dev/hda1 resume_offset=1675082
initrd /boot/initrd.img-2.6.24-rc2
savedefault
Ara només ens cal reiniciar la màquina i provar la suspensió a disc.
# echo -n disc > /sys/power/state
Vull afegir una cosa més, ja que és prou important. Cal recalcular el bloc d'inici del fitxer swap cada vegada, sobre tot si hem esborrat el fitxer, ja que pot canviar la localització dins el sistema de fitxers. Crec que l'únic que pot passar si l'offset canvia és que es negui a suspendre (a mi m'ha passat quan estava fent proves), però no ho vull assegurar, pot ser es pot quedar el sistema corrupte o sobreescriure un altre fitxer. Així que, al tanto!! |
Enviat a les 3:49 14/11/2007 a la categoria
Hacking
amb 0 comentaris.
|
|
Comentaris:
|
|
|
Articles
Categories
Efemerides
Ja fa un any...
Arxius
Enllaços
Comentaris
Sindicacions
RSS2 a les noticies RSS2 als comentaris
Darrera Actualització
Contacte
Antoni Villalonga i Noceras
Validadors
|