f fffffffff friki.cat
Aquest és un bloc friki
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:

Sense Comentaris
Articles
Categories
Efemerides
Ja fa un any...
Arxius
Enllaços
Comentaris
  • S'han fet 423 comentaris
Sindicacions
rss2RSS2 a les noticies
rss2RSS2 als comentaris
Darrera Actualització
  • 1:34 20/2/2018
Contacte

Antoni Villalonga i Noceras

Ensaïmada

Validadors

Valid XHTML 1.0 Transitional

Valid CSS!

[Valid RSS]

Powered by FrikiBLOC. Els gràfics els ha fet en Peter, gràcies! Darrera actualització: 1:34 20/2/2018