# [HOWTO] wakeonlan

## anigel

La plupart de nos PC modernes supportent le wake-on-lan, cette fonctionnalité qui permet de "réveiller" un PC depuis le réseau ; pratique pour économiser l'énergie, mais aussi pour pouvoir travailler à distance sans forcément laisser son PC allumé en permanence (il suffit alors de disposer d'un serveur disposant de l'outil pour réveiller votre PC), cette fonction était jusque-là assez difficile à faire marcher sous Linux, et plus particulièrement sous Gentoo.

Des travaux récents sur ce sujet ont permis un support quasi-parfait de cette fonctionnalité (je n'ai rencontré que peu de soucis), directement dans les scripts d'init de notre distrib préférée, et je me propose donc de vous guider dans la mise en place de cet outil.

1. Pré-requis

Bien entendu, il est nécessaire de disposer d'un matériel qui supporte cette fonction. L'immense majorité des cartes mères modernes disposant d'un chip réseau intégré le permettent, moyennant parfois un flash du BIOS (consultez alors les documents relatif à votre matériel).

Certaines cartes réseau, un peu plus anciennes, requièrent d'être raccordées à un connecteur particulier de votre carte mère, via un câble adapté. Là encore, vous devez voir du côté des constructeurs de vos matériels.

Et, dans tous les cas, vous devez impérativement activer l'option wake-on-lan dans le BIOS de votre carte mère (elle peut porter différents noms, mais le plus souvent vous la trouverez sous l'appelation "Wake on PC Device", ou un truc du genre).

2. Installation d'un baselayout adapté

La version stable de sys-apps/baselayout est maintenant > 1.12. Vous pouvez donc directement passer au point suivant (3), les lignes qui suivent sont juste conservées pour mémoire.

Pour la suite, il va falloir mettre à jour votre baselayout vers une version 1.12.x :

```
echo "sys-apps/baselayout ~x86" >> /etc/portage/package.keywords

emerge baselayout -uDNav
```

La mise à jour est relativement rapide, par contre faites très attention, comme toujours, au moment de la mise à jour de vos fichiers de conf (ils sont très nombreux, et sont tous très importants). Les 2 fichiers importants pour le wake-on-lan sont /etc/conf.d/rc et /etc/init.d/shutdown.sh ; si vous aviez déjà fait des modifs dedans, veillez à bien incorporer les nouvelles fonctionnalités apportées par la nouvelle version !

3. Configuration

Ensuite, vous devez éditer /etc/conf.d/rc, et plus particulièrement mettre la variable RC_DOWN_INTERFACE à "no", pour empêcher Linux d'éteindre totalement la carte réseau lors de l'arrêt de la machine ; à la place, il la mettra simplement dans un état de "demi-sommeil" :

```
# RC_DOWN_INTERFACE allows you to specify if RC will bring the interface

# compeletly down when it stops. The default is yes, but there are some

# instances where you may not want this to happen such as using Wake On LAN.

RC_DOWN_INTERFACE="no"
```

Il reste encore tout une petite étape à configurer (ce fut le cas chez moi en tous cas) : demander à la carte réseau de réagir au "magic packet", qui sera utilisé pour la réveiller. Cela se fait avec l'outil ethtool, que vous devez donc installer.

```
emerge ethtool -av
```

Une fois compilé, il ne faut pas oublier de l'exécuter lors de chaque arrêt de la machine, sans quoi le wol risque de ne pas fonctionner du tout (le réglage n'est pas permanent) :

```
echo "ethtool -s eth0 wol g" >> /etc/conf.d/local.stop
```

NB : je place volontairement ethtool dans les scripts d'arrêt de la machine, et non de démarrage, car dans le cas où vous faite des modifs sur votre config réseau pendant votre session de travail, il existe toujours un risque de "perdre" ce réglage en cours de route (ça m'est arrivé 2 fois en relançant totalement mes interfaces). Pour ne pas prendre de risques, vous pouvez aussi l'ajouter dans /etc/conf.d/local/start.

Côté "serveur", c'est presque fini. Avant de redémarrer la machine pour prendre en compte les changements induits par le nouveau baselayout, il faut juste noter l'adresse MAC de la machine à réveiller. Vous pouvez la trouver grâce à l'outil ifconfig (inutile de l'installer, il fait partie du système de base). Dans mon cas, j'obtiens :

```
ifconfig

eth0      Link encap:Ethernet  HWaddr 00:75:F2:7E:15:B9

          inet addr:xxx.xxx.xxx.xxx  Bcast:xxx.xxx.xxx.255  Mask:255.255.255.0

          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:25859 errors:0 dropped:0 overruns:0 frame:0

          TX packets:12172 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:35119097 (33.4 Mb)  TX bytes:937123 (915.1 Kb)

          Interrupt:16
```

L'adresse MAC (aussi appelée adresse matérielle, ou Hardware Address) est la suite de 6 nombre hexadécimaux situés sur la fin de la première ligne ; ici "00:75:F2:7E:15:B9".

Maintenant, redémarrez la machine (pour prendre en compte les nouveaux réglages), puis éteignez-la normalement.

4. Installation du "réveil-matin"

Pour utiliser le wol, il faut envoyer un "magic packet" à la carte réseau du PC que vous venez de configurer, et qui va le réveiller. Il existe plusieurs clients pour cela ; j'ai choisi wakeonlan, tout simplement, sans autre raison que le fait que le nom de l'outil est évocateur. Pour l'installer sous gentoo :

```
emerge net-misc/wakeonlan -av
```

Notez bien qu'il existe d'autres outils qui font le même boulot, y compris sous d'autres OS. Le seul point important, c'est qu'ils soient capables de générer ce fameux "magic packet".

5. Le test !

Priez, et lancez simplement wakeonlan, avec comme argument l'adresse MAC notée un peu auparavant :

```
wakeonlan 00:75:F2:7E:15:B9
```

Et normalement, magie, l'ordinateur doit démarrer !

PS : Comme d'hab, toute contribution / correction est bienvenue

PPS : Si cela ne marche pas chez vous, soyez précis : le modèle de votre carte mère, de votre carte réseau, support ACPI ou APM dans votre noyau, éventuels messages d'erreur, et tout ce qui vous paraît utile à la résolution de votre problème.

----------

