Old:Debian: software suspend e ibernazione per laptops: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (data aggiornamento)
Riga 1: Riga 1:
[[immagine:Hp-compaq-nx6110.jpg|frame|right|HP Compaq nx6110]]
[[Categoria:Sistema]]
Il portatile HP Compaq NX 6110 viene certificato da HP come compatibile al 100% con GNU/Linux. HP distribuisce opzionalmente (almeno ufficialmente, io non ne ho trovati disponibili) questi portatili senza alcun sistema operativo ed ha lavorato con Ubuntu per utilizzare hardware pienamente funzionante anche con GNU/Linux.  
Questa guida tratta la configurazione delle modalità di sospensione ed ibernazione del nostro sistema operativo in esecuzione su laptop e notebook di recente generazione.


''Guida segnalata su [http://tuxmobil.org/hp_compaq.html TuxMobil] e [http://www.linux-on-laptops.com/hp.html Linux On Laptops]''
=Prerequisiti=
I prerequisiti per poter abilitare la sospensione e l' ibernazione del nostro portatile sono semplici:
* i sorgenti di un kernel recente e la capacità compilarlo;
* alcuni programmi utili
* spazio sufficiente su disco


=Hardware=
=Software necessario=
* Processore: Intel(R) Pentium(R) M processor 1.50GHz
Dobbiamo procurarci alcuni programmi:
* Memoria RAM: 512Mb
* hibernate (il programma a linea di comando che gestisce l' ibernazione)
* Scheda Video: Intel 915GM
* suspend2 (una patch per il kernel)
* Scheda Audio: Intel AC'97 (modem)
* eventualmente i tools di gestione del risparmio energetico per il nostro Desktop Environment. In questa guida farò riverimento espressamente a Gnome Power Management (GPM), ma presumo il tutto sia facilmente adattabile ad altri programmi.
* Scheda Ethernet: Broadcom BCM 4401 100 Base TX
* Scheda Wireless: Intel PRO/Wireless LAN 2200 BG mini PCI


=Output di lspci=
==Hibernate==
<pre>Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor
Procediamo con l' installare hibernate. Il tutto si risolve con il classico:
to DRAM Controller (rev 03)
<pre># apt-get install hibernate vlock</pre>


VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express
==Suspend2==
Graphics Controller (rev 03)
===Scaricare la patch===
Dal sito di [http://www.suspend2.net/ Suspend2], scarichiamo la versione più recente della patch. Al momento di scrivere questa guida il kernel più recente è il 2.6.16.19 e la patch Suspend2 è la 2.2.5.


Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics
Ecco come procedere.
Controller (rev 03)
====Download====
<pre>koky:~# cd /usr/src/
koky:/usr/src#
koky:/usr/src# wget http://www.suspend2.net/downloads/all/suspend2-2.2.5-for-2.6.16.9.tar.bz2
--12:40:13--  http://www.suspend2.net/downloads/all/suspend2-2.2.5-for-2.6.16.9.tar.bz2
          => `suspend2-2.2.5-for-2.6.16.9.tar.bz2'
Risoluzione di www.suspend2.net in corso... 212.236.250.103
Connessione a www.suspend2.net|212.236.250.103:80... connesso.
HTTP richiesta inviata, aspetto la risposta... 200 OK
Lunghezza: 104,327 (102K) [application/x-bzip2]


USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI
100%[====================================>] 104,327      77.44K/s
#1 (rev 03)


USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI
12:40:17 (77.22 KB/s) - "suspend2-2.2.5-for-2.6.16.9.tar.bz2" salvato [104327/104327]
#2 (rev 03)


USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI
koky:/usr/src#</pre>
#3 (rev 03)


USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI
====Decompressione====
#4 (rev 03)
<pre>koky:/usr/src# tar xvjf suspend2-2.2.5-for-2.6.16.9.tar.bz2
suspend2-2.2.5-for-2.6.16.9/
suspend2-2.2.5-for-2.6.16.9/apply
suspend2-2.2.5-for-2.6.16.9/Changelog.txt
suspend2-2.2.5-for-2.6.16.9/unapply
suspend2-2.2.5-for-2.6.16.9/2000-workqueue-freezing.patch
suspend2-2.2.5-for-2.6.16.9/features
suspend2-2.2.5-for-2.6.16.9/2020-kmod-freeze.patch
suspend2-2.2.5-for-2.6.16.9/3030-reboot-handler-hook.patch
suspend2-2.2.5-for-2.6.16.9/3020-cryptoapi-deflate.patch
suspend2-2.2.5-for-2.6.16.9/3050-init-hooks.patch
suspend2-2.2.5-for-2.6.16.9/3060-reset-kswapd-max-order-after-resume.patch
suspend2-2.2.5-for-2.6.16.9/3080-dynamic-pageflags.patch
suspend2-2.2.5-for-2.6.16.9/3070-clear-swapfile-bdev-in-swapoff.patch
suspend2-2.2.5-for-2.6.16.9/3040-proc-acpi-sleep-activate-hook.patch
suspend2-2.2.5-for-2.6.16.9/2010-suspend2-freezer-upgrade.patch
suspend2-2.2.5-for-2.6.16.9/3000-crypto-api-lzf-support.patch
suspend2-2.2.5-for-2.6.16.9/9900-Suspend2.patch
koky:/usr/src#</pre>


USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI
===Applicare la patch===
Controller (rev 03)
Ora che abbiamo scaricato e decompresso la patch, dobbiamo applicarla al nostro kernel, quello che intendiamo usare o usiamo quotidianamente.


PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3)
Presumendo che la versione corrente del kernel sia linkata alla directory '''/usr/src/linux''' procederemo come segue:
<pre>koky:/usr/src# cd linux
koky:/usr/src/linux# ../suspend2-2.2.5-for-2.6.16.9/apply
Applying 2000-workqueue-freezing.patch ...
Applying 2010-suspend2-freezer-upgrade.patch ...
Applying 2020-kmod-freeze.patch ...
Applying 3000-crypto-api-lzf-support.patch ...
Applying 3020-cryptoapi-deflate.patch ...
Applying 3030-reboot-handler-hook.patch ...
Applying 3040-proc-acpi-sleep-activate-hook.patch ...
Applying 3050-init-hooks.patch ...
Applying 3060-reset-kswapd-max-order-after-resume.patch ...
Applying 3070-clear-swapfile-bdev-in-swapoff.patch ...
Applying 3080-dynamic-pageflags.patch ...
Applying 9900-Suspend2.patch ...
All happy!
koky:/usr/src/linux#</pre>
Lo script ci informa di aver applicato correttamente la patch. Ora possiamo passare a compilare il nostro kernel!


Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family)
===Configurare il kernel===
AC'97 Audio Controller (rev 03)
Le schermate che seguono mostrano cosa abilitare all' interno del kernel.


Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem
* Attraverso il menu "Suspend2" possiamo accedere alle varie sezioni utili:
Controller (rev 03)
[[image:Menuconfig-01.png]]


ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03)
* La sezione "Image Storage" permette di specificare il writer da utilizzare. Il writer permette di salvare lo stato del sistema all' interno della partizione di scambio (swap) oppure all' interno di un qualsiasi file del file system. La prima opzione è senz'altro più rapida, mentre la seconda è indicata nel caso la partizione di swap sia di dimensioni insufficienti (per la sospensione di un sistema con ambiente grafico direi che il minimo indispensabile è di circa 700/800Mb). All' interno di "Default resume device name" indichiamo la partizione di swap che vogliamo utilizzare.
[[image:Menuconfig-02.png]]


IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE
* Abbiamo bisogno di abilitare la crittografia LZF. Dalla sezione "CryptoAPI" (vedi screenshot)
Controller (rev 03)
[[image:Menuconfig-03.png]]


Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05)
* Selezioniamo la libreria '''LZF'''
[[image:Menuconfig-04.png]]


CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
Ora possiamo dare il via alla compilazione e attendere fiduciosi ;-)
===Test del kernel===
Installiamo nel solito modo il nuovo kernel e riavviamo la macchina senza ulteriori configurazioni: quel che ci preme ora consiste nel verificare che Suspend2 sia stato correttamente compilato prima di procedere oltre.


FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller
Riavviamo il sistema: durante l' avvio dovremmo vedere alcuni messaggi riguardanti Suspend2. Possiamo anche utilizzare '''dmesg''' per controllare con più calma.


Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)</pre>
Quello che dovremmo leggere a video grossomodo è:
<pre>koky:~# dmesg |grep Suspend
Suspend2 Core.
Suspend2 Compression Driver loading.
Suspend2 Encryption Driver loading.
Suspend2 Swap Writer loading.
Suspend2 FileWriter loading.
Suspend2 2.2.5: Swapwriter: Signature found.
Suspend2 2.2.5: Resuming enabled.
koky:~#</pre>


=Configurazione=
Se tutto è andato bene possiamo proseguire.


==Il Kernel==
=Configurare il sistema=


===Kernel 2.6.12 e 2.6.13===
==Scelta della modalità di sospensione==
Metto a disposizione degli interessati il file di configurazione per i kernel [[Kernel config per HP Compaq NX 6110| 2.6.12 e 2.6.13]] (dovrebbe funzionare anche con altre versioni comunque). Andate al link, copiate il testo e incollatelo in un file sul vostro PC e quindi spostatelo nella directory dove risiedono i sorgenti del kernel che volete compilare (normalmente /usr/src/linux/) rinominandolo in ''.config''.
La scelta della modalità di sospensione (swap o file) dipende fondamentalmente dallo spazio che abbiamo a disposizione. Se vogliamo utlizzare la partizione di swap come area di memorizzazione, sarebbe opportuno che questa avesse di circa 1Gb. Suspend2 cerca comunque di liberare quanta più memoria è possibile prima di sospendere il sistema. Nel mio caso specifico, avendo una partizione di swap di circa 300Mb ho scelto forzatamente l' utilizzo di un file di scambio. Ora vedremo entrambe le configurazioni.
{{Warningbox|Il kernel � configurato per fornire supporto ai filesystems ext2 e reiserFS (oltre a VFAT, NTFSrw e NCPFS). Se la vostra installazione prevede l' uso di altri filesystems, '''� necessario''' abilitarli prima di ricompilare il kernel. Altra peculiarit&agrave; da notare &egrave; la mancanza dei moduli per il PPP anche questi da abilitare se necessari.}}


===Kernel 2.6.16 (aggiornamento)===
===Partizione di swap===
&Egrave; disponibile il file di configurazione per kernel della serie [[Kernel config per HP Compaq NX 6110 2.6.16|2.6.16]] testato con successo sia con sorgenti del tree ufficiale ''vanilla'' che ''debian''. A differenza del file di configurazione precedente, i moduli per il supporto ACPI a batteria, ventole di raffreddamento, ecc... sono compilati come modulo, ma dovrebbero essere caricati automaticamente durante l' avvio del sistema.
Nel caso in cui abbiamo scelto di usare una partizione di swap, è sufficiente che annotiamo il nome della partizione e proseguiamo oltre.
In questo file di configurazione ho compilato staticamente il supporto grafico VESA, in questo modo &egrave; possibile abilitare risoluzioni superiori a quella standard gi&agrave; durante l' avvio del kernel. Per fare questo &egrave; sufficiente aggiungere il parametro "vga=771" (o altro) a quelli di avvio del nostro kernel.


==Processore, frequency scaling e ACPI==
===File di swap===
=== Frequency Scaling===
Se abbiamo optato per utilizzare un file anzichè una partizione dobbiamo affrontare qualche passaggio supplementare.  
Il kernel cos� configurato supporta le tecnologie di scaling per la frequenza della CPU. Dato che il supporto � compilato come modulo, � necessario che esso venga caricato prima di poter essere disponibile (modulo '''speedstep-centrino'''). Offre inoltre il supporto per il demone [[Cpufreqd:_Cpuscaling_per_Intel_Pentium_M|cpufreqd]]. Per installare questo demone � sufficiente:
<pre># apt-get install cpufreqd</pre>
===Supporto ACPI===
E' abilitato anche il supporto (modulare) per l' ACPI (battery, button, fan, thermal zone).
===Software Suspend===
E' possibile abilitare la sospensione del sistema tramite Software Suspend, e cio&egrave; salvando lo stato del sistema nella partizione di swap oppure in un file.
Per prima cosa assicuriamoci di avere i sorgenti del kernel ed un kernel funzionante (v
edi sopra). A questo punto provvediamo a scaricare [http://www.suspend2.net/ Suspend2] che consiste in una patch da applicare al nostro kernel. Usando un kernel vanilla 2.6.x &egrave; sufficiente scaricare la versione stabile pi� aggiornata. &Egrave; importante che, se intendiamo utilizzare la partizione di swap per l' ibernazione, questa sia opportunamente dimensionata: 500Mb sono il minimo, 1Gb &egrave; senz'altro sufficiente.


A questo riguardo ho scritto una guida dedicata, dal titolo [[Debian: software suspend e ibernazione per laptops]]
====Creazione del file====
Per prima cosa creiamo il file in questione:
<pre>koky:~# dd if=/dev/zero of=/usr/local/swap bs=1M count=1000
koky:~# mkswap /usr/local/swap
koky:~# swapon /usr/local/swap</pre>
In questo modo abbiamo creato da zero il file /usr/local/swap, con dimensione di 1Gb, abbiamo creato al suo interno la struttura di swap e l' abbiamo attivato.


==Server grafico (Xfree86 e Xorg) e accelerazione 3D==
====Headers====
Il supporto alla scheda grafica ed all' accelerazione 3D sono compilati nel kernel di cui sopra.
Ora dobbiamo reperire l' indirizzo degli headers che passeremo al kernel in fase di avvio:
Il file [[Configurazione di Xorg per HP Compaq NX 6110 | xorg.conf]] rappresenta la configurazione per Xorg e prevede l' abilitazione per il DRI (accelerazione 3D) e l' uso simultaneo del touchpad e del mouse.
<pre>koky:~# cat /proc/suspend2/headerlocations
Il file di configurazione � perfettamente funzionante anche per Xfree86 (� sufficiente rinominarlo)
For swapfile `/usr/local/swap              `, use resume2=swap:/dev/hda3:0x2da2b4@4096</pre>
Ovviamente voi otterrete un valore diverso: annotatelo!


==Scheda Audio e ALSA==
==Problemi con il server X==
La scheda audio funziona perfettamente con ALSA.
La sospensione del sistema mentre è attiva una sessione del server può causare il blocco del display: al ritorno dalla sospensione lo schermo apparirà nero e dovremo necessariamente riavviare.
Tutto quello che dobbiamo fare consiste in:
<pre># apt-get install alsa-base alsa-utils
# alsaconf</pre>
Scegliamo la nostra scheda da quelle disponibili ed il gioco � fatto.


==Modem==
Per ovviare a questo problema dobbiamo scaricare il programma '''vbetool''' con il comando:
Il modem � uno SmartLink, supportato da GNU/Linux senza eccessivi patemi. Assicuriamoci che il modulo '''snd_intel8x0m''' venga caricato dal kernel e procediamo a scaricare il software necessario.
<pre># apt-get install vbetool</pre>
e mettere mano alla nostra configurazione di Xorg e aggiungere alcune direttive:


Debian mette a disposizione il pacchetto ''slmodem'', che fornisce le utilities e il demone necessari al controllo del modem. Installiamolo con il comando:
* All' interno della sezione "Device", che riguarda la scheda grafica aggiungiamo <pre>        Option          "VBERestore"            "1"</pre>in modo che la sezione sia qualcosa di simile a:<pre><nowiki>Section "Device"
<pre># apt-get install sl-modem-daemon</pre>
        Identifier      "Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller"
        Driver          "i810"
        BusID          "PCI:0:2:0"
        Option          "VBERestore"            "1"
EndSection</nowiki></pre>
* Alla fine del file xorg.conf creiamo questa nuova sezione:<pre><nowiki>Section "ServerFlags"
        Option          "BlankTime"    "0"
EndSection</nowiki></pre>


==Scheda Ethernet Broadcom BCM 4401==
Riavviamo la sessione grafica e tutto funzionerà a dovere.
Il supporto alla scheda ethernet � fornito nel kernel. Funziona anche con le immagini del kernel 2.6.8 installate da Debian per default.
==Scheda wireless Intel PRO/Wireless LAN 2200 BG mini PCI==
Per la configurazione di questa scheda, vi rimando alla guida [[Intel_PRO/Wireless_2200BG| Intel PRO Wireless 2200BG]].


Per abilitare la bella luce blu che segnala il link wireless dobbiamo impostare il parametro "led" per il modulo ipw2200.
==Configurazione del bootloader==
Ora possiamo passare alla configurazione del bootloader, in modo da passare al nostro kernel i parametri corretti per la sospensione.


Operiamo come segue:
La sintassi corretta prevede che alla direttiva '''kernel''' di menu.lst di Grub venga aggiunta una tra le due opzioni seguenti:
<pre># touch /etc/modprobe.d/ipw2200
* <pre>resume2=swap:/dev/hda4</pre> nel caso di partizione di swap. usate la vostra!
# echo "options ipw2200 led=1" > /etc/modprobe.d/ipw2200</pre>
* <pre>resume2=swap:/dev/hda3:0x4478d8</pre> nel caso di file di swap. usate il vostro!


=Abilitare il reboot=
=Permessi e gruppi=
La configurazione standard di Grub, non permette al sistema di riavviarsi. &Egrave; quindi necessario aggiungere il paramentro ''reboot=b'' alla direttiva ''kernel'' nel nostro file menu.lst.
Affinchè la sospensione e l' ibernazione siano utilizzabili dall' utente con cui generalmente accediamo al sistema, e che quindi anche le utilities del nostro ambiente desktop possano parlo, è necessario aggiungere l' utente al gruppo '''powerdev'''.
 
E' sufficiente questo comando:
<pre>koky:~# adduser nome_utente powerdev</pre>
 
 
 
Happy suspending! ;-)


----
----
Autore: [[Utente:Keltik|keltik]] 07:47, Set 17, 2005 (EDT)<br />
Autore: [[Utente:Keltik|keltik]] 08:56, 13 Giu 2006 (EDT)<br />
Aggiornato: [[Utente:Keltik|keltik]] 09:19, 28 Mag 2006 (EDT)
Aggiornato: [[Utente:Keltik|keltik]] 05:27, 20 Giu 2006 (EDT)
[[Categoria:Laptop]]

Versione delle 09:27, 20 giu 2006

Questa guida tratta la configurazione delle modalità di sospensione ed ibernazione del nostro sistema operativo in esecuzione su laptop e notebook di recente generazione.

Prerequisiti

I prerequisiti per poter abilitare la sospensione e l' ibernazione del nostro portatile sono semplici:

  • i sorgenti di un kernel recente e la capacità compilarlo;
  • alcuni programmi utili
  • spazio sufficiente su disco

Software necessario

Dobbiamo procurarci alcuni programmi:

  • hibernate (il programma a linea di comando che gestisce l' ibernazione)
  • suspend2 (una patch per il kernel)
  • eventualmente i tools di gestione del risparmio energetico per il nostro Desktop Environment. In questa guida farò riverimento espressamente a Gnome Power Management (GPM), ma presumo il tutto sia facilmente adattabile ad altri programmi.

Hibernate

Procediamo con l' installare hibernate. Il tutto si risolve con il classico:

# apt-get install hibernate vlock

Suspend2

Scaricare la patch

Dal sito di Suspend2, scarichiamo la versione più recente della patch. Al momento di scrivere questa guida il kernel più recente è il 2.6.16.19 e la patch Suspend2 è la 2.2.5.

Ecco come procedere.

Download

koky:~# cd /usr/src/
koky:/usr/src#
koky:/usr/src# wget http://www.suspend2.net/downloads/all/suspend2-2.2.5-for-2.6.16.9.tar.bz2
--12:40:13--  http://www.suspend2.net/downloads/all/suspend2-2.2.5-for-2.6.16.9.tar.bz2
           => `suspend2-2.2.5-for-2.6.16.9.tar.bz2'
Risoluzione di www.suspend2.net in corso... 212.236.250.103
Connessione a www.suspend2.net|212.236.250.103:80... connesso.
HTTP richiesta inviata, aspetto la risposta... 200 OK
Lunghezza: 104,327 (102K) [application/x-bzip2]

100%[====================================>] 104,327       77.44K/s

12:40:17 (77.22 KB/s) - "suspend2-2.2.5-for-2.6.16.9.tar.bz2" salvato [104327/104327]

koky:/usr/src#

Decompressione

koky:/usr/src# tar xvjf suspend2-2.2.5-for-2.6.16.9.tar.bz2
suspend2-2.2.5-for-2.6.16.9/
suspend2-2.2.5-for-2.6.16.9/apply
suspend2-2.2.5-for-2.6.16.9/Changelog.txt
suspend2-2.2.5-for-2.6.16.9/unapply
suspend2-2.2.5-for-2.6.16.9/2000-workqueue-freezing.patch
suspend2-2.2.5-for-2.6.16.9/features
suspend2-2.2.5-for-2.6.16.9/2020-kmod-freeze.patch
suspend2-2.2.5-for-2.6.16.9/3030-reboot-handler-hook.patch
suspend2-2.2.5-for-2.6.16.9/3020-cryptoapi-deflate.patch
suspend2-2.2.5-for-2.6.16.9/3050-init-hooks.patch
suspend2-2.2.5-for-2.6.16.9/3060-reset-kswapd-max-order-after-resume.patch
suspend2-2.2.5-for-2.6.16.9/3080-dynamic-pageflags.patch
suspend2-2.2.5-for-2.6.16.9/3070-clear-swapfile-bdev-in-swapoff.patch
suspend2-2.2.5-for-2.6.16.9/3040-proc-acpi-sleep-activate-hook.patch
suspend2-2.2.5-for-2.6.16.9/2010-suspend2-freezer-upgrade.patch
suspend2-2.2.5-for-2.6.16.9/3000-crypto-api-lzf-support.patch
suspend2-2.2.5-for-2.6.16.9/9900-Suspend2.patch
koky:/usr/src#

Applicare la patch

Ora che abbiamo scaricato e decompresso la patch, dobbiamo applicarla al nostro kernel, quello che intendiamo usare o usiamo quotidianamente.

Presumendo che la versione corrente del kernel sia linkata alla directory /usr/src/linux procederemo come segue:

koky:/usr/src# cd linux
koky:/usr/src/linux# ../suspend2-2.2.5-for-2.6.16.9/apply
Applying 2000-workqueue-freezing.patch ...
Applying 2010-suspend2-freezer-upgrade.patch ...
Applying 2020-kmod-freeze.patch ...
Applying 3000-crypto-api-lzf-support.patch ...
Applying 3020-cryptoapi-deflate.patch ...
Applying 3030-reboot-handler-hook.patch ...
Applying 3040-proc-acpi-sleep-activate-hook.patch ...
Applying 3050-init-hooks.patch ...
Applying 3060-reset-kswapd-max-order-after-resume.patch ...
Applying 3070-clear-swapfile-bdev-in-swapoff.patch ...
Applying 3080-dynamic-pageflags.patch ...
Applying 9900-Suspend2.patch ...
All happy!
koky:/usr/src/linux#

Lo script ci informa di aver applicato correttamente la patch. Ora possiamo passare a compilare il nostro kernel!

Configurare il kernel

Le schermate che seguono mostrano cosa abilitare all' interno del kernel.

  • Attraverso il menu "Suspend2" possiamo accedere alle varie sezioni utili:

Menuconfig-01.png

  • La sezione "Image Storage" permette di specificare il writer da utilizzare. Il writer permette di salvare lo stato del sistema all' interno della partizione di scambio (swap) oppure all' interno di un qualsiasi file del file system. La prima opzione è senz'altro più rapida, mentre la seconda è indicata nel caso la partizione di swap sia di dimensioni insufficienti (per la sospensione di un sistema con ambiente grafico direi che il minimo indispensabile è di circa 700/800Mb). All' interno di "Default resume device name" indichiamo la partizione di swap che vogliamo utilizzare.

Menuconfig-02.png

  • Abbiamo bisogno di abilitare la crittografia LZF. Dalla sezione "CryptoAPI" (vedi screenshot)

Menuconfig-03.png

  • Selezioniamo la libreria LZF

Menuconfig-04.png

Ora possiamo dare il via alla compilazione e attendere fiduciosi ;-)

Test del kernel

Installiamo nel solito modo il nuovo kernel e riavviamo la macchina senza ulteriori configurazioni: quel che ci preme ora consiste nel verificare che Suspend2 sia stato correttamente compilato prima di procedere oltre.

Riavviamo il sistema: durante l' avvio dovremmo vedere alcuni messaggi riguardanti Suspend2. Possiamo anche utilizzare dmesg per controllare con più calma.

Quello che dovremmo leggere a video grossomodo è:

koky:~# dmesg |grep Suspend
Suspend2 Core.
Suspend2 Compression Driver loading.
Suspend2 Encryption Driver loading.
Suspend2 Swap Writer loading.
Suspend2 FileWriter loading.
Suspend2 2.2.5: Swapwriter: Signature found.
Suspend2 2.2.5: Resuming enabled.
koky:~#

Se tutto è andato bene possiamo proseguire.

Configurare il sistema

Scelta della modalità di sospensione

La scelta della modalità di sospensione (swap o file) dipende fondamentalmente dallo spazio che abbiamo a disposizione. Se vogliamo utlizzare la partizione di swap come area di memorizzazione, sarebbe opportuno che questa avesse di circa 1Gb. Suspend2 cerca comunque di liberare quanta più memoria è possibile prima di sospendere il sistema. Nel mio caso specifico, avendo una partizione di swap di circa 300Mb ho scelto forzatamente l' utilizzo di un file di scambio. Ora vedremo entrambe le configurazioni.

Partizione di swap

Nel caso in cui abbiamo scelto di usare una partizione di swap, è sufficiente che annotiamo il nome della partizione e proseguiamo oltre.

File di swap

Se abbiamo optato per utilizzare un file anzichè una partizione dobbiamo affrontare qualche passaggio supplementare.

Creazione del file

Per prima cosa creiamo il file in questione:

koky:~# dd if=/dev/zero of=/usr/local/swap bs=1M count=1000
koky:~# mkswap /usr/local/swap
koky:~# swapon /usr/local/swap

In questo modo abbiamo creato da zero il file /usr/local/swap, con dimensione di 1Gb, abbiamo creato al suo interno la struttura di swap e l' abbiamo attivato.

Headers

Ora dobbiamo reperire l' indirizzo degli headers che passeremo al kernel in fase di avvio:

koky:~# cat /proc/suspend2/headerlocations
For swapfile `/usr/local/swap               `, use resume2=swap:/dev/hda3:0x2da2b4@4096

Ovviamente voi otterrete un valore diverso: annotatelo!

Problemi con il server X

La sospensione del sistema mentre è attiva una sessione del server può causare il blocco del display: al ritorno dalla sospensione lo schermo apparirà nero e dovremo necessariamente riavviare.

Per ovviare a questo problema dobbiamo scaricare il programma vbetool con il comando:

# apt-get install vbetool

e mettere mano alla nostra configurazione di Xorg e aggiungere alcune direttive:

  • All' interno della sezione "Device", che riguarda la scheda grafica aggiungiamo
            Option          "VBERestore"            "1"
    in modo che la sezione sia qualcosa di simile a:
    Section "Device"
       Identifier      "Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller"
       Driver          "i810"
       BusID           "PCI:0:2:0"
       Option          "VBERestore"            "1"

EndSection

  • Alla fine del file xorg.conf creiamo questa nuova sezione:
    Section "ServerFlags"
       Option          "BlankTime"     "0"

EndSection

Riavviamo la sessione grafica e tutto funzionerà a dovere.

Configurazione del bootloader

Ora possiamo passare alla configurazione del bootloader, in modo da passare al nostro kernel i parametri corretti per la sospensione.

La sintassi corretta prevede che alla direttiva kernel di menu.lst di Grub venga aggiunta una tra le due opzioni seguenti:

  • resume2=swap:/dev/hda4
    nel caso di partizione di swap. usate la vostra!
  • resume2=swap:/dev/hda3:0x4478d8
    nel caso di file di swap. usate il vostro!

Permessi e gruppi

Affinchè la sospensione e l' ibernazione siano utilizzabili dall' utente con cui generalmente accediamo al sistema, e che quindi anche le utilities del nostro ambiente desktop possano parlo, è necessario aggiungere l' utente al gruppo powerdev.

E' sufficiente questo comando:

koky:~# adduser nome_utente powerdev


Happy suspending! ;-)


Autore: keltik 08:56, 13 Giu 2006 (EDT)
Aggiornato: keltik 05:27, 20 Giu 2006 (EDT)