[resolu] Fonction veille pour ordi portable

Le plus simple est de créer un pgm en suid root ou bien d’utiliser sudo. Je n’aime pas trop sudo (pas de raisons vraiment valables sauf des erreurs suite à abus de la commande au tout début il y a longtemps, ça m’a vacciné)

il y a vraiment un soucis, j’ai redemarré mon vieux kernel et ça me fait pareil… des ralentissements… mais que se passe-t-il ?

Suspend ou comment pourrir son install en 2 minutes :laughing:

Sans vouloir te faire peur, la seule fois où j’ai perdu complètement une partition et où j’ai du repartir d’un backup de ma racine a été le jour où j’ai testé suspend2 (avec un noyau 2.4 il est vrai). Je crois que maintenant c’est assez au point quand même.

Merci ! Ce qui m’étonne c’est que le kernel précédent, qui était ‘normal’ et qui marchait nickel, ne fonctionne pas non plus. Donc suspend à due bouger autre chose, mais quoi ???
Dommage le bébé s’annonçait bien… (l’hibernation de windob bx parait magique à coté… m’enfin linux comme les relations amoureuses c’est pas marrant quand c’est trop facile !)

Refais ton swap peut être:

mkswap /dev/hda5

je viens de booter sur windob puis de relancer mon kernel (le dernier avec suspend2), et là miracle c’est reparti comme avant…
Je cherche mon erreur… ça ne serait pas au niveau de initrd ? dans le tuto* il est dit de rajouter echo > /proc/suspend2/do_resume au début du script init, or je ne l’ai pas fait :unamused: mais il est où ce script ?

*http://david.decotigny.free.fr/wiki/wakka.php?wiki=SwSusp2

Bon je viens d’ajouter les lignes dans /usr/share/initrd-tools/init comme dit le tuto et ça semble marcher… :blush: à vouloir faire trop vite les choses…

Sinon je trouve ça un peu lent : 12s pour hiberner et 25s pour le réveiller… mon vieux tosh n’est pas une bête de course mais quand même…

[quote] * Sous debian, ça se passe dans /usr/share/initrd-tools/init et la ligne devra être rajoutée par exemple juste avant ou juste après ceci (attention, c’est du crados en attendant que la debian se mette à jour) :

if [ -n “$resume$noresume” ]; then
do_swsusp
fi

[/quote]Donc, il faut trouver où, dans yaird, qui remplace à priori initrd-tools, il faut rajouter le code

C’est un Toshiba (j’ai un Toshiba), quel modèle? Si ça marche, je vais peut être me laisser tenter…

c’est un toshiba satellite a10 (celeron 2ghz, 30go, 256mo ram, i855gm, 14pouces) de 2003. J’ai patché un kernel 2.6.18 avec la dernière version de suspend2

je suis en train de recompiler un noyau en me servant des indications de deux tutos : de http://doc.ubuntu-fr.org/doc/swsusp2 et de http://david.decotigny.free.fr/wiki/wakka.php?wiki=SwSusp2, j’espère que ça ira un peu plus vite…
Par contre je suis obligé de réactiver wlan0 (wifi minipci par ndiswrapper) à chaque démarrage…

je vais peut être faire un petit récap dans trucs et astuces… :wink:

j’ai pas regardé, mais le passage en mode veille ne provoque pas un changement de runlevel ? auquel cas un script init pour desactiver/reactiver la carte lors du suspend…

Je ne sais pas comment voir ça. Je peux mettre quelque chose dans /usr/share/initrd-tools/init, à la suite de echo > /proc/suspend2/do_resume.
C’est quoi déjà la commande pour activer un periph reseau ? iwconfig wlan0 on ?

J’ai recompilé un nouveau kernel et ça va beaucoup plus vite ; je passe de 25s de démarrage à 15s, et de 12s de mise en hibernation à 8s. Donc le tuto http://doc.ubuntu-fr.org/doc/swsusp2 apporte un bon plus pour parametrer son noyau.
Par contre wlan0 se désactive toujours…

