Depuis quelques jours, plusieurs forums GNU/Linux s’enflamment pour une petite bestiole toute de blanc vêtue : le Seagate Dockstar.

Je ne vais pas le présenter en détails, d’autres l’ont fait mieux que moi, je vous renvoie donc à l’excellent article du blog de Galipe.
Nerd devant l’éternel, j’ai évidemment craqué pour la chose
(je vais même en recevoir un deuxième dans les prochains jours)
J’ai commencé à le bidouiller, en installant Debian dessus avec la méthode de Jeff Doozan, puis Plugbox (un fork d’Arch Linux dédié aux “plug computers” ARM).
Mais j’étais loin d’être satisfait de ces installations : en effet, elles se font avec une clé USB branchée sur le Dockstar, afin de contenir le système de fichiers.
Non seulement je trouvais un peu bête de condamner un port USB, mais la méthode était également loin d’être fiable : problèmes de “cold-boot”, boot qui ne se fait pas sans qu’on sache pourquoi, un peu la galère en définitive …
Avant même de recevoir la bête, j’avais dans ma tête l’idée de la faire booter sur le réseau : c’est idéal, cette machine est constamment branchée, ça laisse tous les ports USB libres et ça ne consomme rien de plus
Aujourd’hui, excédé par un énième foirage de boot par USB, j’ai décidé de creuser.
Une méthode avait déjà été publiée pour les SheevaPlug, extrêmement semblables : http://www.plugcomputer.org/plugwiki/index.php/Setting_up_TFTP_and_NFS
L’idée est de :
- demander à uBoot (le bootloader du Dockstar) de charger un kernel Linux par TFTP
- booter ce kernel en lui demandant de démarrer sur un partage NFS
Ayant plusieurs machines bootant sur le réseau par PXE, j’avais déjà des serveurs TFTP et NFS fonctionnels pour cet usage (je ne détaillerai pas non plus de ce côté, le web est rempli de documentation là-dessus), il ne me restait plus qu’à m’y mettre pour le Dockstar.

