Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !



Wake on LAN : réveil de l'ordinateur via le réseau

Les informations données ici semblent partiellement erronées ou superflues consultez en priorité la page wakeonlan

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 près du connecteur réseau signale la présence d'une activité, même ordinateur éteint.

  • Ubuntu dispose de 2 paquets pour gérer la fonction WOL : etherwake, wakeonlan
  • Vous aurez besoin d'une station de contrôle pour piloter le réveil d'un ordinateur distant (a priori sur votre réseau local), sur laquelle vous installerez l'un de ces 2 paquets,
  • Pour réveiller l'ordinateur distant, il faut connaître son adresse MAC.
  • Sur l'ordinateur distant, il faut configurer le BIOS pour que la fonction WOL (Wake-on-LAN) soit activée, pas de logiciel supplémentaire a installer,

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

Sous GNU/linux lors de l'extinction, le système désactive les interfaces réseaux.

La page wakeonlan semble beaucoup plus claire et suffisante pour faire marcher le WOL, consultez la avant d'essayez les choses proposées ci-dessous. En cas d'échec de tout le reste vous pourrez toujours revenir sur cette page…

Méthode pour éviter la désactivation du WOL

Testée avec Feisty, fonctionne sous Gusty

Les modifs ci-dessous sont largement superflues ; en particulier la commande ethtool est rajoutée à de multiples endroits où elle est parfaitement inutile ; visiblement celui qui a proposé ce script l'a mise partout au petit bonheur sans savoir où elle serait utile. Tout ceci n'est en particulier d'aucune utilité sous Intrepid.

Il semble qu'on puisse ne modifier qu'un seul fichier pour avoir un Wake On Lan qui fonctionne. Comme les pilotes 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.

Alternative

FIXME si quelqu'un a testé avec succès merci de remettre un peu d'ordre ci-dessous…

Editez

  sudo gedit /etc/network/interfaces

ajoutez

  pre-down /usr/sbin/ethtool -s eth0 wol g

puis pour l'extinction:

Sous Intrepid, les modifications ci-dessous de "halt" sont inutiles, puisque le script "halt" d'origine le prévoit déjà à l'identique, mais avec le nom de variable NETDOWN. On obtient donc le résultat équivalent en mettant simplement NETDOWN="no" dans /etc/default/halt.

é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 ;)

FIXME

Notes aux rédacteurs :
  • Cette fin de page serait à réviser

Contributeurs : Dwan, Hipopo, Mysteroïd.

  • wake-on-lan.1236242236.txt.gz
  • Dernière modification: Le 18/04/2011, 14:53
  • (modification externe)