Differences between revisions 14 and 15
Revision 14 as of 2021-01-03 20:28:43
Size: 14648
Editor: vauss
Comment: spelling
Revision 15 as of 2021-10-06 19:22:17
Size: 14585
Editor: vauss
Comment: sync with English version
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[WakeOnLan|English]] - [[pt_BR/WakeOnLan|Brazilian Portuguese]] - [[es/WakeOnLan|Español]] - Français - [[it/WakeOnLan|Italiano]] - [[ru/WakeOnLan|Русский]]-~ <<Include(WakeOnLan, ,from="^##TAG:TRANSLATION-HEADER-START",to="^##TAG:TRANSLATION-HEADER-END")>>
##TAG:TRANSLATION-HEADER-START

##TAG:TRANSLATION-HEADER-END


Wake On LAN

Voici quelques notes pour mettre en place la fonctionnalité Wake On LAN (WOL) avec un système Debian.

Matériel

La première étape pour pouvoir démarrer votre ordinateur à partir du réseau est de s'assurer que votre carte Ethernet et votre carte mère prennent en charge la fonction Wake On LAN. Les cartes -NM (non gérées) de 3Com en particulier ne prennent pas en charge le WOL tandis que les cartes -M (gérées) le font.

Il y a deux méthodes principales : la plus ancienne utilise un connecteur Wake On LAN à trois broches entre votre carte Ethernet et votre carte mère. Les deux connecteurs sont désignés « wol ». Les systèmes plus récents utilisent une broche Wake On LAN sur le bus PCI, rendant inutile un câble supplémentaire. Quelques cartes mères prennent en charge les deux et fournissent juste le connecteur pour assurer la compatibilité avec les carte Ethernet qui n'ont pas la broche PCI.

Les cartes mères récentes avec un NIC (contrôleur d'interface réseau) intégré prennent en charge le Wake On LAN sans câble ni broche.

Firmware et BIOS

Avec un bon BIOS, sous l'onglet power management (gestion de l'alimentation) on devrait avoir une option claire et intuitive intitulée « Wake On LAN ». Malheureusement sur certaines machines, ce n'est pas aussi clair et il y a une paire d'options offertes. Une semble fonctionner toujours, mais les autres ne fonctionnent que parfois. L'auteur a élaboré cette documentation, partagée avec Mark Ivey, quand ils avaient tous les deux un Shuttle XPC SK41G et utilisaient l'option « PowerOn by PCI Card » avec succès.1

Logiciel

Configuration de l'interface

buster

Les instructions pour Stretch (voir plus bas) ne fonctionnent pas pour moi, aussi j'ai suivi la démarche suivante :

ajoutez ce fichier

$ cat /etc/systemd/system/wol.service
[Unit]
Description=Configure Wake-up on LAN

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s eth0 wol g

[Install]
WantedBy=basic.target

activez-le avec

sudo systemctl enable wol.service
sudo systemctl daemon-reload

redémarrez. Vérifiez si cela a fonctionné avec

$ sudo ethtool eth0

Settings for eth0:
 Supported ports: [ MII ]
 Supported link modes:   10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
                         1000baseT/Full 
 Supported pause frame use: No
 Supports auto-negotiation: Yes
 Advertised link modes:  10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
                         1000baseT/Full 
 Advertised pause frame use: No
 Advertised auto-negotiation: Yes
 Speed: 100Mb/s
 Duplex: Full
 Port: MII
 PHYAD: 1
 Transceiver: external
 Auto-negotiation: on
 Supports Wake-on: g
 Wake-on: g
 Link detected: yes

Wake-on: g signifie que cela a marché.

Stretch

ajoutez ce fichier

$ cat /etc/network/interfaces.d/eth0
auto eth0
iface eth0 inet dhcp
        ethernet-wol g

Redémarrez. Vérifiez si cela a fonctionné avec

$ sudo ethtool eth0

Settings for eth0:
 Supported ports: [ MII ]
 Supported link modes:   10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
                         1000baseT/Full 
 Supported pause frame use: No
 Supports auto-negotiation: Yes
 Advertised link modes:  10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
                         1000baseT/Full 
 Advertised pause frame use: No
 Advertised auto-negotiation: Yes
 Speed: 100Mb/s
 Duplex: Full
 Port: MII
 PHYAD: 1
 Transceiver: external
 Auto-negotiation: on
 Supports Wake-on: g
 Wake-on: g
 Link detected: yes

Wake-on: g signifie que cela a marché.

Squeeze

Avec Squeeze, les paramètres d'ethtool peuvent être configurés directement dans le fichier /etc/network/interfaces. Ce qui précède peut être réalisé ainsi :