Après quelques tâtonnements (moins que je ne pensais), voici une procédure qui fonctionne au poil.
Je n’ai pas inventé grand chose, quasiment tout vient de la méthode pour SheevaPlug que j’ai linkée au dessus.
Commençons.
Les choses peuvent dépendre d’où vous en êtes dans le bidouillage du Dockstar, mais il suffit que vous ayez un accès SSH à la bestiole pour pouvoir commencer.
Nous allons débuter par l’installation d’un uBoot correct.
Installer un bon uBoot
Cette étape est facultative si vous avez déjà installé un uBoot alternatif pour pouvoir booter sur USB, mais cet uBoot-là est normalement meilleur.
(et c’est réversible)
Suivez les explications claires et détaillées de Jeff Doozan.
Créer l’arborescence d’un système Plugbox sur le serveur NFS
J’ai choisi d’utiliser Plugbox pour une raison simple : c’est une Arch Linux pour plug-computers, et compilée pour le CPU des SheevaPlug/Dockstar
Sur votre serveur, placez-vous donc dans un répertoire vide partagé par NFS, et exécutez les commandes suivantes en root :
wget http://plugapps.com/os/PlugboxLinux-1.0.1.tar.gz
wget http://sheeva.with-linux.com/sheeva/2.6.33/sheeva-2.6.33-Modules.tar.gz
tar -xzvf PlugboxLinux-1.0.1.tar.gz # This will take a long time
wget -O boot/uImage http://sheeva.with-linux.com/sheeva/2.6.33/sheeva-2.6.33-uImage
tar -xzvf sheeva-2.6.33-Modules.tar.gz
rm PlugboxLinux-1.0.1.tar.gz
rm sheeva-2.6.33-Modules.tar.gz
Elles sont issues du guide d’installation de Plugbox, disponible ici.
Vous obtiendrez un répertoire contenant l’arborescence complète de votre système Plugbox.
Notez précisément le chemin local complet vers celui-ci.
Placer l’image du kernel sur le serveur TFTP
Cette image est le fichier /boot/uImage du système que vous venez de créer.
Copiez-la dans le répertoire partagé par votre serveur TFTP.
Configurer uBoot soigneusement
La configuration de uBoot se fait grâce à l’utilitaire blparam, que l’on peut se procurer ici sous forme d’un binaire précompilé et exécutable directement depuis un système Pogoplug (celui d’origine sur le Dockstar), Debian ou Plugbox.
Ce binaire est téléchargeable à cette adresse : http://plugapps.com/os/pogoplug/uboot/blparam
Exécutez-le depuis votre Dockstar (dans le répertoire /tmp pour ne pas avoir à écrire sur la NAND, et n’oubliez pas le petit chmod +x qui va bien), vous allez obtenir la liste des paramètres actuels de votre Dockstar.
Par contre, il peut aussi servir à modifier ces paramètres : pour cela il faut l’exécuter de cette manière :
#./blparam 'paramètre=valeur'
On peut ainsi modifier les paramètres prédéfinis, mais également en rajouter et même en supprimer (en assignant une valeur nulle au paramètre).
Voici les paramètres à rajouter/modifier :
bootcmd_net=tftpboot 0x2000000 $(image_name);setenv bootargs $(console) $(bootargs_root2) nfsroot=$(serverip):$(rootpath2) ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvNetConfig) $(mvPhoneConfig); bootm 0x2000000;
bootcmd3=setenv bootcmd run bootcmd2; saveenv; run bootcmd_net
image_name=<nom que vous avez donné à l'image kernel dans votre serveur TFTP>
bootargs_root2=root=/dev/nfs rw
serverip=<IP de votre serveur NFS/TFTP>
rootpath2=<chemin local complet jusqu'à votre système de fichiers Plugbox sur le serveur NFS : /var/blabla/... ou autre>
ipaddr=<IP que vous voulez donner à votre Dockstar>
bootargs_end=:::DB88FXX81:eth0:none
mvNetConfig=mv_net_config=(<adresse MAC du Dockstar, chaque valeur séparée par des : >,0:1:2:3),mtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
arcNumber=2097
mainlineLinux=yes
Passez-les un à un via blparam.
Pour référence, voici la liste complète des paramètres du mien : http://ledek.free.fr/dl/blparam
(si vous êtes observateur, vous remarquerez que mon serveur TFTP et mon serveur NFS sont sur la même machine ; si les vôtres sont sur des machines différentes, il faudra séparer serverip en 2 paramètres distincts – pas difficile)
Enfin, nous allons passer à la dernière valeur, la plus importante : bootcmd.
Que j’explique un peu : dans les paramètres, j’ai fait en sorte de ne rien toucher d’autre, ce qui fait que pour l’instant, même avec toutes ces modifications, le Dockstar fonctionnera exactement comme avant.
Tout dépendra de ce que vous donnerez comme valeur à bootcmd.
Commencez par fixer :
bootcmd=run bootcmd3
Puis redémarrez.
Le Dockstar tentera de booter via TFTP/NFS, et si tout va bien vous pourrez vous logger sur votre nouveau système.
Mais quoi qu’il arrive, le boot suivant se fera sur la NAND, vous arriverez sur Pogoplug.
J’ai fait cela pour une raison très simple : si vous vous êtes trompé dans votre configuration et que le boot réseau échoue, cela va vous permettre de la corriger. (rebootez manuellement le Dockstar afin de revenir sur Pogoplug)
Si cela n’avait pas été le cas, il aurait été impossible de récupérer le Dockstar sans câble série.
Donc, si le boot réseau s’est bien déroulé la première fois, vous pouvez maintenant fixer définitivement le boot réseau :
bootcmd=run bootcmd_net
Désormais, le Dockstar bootera systématiquement sur le réseau avec les paramètres que vous avez fixés.
Inutile de préciser que toute cette étape est très sensible pour la santé de votre matériel, vérifiez à 2,3,4 fois que vous n’avez pas fait d’erreur.
Essayez également de comprendre ce que vous faites, une coquille de ma part est toujours possible, même si je me corrige.
Je ne pourrais être tenu responsable, blablabla…
Et maintenant,
Enjoy
Quelques liens utiles :
Le topic sur HFR, les fous du Dockstar y sont rassemblés 
Les photos de mon Dockstar.
Installer Debian pour Dockstar sur clé USB, méthode de Jeff Doozan.