ton wifi, il est configuré dans le fichier interfaces ?
si oui, tu fais un ifdown wlan0 lors de l’extinction, et un ifup wlan0 lors du réveil, non ?

ifup wlan0 est la bonne commande, maintenant je ne sais pas dans quoi la mettre pour qu’elle se lance au démarrage (en root)…

j’ai regardé un peu le man d’hibernate.conf (regardes le tien sur ta machine):
penguin-soft.com/penguin/man … .conf.html
et il me semble que [quote] OnSuspend NN [parameters for program] Executes a given program before suspending. NN is a two-digit number between 00 and 99, inclusive - a higher number means the program will be executed later in the suspend process. See the ORDERING section in the SCRIPTLET-API for details.

OnResume NN <program to execute> [parameters for program] Executes a given program after resuming. NN is a number between 00 and 99, inclusive - a higher number means the program will be executed earlier in the resume process. See the ORDERING section in the SCRIPTLET-API for details. 


UnloadModules <module name> [...] Names of modules to unload prior to suspending. 


LoadModules auto|<module name> [...] Names of modules to load after resumimg. If auto is specified, the modules that were unloaded previously are loaded. 


UnloadBlacklistedModules <boolean> Try to remove any modules that are known to be incompatible with hibernation prior to suspending. 


UnloadAllModules <boolean> Try to remove all modules loaded prior to suspending. 


LoadModulesFromFile <filename> Load default modules after resuming from a given filename. Each module name must appear on it's own line, and line starting with # are ignored. (eg, Debian's /etc/modules, Gentoo's /etc/modules.autoload) 


DownInterfaces auto|<ifname> [...] The names of network interfaces to bring down before suspending. If the parameter "auto" is given, all interfaces which are not lo are brought down. 


UpInterfaces auto|<ifname> [...] The names of network interfaces to bring up after suspending. If the parameter "auto" is given, the interfaces stoped before suspending will be started in reverse order. 


IncompatiblePrograms <process name> [...] If there are processes running with any of the names listed (as seen in ps ax), then suspending is aborted. If the --kill option is passed, the offending processes are terminated, and the suspend continues. 


StopServices <service name> [...] The services listed are stopped prior to suspending. The service name must correspond to the name of an init.d script that is active in the current runlevel. 


StartServices <service name> [...] The services listed are started after resuming. The service name must correspond to the name of an init.d script that is active in the current runlevel. 


RestartServices <service name> [...] The services listed are stopped before suspending and started after resuming. The service name must correspond to the name of an init.d script that is active in the current runlevel. 

[/quote]même si c’est un peu différent chez toi, tu devrais trouver une solution pour desactiver l’interface, ou faire un ifdown et d’autres choses dans un scripts, et/ou décharger ndiswrapper, etc…

j’ai essayé OnResume 99 ifup wlan0 et UpInterfaces auto wlan0 mais ça ne marche pas…

commences déjà par faire l’ifdown au moment de l’hibernate, ça fonctionne en couple ces choses là.

Oui tu as tout à fait raison, je viens d’ajouter le couple

DownInterfaces wlan0 UpInterfaces wlan0

à mon hibernate.conf et ça marche !

Pour finir ma config j’aimerai bien pouvoir lancer l’hibernation sans entrer mon mdp root, pour le moment j’ai juste un racourcis avec gksu -u root hibernation dans mon menu Bureau…

tu peux donner juste les droits d’executer la commande d’hibernation avec sudo, affecter un bit suid à la commande (si ce n’est pas un script, et c’est dangereux), ou trouver quels devices sont activés dans la maneuvre, voir à quel groupe ils appartiennent, et ajouter je ne sais pas trop quoi au groupe (user par user ça serait trop limitatif).
Ou alors peut être que ça déclenche un évènement acpi de fermer le capot, auquelcas tu peux affecter l’hibernate à la fermeture (et l’évènement acpi s’execute en root). Pareil peut être avec l’appui sur le bouton on/off.
En fait ça dépend un peu de ce que tu veux faire.