iface eth0 inet dhcp
        ethernet-wol g

Le script /etc/network/if-up.d/ethtool s'occupera d'appeler ethtool à l'activation de l'interface. Voir /usr/share/doc/ethtool/README.Debian pour plus d'informations.

On peut maintenant éteindre son ordinateur et préparer l'autre ordinateur à le rallumer.

Avant Squeeze

Après l'activation matérielle de Wake On LAN, une activation logicielle est aussi nécessaire. On peut le faire en utilisant le paquet ethtool qui dit à l'interface de répondre au paquet magique. Remplacer eth0 par le nom de l'interface de votre périphérique réseau :

$ su
# aptitude install ethtool
# ethtool -s eth0 wol g

Cela peut être automatisé en modifiant le fichier /etc/network/interfaces:

iface eth0 inet dhcp
        post-up /sbin/ethtool -s $IFACE wol g
        post-down /sbin/ethtool -s $IFACE wol g

Cela exécutera ethtool chaque fois que eth0 est activé et aussi quand il est désactivé, comme cela le WOL fonctionnera même si le réseau ne s'est pas désactivé correctement.

Envoyer les messages de WOL

On peut installer le paquet etherwake dans le système de contrôle pour que la commande etherwake envoie le « Paquet Magique » à l'autre ordinateur pour le rallumer. Le programme doit être exécuté en tant que superutilisateur pour pouvoir envoyer le paquet (on peut utiliser sudo pour l'exécuter).

# aptitude install etherwake
# etherwake <mac address>

wakeonlan est aussi disponible : c'est un programme qui utilise les paquets UDP et pas TCP, et donc n'a pas besoin d'être exécuté en tant que superutilisateur. Il est aussi légèrement plus configurable.

# aptitude install wakeonlan && exit
$ wakeonlan <mac address>

Sensibilité de WOL

L'auteur ne veut aucune des options de Wake On LAN sauf Wake on « Magic Packet » (g). afin que l'ordinateur s'allume quand on lui demande spécifiquement et non après un message unicast (point à point) (u), un message broadcast (b) ou « multidiffusé » (multicast) (m).

Cependant, si ne voulez pas Wake On LAN sur n'importe lequel de ces évènements (autre que « Magic Packet »), vous pouvez trouver des conflits avec pm-utils2. Au moment de l'écriture de ce texte, les scripts de ce paquet configurera l'option d'allumage pour toutes les cartes d'interface appropriées pour « Magic Packet » seulement, (g). Cela sera un problème si vous voulez que votre machine s'allume « à la demande » lorsqu'il reçoit par exemple du trafic (u). Le problème et ce correctif est examiné plus bas.

Rendre WOL Persistant

Le matériel en principe cherche spécifications et vous pensez que le BIOS est bien configuré, mais cela ne fonctionne pas sans quelques réglages avec un logiciel. Selon la FAQ du client Wake On Lan, la plupart des pilotes Linux désactivent la fonction WOL au démarrage3, donc il faut le maintenir en fonction.

Noyau 2.6

Avec le noyau 2.6, on peut utiliser le répertoire /etc/modprobe.d. Vous pouvez utiliser /etc/modprobe.conf, mais s'il n'inclut pas /etc/modprobe.d, vous aurez probablement un message à chaque démarrage et certaines choses ne seront pas configurées correctement. Si on utilise /etc/modprobe.d, il faut ajouter un fichier local.conf dans le répertoire qui contient ceci :

install 8139too /sbin/modprobe -i 8139too; /sbin/ethtool -s eth0 wol g

ethtool est fourni par le paquet ethtool, donc vous devrez l'installer à moins que votre carte ne prenne en charge une option pour enregistrer la configuration de WOL. Si c'est le cas, on crée un fichier local.conf avec la ligne d'options appropriée qui peut ressembler à ceci :

options 3c59x enable_wol=1
  • {i} Si votre noyau utilise une image initramfs (comme les noyaux standards de Debian), il faut exécuter la commande update-initramfs -u (ou update-initramfs -u -k all si nécessaire) pour reconstruire la ou les ramdisk(s) initiales du noyau.

Après le test d'une machine avec un C3905B-TXNM et un 3C905C-TXM que pilotent le module 3c59x, l'auteur constate que ethtool était incapable de leur envoyer une requête et de configurer le WOL, mais que la configuration enable_wol=1 était nécessaire et que cela fonctionnait.

Cependant on remarque que les modules 8139too et 8139cp sont chargés tous les deux, mais que charger seulement 8139cp ne fonctionne pas dans la mesure où le chipset n'est pas assez récent, aussi on peut le blacklister.

Debogage d'ethtool

