La réponse est 42

Aller au contenu | Aller au menu | Aller à la recherche

Linux

astuces et HowTo pour linux

Fil des billets

vendredi 24 février 2006

In suspend to disk we trust

Grande découverte à mettre au crédit d'un voyage en train : Sous linux, il n'y a pas que le patch SoftwareSuspend2 qui permette de faire du suspend to disk!

Tout d'abord, qu'est-ce que le suspend to disk? Pour nos amis sous windows, c'est ce qu'on appelle la "mise en veille prolongée". Si ça ne vous dit toujours rien, en voici le principe général. Lorsque l'on utilise un ordinateur, tous les programmes exécutés sont placés dans la mémoire vive (ou ram). Le principe du suspend to disk est que lorsque l'on désire éteindre son ordinateur, au lieu de fermer tous les programmes, on fait une copie du contenu de la mémoire vive sur le disque dur (plus précisément dans le swap, sorte de "mémoire vive sur disque dur"), puis l'ordinateur s'arrête suivant le processus normal (en fermant toutes les applications donc). Au démarrage suivant, le système trouve une signature dans le swap, qui lui indique que le système s'est arrêté en utilisant le suspend to disk. Au lieu de continuer le démarrage de manière classique et d'arriver à la page de login, le systême charge en mémoire l'image qu'il a détectée (vous savez, celle qui a été copiée dans le swap avant extinction de l'ordi). On se retrouve alors au final avec un systême dans le même état que celui avant extinction (fenêtres ouvertes sur les mêmes bureaux, avec les mêmes documents chargés, etc...)

Comment faire pour que ça marche? C'est très simple :

  1. Il faut avoir une partition de swap d'au moins la taille de la mémoire vive
  2. Il faut connaître le périphérique correspondant à cette partition (chez moi c'est /dev/hda5)
  3. Ajouter "resume=/dev/hda5" à la ligne de boot de votre kernel (dans menu.lst pour grub ou lilo.conf pour lilo)
  4. aptitude install hibernate
  5. configuration de /etc/hibernate/hibernate.conf

Dans ce fichier, il n'est a priori besoin de changer que la partie suivante:

### suspend2 (for Software Suspend 2)
#UseSuspend2 yes
#Reboot no
#EnableEscape yes
#DefaultConsoleLevel 1
#Compressor lzf
#Encryptor none
# ImageSizeLimit 200
## useful for initrd usage:
# SuspendDevice swap:/dev/hda2
## Powerdown method - 3 for suspend-to-RAM, 4 for ACPI S4 sleep, 5 for poweroff
# PowerdownMethod 5
## Any other /proc/software_suspend setting can be set like so:
# ProcSetting expected_compression 50
## Or traditionally like this:
# Suspend2AllSettings 0 0 2056 65535 5
## Or even from the results of hibernate --save-settings with this:
# Suspend2AllSettingsFile /etc/hibernate/suspend-settings.conf
## For filewriter:
# FilewriterLocation /suspend_file 1000
# VerifyFilewriterResume2 yes
# ProcSetting userui_program /usr/local/sbin/suspend2ui_text

### sysfs_power_state
## To use /sys/power/state to suspend your machine (which may offer
## suspend-to-RAM, suspend-to-disk, standby, etc) comment out all the options
## above for Software Suspend 2, below for acpi_sleep, and uncomment this line.
## You may replace mem with any one of the states from "cat /sys/power/state"
UseSysfsPowerState disk
PowerdownMethod shutdown

une fois cette config effectuée, vous pouvez lancer la commande hibernate, en root et observer le résultat. Si vous voulez que vos autres utilisateurs puissent faire de même, vous devez mettre /usr/bin/hibernate en setuid root, ou configurer correctement sudo, ou bien encore utiliser la gestion des évènements acpi (qui sera l'objet d'un prochain chapitre).

Voili voilou, on s'éclate comme on peut en pays geekien!

Modification du 14/02/2006

Si votre ordinateur reboot ou fait un shutdown juste après une reprise de suspend to disk, c'est de la faute au démon acpid. Pour l'instant, je n'ai pas trouvé de solution propre pour éviter ça, donc j'ai désactivé acpid! En attendant mieux...

vendredi 17 février 2006

L'OSD c'est bon, mangez-en

[mode name="3615 MyLife" status=on]Ce matin, j'ai oublié ma montre[mode name="3615 MyLife" status=off]

Comme tout bon geek qui se respecte, je me suis demandé comment faire pour avoir l'heure qui s'affiche sur mon pc quand j'ai envie de la voir. Ok, vous allez me dire que c'est marqué dans la barre des tâches, ou que tout bon éditeur de texte (emacs par exemple) a cette information disponible ou bien encore que la "super barre d'outils de lux 2006" affiche cette info. Et bien non, moi j'utilise fluxbox, je n'ai pas de barre d'outils, ni de barre des tâches et même si j'utilise emacs très fréquemment dans la journée, je ne l'ai pas toujours sous les yeux.

Ma solution s'appelle OSD : On Screen Display. Pour les néophytes, lorsque vous changez de chaîne ou faites varier le son sur votre télé, une indication apparaît sur l'écran souvent en bleu ou vert, pour vous dire sur quelle chaîne vous ètes, ou le niveau sonore choisi. Et bien, on peut faire la même chose sur un pc! la marche à suivre est la suivante :

  1. installer osdsh : aptitude install osdsh
  2. lancer osdsh (en console)

Pour faire un petit test, lancez la commande "osdctl -t 5" qui doit alors vous afficher la date et l'heure pendant 5 secondes, quelque part en haut à gauche de votre écran. C'est bien mais pas top, car c'est écrit en vert criard, en haut à gauche (peu visible) et dans une police toute moche. On va donc créer un thême pour osdsh, avec osdshconfig ou à partir d'un trouvé sur le net. La doc est pas énorme, alors il faut faire à la jugeote. Pour un exemple, vous pouvez utiliser mon thême. Une petite chose que j'ai ajoutée : avec ce thême, si vous modifiez le volume sonore, une barre de progression s'affiche, avec le nom du mixer que vous avez modifié.

Donc, maintenant que nous avons un joli thême, on va dire à osdsh de l'utiliser : osdctl -S /chemin/vers/le/thême/monThemeOsdsh
relancez la commande osdctl -t 5 et maintenant, le texte s'affiche en bleu nuit au milieu de l'écran (personnellement, j'ai fait un key binding pour lancer cette commande, à vous de voir ce que vous préférez). Un petit bonus est de lancer osdsh quand vous vous logez, par exemple avec osdsh && osdctl -S /chemin/vers/le/thême/monThemeOsdsh (dans le fichier ~/.fluxbox/startup sous fluxbox)

voili voilou! C'est absolument futile, donc rigoureusement indispensable et en plus ça augmentera votre productivité, vous rendra riche et beau en moins d'une heure

Passer sa Debian en UTF-8

J'ai fait cette petite chose übergeekienne hier matin, vous verrez, c'est très simple.

  1. installation des locales : aptitude install locales
  2. configuration des locales : choisir fr_FR.UTF-8
  3. se déloger et se reloger

Si tout c'est bien passé, la commande "locale" lancée dans votre terminal doit vous retourner ceci :

LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

En petit test, faites apparaître une page de man dans votre console : si vous avez toujours des signes cabalistiques à la place des signes accentués, c'est que vous utilisez un shell ne tenant pas compte de l'unicode. Installez donc un shell qui l'exploite parfaitement, tel urxvt ou uxterm (j'aime bien urxvt, car il permet d'avoir un shell pseudo-transparent).

Vous voilà fin prêt pour l'avenir avec utf-8