====== 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 carte 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 carte 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:

<code>
$ dmesg | grep 2000
</code>

devrait produire quelque message à ce sujet.

===== Solution =====

Passer l'option d'amorce '''acpi=force''' à votre noyau lors du démarrage.<br>
(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.

<code>
$ su
Password:
# mousepad /etc/lilo.conf
</code>

===== 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.

<code>
# Start LILO global section
append="resume2=swap:/dev/hda1 splash=silent "
boot = /dev/hda
bitmap=/boot/splash.bmp
</code
>
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.

<code>
# Start LILO global section
append="resume2=swap:/dev/hda1 splash=silent acpi=force "
boot = /dev/hda
bitmap=/boot/splash.bmp
</code>

===== 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.

<code>
# Linux bootable partition config begins
image = /boot/vmlinuz
  root = /dev/hda2
  label = Zenwalk
  initrd = /boot/initrd.splash
  read-only
# Linux bootable partition config ends
</code>

Ajoutez un ligne 'addappend =' comme dans l'exemple suivant.

<code>
# 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
</code>

Lorsque le noyau est lancé, le(s) paramètre(s) de la ligne 'addappend =' sont concaténés au 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.

<code>
# lilo -v
</code>

=== 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

<code>
title Zenwalk
root (hd0,8)
kernel /boot/vmlinuz root=/dev/hda9 acpi=force
</code>

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:

<code>
$ dmesg | grep 2000
</code>

devrait maintenant vous informer que l'ACPI est activer de force. Ceci réactive l'arrêt automatique sur la plupart des 'anciennes' machines.