Après une heure passée à comprendre pourquoi son ordinateur ne marchait toujours pas, l'auteur a commencé à lancer une commande de requête ethtool un peu partout pour voir ce qui se passait :

# ethtool eth0

ifup

Il a découvert (au moins avec le pilote 8139too et Debian 3.1/Sarge) la ligne d'installation fonctionnait quand on chargeait le module avec la commande modprobe 8139too, mais ifup reconfigurait le WOL, parce qu'il fallait ajouter une ligne au fichier /etc/network/interfaces sous le paragraphe eth0 :

iface eth0 inet dhcp
        up /sbin/ethtool -s $IFACE wol g

Il faut garder la commande ethtool dans le fichier /etc/modprobe.d/local.conf pour le cas où on démarre l'ordinateur et que ifup n'a pas été exécuté avant son extinction.

Conflits PM-Utils

Le paquet pm-utils fournit des scripts lancés sur les fonction suspendre, hiberner et reprendre du système. Il y a un script, /usr/lib/pmutils/power.d/disable_wol, qui définit la configuration des interfaces pour seulement l'allumage sur « Magic Packet » (g), quels que soient les paramètres que vous avez configurés /etc/network/interfaces (ou un des fichiers sous /etc/network/interfaces.d, ou manuellement en utilisant ethtool ou d'autres façons). Recherchez des lignes dans le fichier semblables à ce qui suit :

            disable) ethtool -s "${d##*/}" wol d>/dev/null 2>&1;;
            enable) ethtool -s "${d##*/}" wol g>/dev/null 2>&1;;

Évidemment, si vous avez défini une interface sur Wake on LAN dans le cas d’un paquet unicast ou d'un « Magic Packet » (ug), suspendez-le avec pm-suspend, par exemple, ce script définira l'interface pour « Magic Packet » seulement (g) dans le cadre du processus de suspension.

Vous pouvez détecter le problème, une fois que vous savez ce que vous recherchez, en notant après ethtool après une reprise que les paramètres « Wake-on » pour les interfaces ont été définis sur « g ».

Une solution simple (qui n’interférera pas avec les mises à jour du paquet) consiste à ajouter un fichier portant le même nom, disable_wol au répertoire de configuration local, /etc/pm/power.d/. Cela remplace le script dans /usr/lib/pm-utils/power.d/disable_wol.

Ceci est le (quelque peu verbeux et fonctionnellement trivial) /etc/pm/power.d/disable_wol de l'auteur :

# Remplace le fichier /usr/lib/pm-utils/power.d/disable_wol qui
# configure manuellement les paramètres de Wake On Lan (WOL) pour les interfaces.
# Ce fichier par défaut utilise ethtool pour configurer WOL pour toutes les interfaces.
# à "g" (magic paquet) seul.
#
# Notez que la présence de ce fichier, avec le même nom mais sous
# /etc/pm/power.d/, est suffisant pour remplacer complètement le fichier
# sous /usr/lib/pm-utils/power.d/. Ce dernier fichier est inclus dans
# le paquet Debian "pm-utils", et peut être mis à jour de temps en temps
# temps à travers le système de gestion de paquets. Les répertoires sous
# /etc/pm/ sont les emplacements appropriés pour les configurations locales.
#
# Sur ce système, les configurations WOL sont effectuées dans l'interface
# configuration sous /etc/network/. Chaque interface peut avoir une
# configuration différente, et il est typique de configurer WOL pour
# "ug" pour réveiller le système sur un paquet unicast pour le trafic envoyé
# spécifiquement à cette interface. Cela permet au système d'être
# réveillé à la demande, lorsque le trafic vers l'une de ses interfaces est reçu.


exit 0

Conclusion

Le Wake On LAN fonctionne avec Debian et ouvre de nouvelles possibilités.

L'auteur a pu accéder à sa passerelle et à démarrer son ordinateur, y récupérer ce qu'il voulait puis à l'éteindre à distance. Il utilise DHCP avec le mappage MAC-vers-IP comme ça on peut regarder dans le fichier sur la passerelle pour connaitre l'adresse MAC de l'ordinateur que l'on souhaite démarrer et on peut conserver cette information dans un fichier texte.

L'étape suivante est de pouvoir avoir ses machines non-essentielles complètement éteintes (non simplement arrêtées) lors d'une coupure de courant pour allonger la durée des batteries pour les machines essentielles, puis utiliser le WOL pour rallumer les autres machines quand le courant revient et que les batteries de sauvegarde ont retrouvés un certain niveau de charge. L'auteur pense que certaines configurations de halt, de APM ou de ACPI ne sont pas adaptées à ce type de système. Voir OffAndOnAgain.

Liens externes


CategoryNetwork | CategorySystemAdministration