Attends Josette… Ya la fonera+ qui marche pas !
Le film est fini, maman est couchée et il est temps pour moi d’aller voir si le dernier snapshot d’Openwrt tourne sur Fonera+, comme Lefinnois l’annonce dans son billet : Vas y Josette sort le crémant, y’a Openwrt qui tourne sur la Fonera+.
Je télécharge donc le tout dernier snapshot (celui du 22/09/2008). (http://downloads.openwrt.org/snapshots/atheros/)
- Le noyau : openwrt-atheros-vmlinuz.lzma,
- et le rootfs : openwrt-atheros-root.jffs2
Ne disposant pas d’adaptateur console pour la Fonera (il faut vraiment que j’en fasse un…), je privilégie la voie ethernet habituelle. Après tout, il n’y a pas de raison…
Je flashe méthodiquement le système, sans oublier le « fconfig » pour supprimer le second bootloader dans le script d’amorçage. Tout se passe sans encombre jusqu’au reboot… La fonera semble tourner parfaitement, mais demeure totalement inaccessible… Argggg !
Après plusieurs essais, dont un sur une Fonera 2100, les résultats sont les mêmes. J’en conclus qu’il y a sûrement une coquille dans le build.
Je remarque cependant qu’une connexion Wifi non protégée est disponible, mais seul le port ssh semble ouvert et biensûr, impossible de trouver le mot de passe root… Re-Argggg…
Ca confirme au moins que la Fonera fonctionne et qu’il s’agit sûrement d’un problème dans la configuration de ce build.
Voyons voir ça de plus près…
Après deux bonnes heures de tripotage, je parviens enfin à monter l’image du rootfs sur une Debian :
1 – Installation de quelques utilitaires :
aptitude install mtd-tools mtd-utils |
2 – Chargement de quelques modules (mtdblock pour pouvoir monter un périphérique mtd et y accéder comme avec un périphérique block et jffs2 pour prendre en charge le système de fichiers du même nom)
modprobe mtdblock modprobe jffs2 |
3 – Création d’un périphérique mtd en ram, grâce au module mtdram
modprobe mtdram erase_size=64 total_size=2500
cat /proc/mtd
dev: size erasesize name
mtd0: 00271000 00010000 "mtdram test device" |
J’avoue que le choix du « total_size » est un peu pris au pif… Le fichier image pèse 1,9 Mo, j’ai choisi une valeur légèrement au dessus pour être un peu plus à l’aise, sans pour autant obtenir une image trop volumineuse.
4 – L’image jffs2 est en « big-endian« , il faut la convertir avant de la monter.
jffs2dump -b -r -c openwrt-atheros-root.jffs2 -e /dev/mtdblock0 mkdir /mnt/rootfs mount -t jffs2 /dev/mtdblock0 /mnt/rootfs |
Un léger coup d’oeil sur le fichier de config du réseau montre que l’interface lan est configurée en 192.168.13.1, alors que l’interface wan est en client dhcp.
etc/config/network
# Copyright (C) 2006 OpenWrt.org config interface loopback option ifname lo option proto static option ipaddr 127.0.0.1 option netmask 255.0.0.0 config interface lan option type bridge option proto static option ipaddr 192.168.13.1 option netmask 255.255.255.0 config interface wan option ifname eth0 option proto dhcp |
A la vue du fichier etc/init.d/telnet et etc/passwd, on comprend facilement pourquoi telnet ne fonctionne pas : telnetd n’est démarré que si aucun mot de passe n’est défini pour root… Il semblerait que ce ne soit pas le cas !
etc/passwd
root:$1$w4R3qa0K$mvrDjmKzXPfJsT5KwTxDz.:0:0:root:/root:/bin/ash nobody:*:65534:65534:nobody:/var:/bin/false daemon:*:65534:65534:daemon:/var:/bin/false |
etc/init.d/telnet
#!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org START=50 start() { if [ ! -f /etc/passwd ] || awk -F: '/^root:/ && ($2 != "") && ($2 !~ /!/) {exit 1}' /etc/passwd 2> /dev/null || ( [ ! -x /usr/sbin/dropbear ] && [ ! -x /usr/sbin/sshd ] ) then telnetd -l /bin/login fi } stop() { killall telnetd } |
Un petit coup d’oeil au firewall tant qu’on y est :
etc/config/firewall
config defaults
option syn_flood 1
option input DROP
option output ACCEPT
option forward DROP
config zone
option name lan
option input ACCEPT
option output ACCEPT
option forward DROP
config zone
option name wan
option input DROP
option output ACCEPT
option forward DROP
option masq 1
config forwarding
option src lan
option dest wan |
Après suppression du password root, le réseau bien configuré et le firewall allégé, je génère une nouvelle image à partir du périphérique mtdblock0, sans oublier l’indianness.
umount /mnt/rootfs jffs2dump -l -r -c /dev/mtdblock0 -e rootfs.jffs2 |
La Fonera refuse malheureusement de booter sur le rootfs créé à partir de cette nouvelle image.
Je dois faire quelque chose de travers… Donc la suite dans un prochain billet, après quelques recherches.
Laissez votre message après le bip...Biiiiip



[...] le billet précédent, j’évoque le problème du mot de passe root déjà renseigné dans le snapshot du 22/09/08 [...]