FIXME Mettre à jour

OpenWRT sur un Linksys WRT54GL

Voici une petite doc sur un classique : comment flasher le WRT54GL pour y mettre OpenWRT. En fait, c'est pas évident au premier abord, surtout qu'il n'y a pas beaucoup de documentation francophone.

Récupérer une image

Comment bien choisir son image d'OpenWRT, en fait après avoir pas mal tourné en rond dans le wiki, (qui n'est pas forcément à jour par rapport au système, mais ça viendra) les images qui vont bien sont :

Attention à bien vérifier l'intégrité de l'image téléchargée via MD5.

Avant la version 8.09_RC1, il n'y a pas de driver libre pour le wifi dans le noyau 2.6.

Flasher le routeur depuis l'interface web Linksys

La première chose à faire est de se connecter à l'interface web de gestion du routeur, il faut une adresse IP dans la plage 192.168.1.0/24, l'adresse du routeur étant 192.168.1.1 par défaut, par exemple :

# ifconfig eth1:1 inet 192.168.1.2 up

Pour installer une image, la première fois :

  • Il faut connecter le cable sur un port ethernet de 1 à 4 sur le routeur.
  • Aller sur http://192.168.1.1, on ne met pas de user, et “admin” comme mot de passe. Puis dans Administration > Firmware upgrade.
  • Choisir l'image à uploader dans le routeur et faire upgrade. Le routeur se flashe et reboot tout seul, il faut attendre un peu et tenter la connection telnet ou web sur 192.168.1.1

Flasher le routeur par TFTP

Il faut d'abord installer un client TFTP, comme “atftp” :

# aptitude install atftp

Ensuite, il faut vérifier que le boot_wait est activé. Ce paramètre indique au routeur d'attendre de recevoir des réquêtes TFTP au boot, ce qui permet de pouvoir le flasher :

routeur# nvram show | grep boot_wait
size: 2475 bytes (30293 left)
boot_wait=on

Sinon, il faut l'activer, mais pour moi c'était déjà fait :

routeur# nvram set boot_wait=on
routeur# nvram commit && reboot

Normalement, avec Kamikaze, on n'a pas besoin de trafiquer le nvram pour configurer le routeur.

Pour flasher le routeur :

  • Débrancher l'alimentation du routeur
  • Lancer la commande suivante :
atftp --trace --option "timeout 1" --option "mode octet" --put --local-file openwrt-wrt54g-squashfs.bin 192.168.1.1
  • Brancher l'alimentation, le transfert TFTP doit commencer presque immédiatement
  • A la fin, le routeur reboote tout seul, lorsqu'il est de nouveau disponible, c'est prêt.

Configuration basique

Le plus simple est d'aller sur l'interface graphique (http://192.168.1.1), la première fois il est demandé de mettre un mot de passe root. On peut ensuite se connecter en SSH, sinon c'est telnet. L'interface graphique permet de tout configurer, ça permet d'avoir quelque chose de fonctionnel très vite, les paramètres par défaut sont corrects.

Nettoyer la nvram

D'abord, il faut mettre un mot de passe root costaud et utiliser SSH.

Ensuite, on peut lancer les commandes suivantes pour nettoyer la nvram, quand le routeur est connecté au Net :

cd /tmp
wget http://downloads.openwrt.org/people/kaloz/nvram-clean.sh
chmod a+x nvram-clean.sh
./nvram-clean.sh
nvram commit
rm nvram-clean.sh

Le script de nettoyage m'a donné ça à la fin :

Before: size: 9603 bytes (23165 left)
After: size: 2475 bytes (30293 left)

C'est toujours ça de gagné :-)

Conclusion

L'opération est somme toute assez simple quand on a bien compris le principe et qu'on ne panique pas. Il est aussi important de récupérer la bonne image pour ne pas rendre le routeur inutile (quoiqu'il est beau avec ses antennes, mais de là à le transformer en objet décoratif…)

Le seul soucis de WRT54GL vient de l'espace disque disponible, surtout que les fichiers de configuration sont bien organisés. Refaire une image vraiment minimale devient vite nécessaire, pour s'amuser à réduire la taille du système au maximum.