Ceci est une ancienne révision du document !
Wake on LAN : réveil de l'ordinateur via le réseau
Définition
Le Wake-on-LAN (WOL) ou mise en marche du PC depuis le réseau est une technologie développée par AMD et IBM, permettant à un ordinateur mis en veille d'être démarré à distance par l'envoi d'un « magic-packet » sur la carte réseau supportant le Wake-on-LAN.
Sur les ordinateurs récents, l'arrêt complet de l'ordinateur est possible. En effet, l'alimentation est toujours présente et la carte-mère est généralement en veille. D'ailleurs un voyant sur près du connecteur réseau signale la présence d'une activité, même ordinateur éteint.
- vous aurez besoin d'une station de contrôle pour piloter le réveil d'un ordinateur distant (à prioris sur votre réseau local), sur laquelle vous installerez l'un de ces 2 packets,
- pour réveiller l'ordinateur distant, il faut connaitre son adresse MAC.
- sur l'ordinateur distant, il faut configurer le BIOS pour que la fonction WOL soit activée, pas de logiciel supplémentaire a installer,
Mise en oeuvre
Paramétrage du BIOS
Pour que le WOL soit possible il faut activer l'option correspondante dans votre bios. Suivant la version/fabricant de votre BIOS l'option se nomme différemment : Power On PCI, Wake On Network,…
Paramétrage de la carte réseau
Il faut maintenant paramétrer la carte réseau pour qu'elle réagisse au signal "Wake-on-lan" qu'on appelle aussi paquet "magique" (magic packet).
Note : Je ne suis pas arrivé à paramétrer le WOL une fois pour toute dans la mémoire morte de la carte réseau. Une solution (pas très propre) consiste à exécuter un script au démarrage et/ou à l'arrêt de l'ordinateur et/ou de l'interface réseau.
En dur
Je ne suis jamais arrivé à écrire dans l'EEPROM de ma carte réseau pour qu'elle
sudo gedit /etc/network/interfaces
et ajoutez
pre-down /usr/sbin/ethtool -s eth0 wol g
puis on finit avec l'extinction:
éditez
sudo gedit /etc/default/halt
et ajoutez
WOL=1
puis éditez
sudo gedit /etc/init.d/halt
Juste avant la ligne
log_action_msg "Will now halt"
ajoutez
# dont shut interfaces down if WOL=1 wol="-i" if [ "$WOL" = "1" ] then wol="" fi
Puis remplacez la ligne
halt -d -f -i $poweroff $hddown
par :
halt -d -f $wol $poweroff $hddown
Voilà, il y a peut-être des choses en double ou il y a peut-être plus simple/facile/optimisé, mais je pense que cette méthode marche pas mal. Peut-être à mettre sur le wiki, mais j'ai pas encore regardé comment faire, ni même si c'est assez complet pour l'y faire figurer… enfin d'ici la, bon wol. Pitch ;)
Méthode éphémère alternative
Testée avec Feisty,fonctionne sous Gusty
En essayant les méthodes précédentes, j'en suis venu à ne modifier qu'un seul fichier pour avoir un Wake On Lan qui fonctionne. Comme les drivers de cartes réseau ont tendance, en se chargeant, à désactiver le WOL, nous allons tout simplement activer le WOL sur n'importe quel évènement réseau, que ce soit start
, stop
, restart
ou force-reload
.
Pour cela, éditons /etc/init.d/networking :
sudo gedit /etc/init.d/networking
Et ajoutons ethtool -s eth0 wol g
à la fin de chaque fonction (attention, votre carte réseau n'est peut-être pas identifiée sous eth0 mais eth1, pensez à faire la modification dans les commandes. Afin de savoir, tapez dans un terminal: ifconfig vous aurez descriptif des interfaces réseau en service sur votre machine), ce qui donne :
#!/bin/sh -e ### BEGIN INIT INFO # Provides: networking # Required-Start: mountkernfs ifupdown $local_fs # Required-Stop: ifupdown $local_fs # Default-Start: S # Default-Stop: 0 6 ### END INIT INFO PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" [ -x /sbin/ifup ] || exit 0 . /lib/lsb/init-functions case "$1" in start) log_action_begin_msg "Configuring network interfaces" type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true if [ "$VERBOSE" != no ]; then if ifup -a; then log_action_end_msg $? else log_action_end_msg $? fi else if ifup -a >/dev/null 2>&1; then log_action_end_msg $? else log_action_end_msg $? fi fi type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ethtool -s eth0 wol g ;; stop) if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts | grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then log_warning_msg "not deconfiguring network interfaces: network shares still mounted." #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ethtool -s eth0 wol g exit 0 fi log_action_begin_msg "Deconfiguring network interfaces" if [ "$VERBOSE" != no ]; then if ifdown -a --exclude=lo; then log_action_end_msg $? else log_action_end_msg $? fi else if ifdown -a --exclude=lo >/dev/null 2>/dev/null; then log_action_end_msg $? else log_action_end_msg $? fi fi #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ethtool -s eth0 wol g ;; force-reload|restart) log_action_begin_msg "Reconfiguring network interfaces" ifdown -a --exclude=lo || true if ifup -a --exclude=lo; then log_action_end_msg $? else log_action_end_msg $? fi #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ethtool -s eth0 wol g ;; *) echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}" #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ethtool -s eth0 wol g exit 1 ;; esac #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ethtool -s eth0 wol g exit 1
Et voilà ! Que le réseau soit démarré, arrêté, redémarré ou rechargé, le wol sera réactivé, ce qui lui permet notamment de rester activé à l'arrêt de l'ordinateur.
Notes aux rédacteurs
- supprimer les notes personnels, les "je" …
- mettre au clair les bidouilles …
- La version expliquée sur la page de "wakeonlan" pour les bidouilles est bien plus clair…
Contributeurs : Dwan, Hipopo.