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

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.

  • Ubuntu dispose de 2 packets 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 packets,
  • 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 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).

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

FIXME

  • Cette page serait à réviser et fusionner avec la page wakeonlan

Contributeurs : Dwan, Hipopo.

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