27/05/2010
GuruPlug Server Plus et FreeBSD
Mon GuruPlug Server Plus a fini par arriver. Maintenant que mon OpenRD est opérationnel, j'ai pensé que le GuruPlug me ferait moins de misère. Et bien pas du tout. Pour les futurs acquéreurs: le GuruPlug JTAG Board c'est pas une option.
Pourtant mon plan était simple:
- une clef usb de 4Go (1 partition FAT + 1 slice FreeBSD contenant une simple partition)
- un make installword depuis l'OpenRD
- configuration du U-Boot
- joie et bonheur
Après plusieurs tentatives, j'ai fini par comprendre que ma clef était reconnue en tant que da2. Je recompile mon kernel avec l'option kivabien (options ROOTDEVNAME="ufs:/dev/da2s2a").
Reboot et paf: re-fail. Le kernel boote, tente de mounter la racine mais, voire MAIS, la clef n'est pas encore détectée. Une première piste me conduit vers une impasse. Le grand Ternet étant fait de clickas et de clickous (de fil en aiguille quoi) je tombe sur ce patch. Mon ami Murphy en profite pour le rendre incompatible avec un FreeBSD 9.0 CURRENT. Je retrousse mes manches et c'est parti pour une scéance de $EDITOR (belle esquive de troll :).
Un reboot pour la route et je touche au but:
guruplug# uname -srm
FreeBSD 9.0-CURRENT arm
Il ne me reste plus qu'à rajouter un user, configurer le réseau et je vois la fin du tunnel. Et ben non. Murphy (ou un de ses potes) décide que le rj45/gigabit n'est pas compatible avec un boot. Il faut le voir pour le croire, ou alors le lire ici, là et encore là. Et comme pour l'instant j'utilise un câble croisé entre mon portable (carte réseau giga) et le guruplug, re-re-fail.
Lueur d'espoir: mon switch est en 100Mbits donc je repousse la mise à jour d'une version plus récente de U-Boot.
Pour finir, la configuration du U-Boot:
Marvell>> printenv
bootcmd=setenv ethact egiga0; ${x_bootcmd_ethernet}; setenv ethact egiga1; ${x_bootcmd_ethernet}; ${x_bootcmd_usb}; ${x_bootcmd_kernel}; setenv bootargs ${x_bootargs} ${x_bootargs_root}; bootm 0x6400000;
bootdelay=3
baudrate=115200
x_bootcmd_ethernet=ping 192.168.2.1
x_bootcmd_usb=usb start
x_bootcmd_kernel=nand read.e 0x6400000 0x100000 0x400000
x_bootargs=console=ttyS0,115200
x_bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
Marvell>> setenv bootcmd 'usb start;fatload usb 1 900000 kernel.bin;go 900000'
Marvell>> saveenv
Au chapitre des mauvaises nouvelles, le GuruPlug peut servir de chauffage d'appoint, mge1 est aux abonnés absents mais c'est en cours. Le lecteur de carte SD, la carte wifi, le bluetooth, ma clef usb fâchée avec le cache me réservent encore de belles soirées.
Dernier re-re-re-fail pour la route: si le GuruPlug JTAG Board est uniquement branché au GuruPlug, le bousin ne démarre pas.
Pour les curieux, un dmesg kivabien.
Update: c'est qui l'enfant de salaud qui m'a piqué mon adresse MAC ? Preuve que l'ipv6 c'est magique.
> ifconfig mge0
mge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE>
ether 00:00:00:00:00:00
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::845:3302:619b:ed0b%mge0 prefixlen 64 scopeid 0x1
inet6 2001:470:ca75:10:845:3302:619b:ed0b prefixlen 64 autoconf
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
d531:~> ping6 -c 1 2001:470:ca75:10:845:3302:619b:ed0b
PING 2001:470:ca75:10:845:3302:619b:ed0b(2001:470:ca75:10:845:3302:619b:ed0b) 56 data bytes
64 bytes from 2001:470:ca75:10:845:3302:619b:ed0b: icmp_seq=1 ttl=63 time=11.9 ms
--- 2001:470:ca75:10:845:3302:619b:ed0b ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 11.969/11.969/11.969/0.000 ms
Update 2:
> grep mge0 /etc/rc.conf
ifconfig_mge0="ether 00:50:43:aa:aa:aa"
ifconfig_mge0_alias0="inet 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
ifconfig_mge0_ipv6="RTADV"
> ifconfig mge0
mge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE>
ether 00:50:43:aa:aa:aa
inet6 fe80::250:43ff:feaa:aaaa%mge0 prefixlen 64 scopeid 0x1
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
inet6 2001:470:ca75:10:250:43ff:feaa:aaaa prefixlen 64 autoconf
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
Pages : 1
Rss