====== Forcer l'ACPI ======
===== Symptômes =====
À l'arrêt, la machine ne s'éteint pas automatiquement mais attend que l'utilisateur appuie manuellement sur l'interrupteur.
===== Condition =====
Une carte mère datant de l'année 2000 ou un peu avant.
===== Ce qui se passe =====
Le nouveau noyau (~ version 2.6.12) désactive l' ACPI pour les cartes mères fabriquées avant l'année 2000 ; Oui : un problème Y2K tardif ;-) L'ACPI peut cependant être réactivé à l'aide d'une option d'amorce qui doit être passée au noyau. Le noyau doit être spécifiquement requis de le faire. La raison : certaines cartes mères anciennes ont une implémentation aléatoire et non-fonctionnelle de l'ACPI. Cependant, la plupart des cartes conçues juste avant 2000 (et donc la plupart des cartes PIII que j'ai rencontrées) fonctionne correctement avec l'ACPI activé.
===== Analyse =====
La commande ''dmesg'' devrait produire une complainte au sujet de la carte mère étant trop ancienne. L'exécution de la commande:
$ dmesg | grep 2000
devrait produire quelque message à ce sujet.
===== Solution =====
Passer l'option d'amorce '''acpi=force''' à votre noyau lors du démarrage.
(Ce n'est pas garanti à 100%, mais je l'ai utilisé de très très nombreuses fois.)
===== Lilo =====
Lancez un terminal (si ce n'est pas déjà fait avec la commande ''dmesg'' ci-dessus.) et ouvrez le fichier '/etc/lilo.conf' afin de le modifier.
$ su
Password:
# mousepad /etc/lilo.conf
===== Première méthode =====
Si vous n'avez qu'un seul noyau dans votre '/etc/lilo.conf' ou si vous voulez passer cette option d'amorce à tous vos noyaux, alors trouvez la ligne commençant par 'append =' située au début du fichier. Comme dans l'extrait suivant.
# Start LILO global section
append="resume2=swap:/dev/hda1 splash=silent "
boot = /dev/hda
bitmap=/boot/splash.bmp
Maintenant ajoutez l'option d'amorce '''acpi=force''' à la fin de cette ligne. (Et n'oubliez surtout pas l'espace avant les guillemets de la fin.) La ligne 'append =' de votre '/etc/lilo.conf' peut être différente de cet exemple particulier. N'y modifiez rien d'autre, excepté l'ajout de '''acpi=force''', à moins que vous sachiez exactement ce que vous faites.
# Start LILO global section
append="resume2=swap:/dev/hda1 splash=silent acpi=force "
boot = /dev/hda
bitmap=/boot/splash.bmp
===== Seconde méthode =====
Si vous avez plus d'un noyau listé dans votre '/etc/lilo.conf', mais que vous ne voulez utiliser l'option d'amorce '''acpi=force''' qu'avec l'un d'entre eux, alors trouvez la section concernant l'image du fichier pour ce noyau spécifique. Comme dans l'extrait suivant.
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda2
label = Zenwalk
initrd = /boot/initrd.splash
read-only
# Linux bootable partition config ends
Ajoutez un ligne 'addappend =' comme dans l'exemple suivant.
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda2
label = Zenwalk
initrd = /boot/initrd.splash
addappend = "acpi=force"
read-only
# Linux bootable partition config ends
Lorsque le noyau est lancé, le(s) paramètre(s) de la ligne 'addappend =' sont concaténés aux paramètres du noyau de la ligne 'append =' de la ''section globale''. C'est pourquoi la ligne 'append =' doit comporter cet espace supplémentaire à la fin.
===== Sauvegarder la nouvelle configuration =====
Une fois la modification de votre '/etc/lilo.conf' effectuée selon l' '''une''' des deux méthodes ci-dessus, vous devez informer Lilo des changements survenus. Exécutez la commande suivante en tant que root.
# lilo -v
=== Note: ===
Comme vous l'avez sans doute déduit à partir des exemples ci-dessus :\\
Lilo ne fait aucune différence entre ''append="resume....'' et ''append = "resume....''.\\
À l'intérieur les guillemets cependant, les espaces vides sont importants, donc ''acpi = force'' n'est '''PAS''' valide.
===== Grub =====
Modifiez le fichier /boot/grub/menu.lst
title Zenwalk
root (hd0,8)
kernel /boot/vmlinuz root=/dev/hda9 acpi=force
Les lignes peuvent être un peu différentes. L'important c'est d'ajouter "acpi=force" à la ligne commençant par "kernel" dans votre entrée Zenwalk.
===== Vérification finale =====
Avant de redémarrer votre système, la commande :
$ dmesg | grep 2000
devrait maintenant vous informer que l'ACPI est activé de force. Ceci réactive l'arrêt automatique sur la plupart des 'anciennes' machines.