Publié par Philippe le 06 Fév 2011 at 03:54
Seagate dockstar installation et amélioration
J’ai acheté cet ordinateur « presque » complet pour quelques dizaines d’euros. C’est en suivant les tutoriel disponibles sur le net que j’ai installé la même distrib linux que sur mon desktop, a savoir Archlinux. Le dockstar fonctionnait de façon satisfaisante avec son nouvel OS, mais n’avait pas la fiabilité que je souhaite, en particulier la résistance aux coupures de courant … J’ai donc effectué les modifications suivantes :
update 6 fev 2010 : Ajout RTC
Consommation
Tout d’abord, quelques mesures de conso. J’ai coupé le câble d’alimentation pour y insérer un ampèremètre, et mesure vraiment la consommation du dockstar, sans prendre en compte le rendement et l’imprécision d’une mesure avec un wattmètre. Il y a une clef USB de stockage, ainsi qu’un clef USB wifi branchées dessus. J’ai mesuré
- 230 mA dans uBoot
- 300 mA pendant le boot
- 290 mA en « idle »
- 360 mA au max pendant une compilation.
- 200 mA après la commande « halt ».
Sous 12V, le dockstar consomme donc au max 4.3W ! C’est léger 😉
Installation du bootloader
En suivant cette documentation, tout se passe bien : http://jeff.doozan.com/debian/uboot/
Voici ma synthèse :
- Faire en sorte que l’accès au net ne fonctionne plus, mais que le dockstar puisse avoir son IP par DHCP
- Se connecter dessus en ssh (root/stxadmin)
- Tuer le process de pogoplug : killall hbwd
- remettre le net en marche
-
cd /tmp wget http://jeff.doozan.com/debian/uboot/install_uboot_mtd0.sh chmod +x install_uboot_mtd0.sh ./install_uboot_mtd0.sh
- Installer la netconsole
Netconsole
A faire impérativement 😉 Cette console par réseau permet de voir ce qu’il se passe au moment du chargement du noyau. On peut aussi s’amuser à modifier et tester les paramètres de U-boot sans risque, puisque rien n’est sauvegardé en flash.
fw_setenv serverip 192.168.14.100
fw_setenv ipaddr 192.168.14.150
fw_setenv if_netconsole 'ping $serverip'
fw_setenv start_netconsole 'setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;'
fw_setenv preboot 'run if_netconsole start_netconsole'
Et sur le PC, qui à l’IP 192.168.14.100, il faut faire la commande suivante:
nc -l -u -p 6666
root filesystem en ext4
En suivant la procédure d’installation de plugbox linux, on crée une clef USB bootable, qui n’a qu’une seule partition en ext2. Après quelques temps, je n’arrivait plus a me connecter sur le dockstar. Et pour cause, le système de fichier était tout corrompu … E2fsck s’est fait un plaisir a essayer de réparer le système de fichier, mais en enlevant tous les fichiers corrompus. Et il n’en restait plus beaucoup à la fin, pas de quoi booter en tous cas. En effet, le système de fichier ext2 n’offre pas de protection contre l’extinction sauvage, sans démontage préalable. Les systèmes de fichier modernes se plaignent beaucoup moins d’un tel traitement. J’ai choisi d’utiliser ext4. Bon, on formate, et on réinstalle tout. Mais en mieux 😉
J’ai créé et formaté les partitions suivantes sur ma clef USB:
* /dev/sda1 : 50 Mo / ext2
* /dev/sda2: 500 Mo / swap
* /dev/sda3: (le reste) /ext4
sda1
Sur sda1, il y a juste le noyau dans la racine. Il faut bien penser a faire un lien symbolique qui crée un répertoire boot/ comme ceci :
ln -s . boot/
Ceci est nécessaire parce que uBoot cherche le noyau dans le répertoire boot/ sur sda1.
J’ai donc pour sda1:
.
├── boot -> .
├── lost+found
└── uImage
sda2
J’ai rajouté une partition de swap, au cas ou. Comme le système n’a que 128Mo de RAM, ca evitera de planter si je fais un truc trop gros. Pour l’instant, je n’ai pas eu besoin de l’utiliser.
sda3
Cette partition en ext4 est utilisé pour mettre tout le reste du système de fichier.
Dans /etc/fstab, il faut rajouter les lignes suivantes :
/dev/sda3 / ext4 defaults,relatime 0 1
/dev/sda1 /boot ext2 defaults 0 1
/dev/sda2 swap swap defaults 0 0
Il faut ensuite expliquer à uBoot que le rootfs n’est plus au même endroit. En utilisant la netconsole, j’ai modifié les paramètres de uBoot avec les commandes suivantes :
setenv usb_rootfstype "ext4"
setenv usb_scan_1 "usb=0:1 dev=sda3"
setenv usb_scan_2 "usb=1:1 dev=sdb3"
setenv usb_scan_3 "usb=2:1 dev=sdc3"
setenv usb_scan_4 "usb=3:1 dev=sdd3"
Pour booter, il faut taper:
boot
Si tout s’est bien passé, le dockstar a booté avec sa nouvelle partition en ext4. Pour rentre les modification de la configuration de uBoot persistantes, il faut faire un
saveenv
avant la commande boot.
Problème de détection de la clef USB
Il arrivait parfois que lors d’un reboot, la clef USB ne soit plus reconnue par uBoot, et que le dockstar ne démarre plus sous notre OS préféré.
La netconsole affiche dans ce cas:
scanning bus for devices... 3 USB Device(s) found
scanning bus for storage devices... error in inquiry
0 Storage Device(s) found
« error in inquiry » est la source du problème, et « 0 Storage Device(s) found » ne donne pas un bon espoir.
Pour corriger j’ai ca, j’ai modifié la commande « bootcmd » dans uBoot de cette facon:
setenv bootcmd "usb reset; usb start ;run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset"
De la sorte, le « scanning bus for devices » est executé 2 fois, et la clef USB est bien trouvé la 2ème fois :
scanning bus for devices... 3 USB Device(s) found
scanning bus for storage devices... error in inquiry
0 Storage Device(s) found
(Re)start USB...
USB: Register 10011 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 3 USB Device(s) found
scanning bus for storage devices... 1 Storage Device(s) found
Root en ext3
Finalement, ce n’est pas la peine de s’embêter autant pour avoir un système de fichier stable … L’ext3 est supporté par uBoot. Il suffit donc d’avoir la partition root en ext3 (au lieu du ext2) et de faire la commande suivante:
setenv usb_rootfstype "ext3"
Problème de DHCP
Le dhcp du dockstar a souvent du mal à demander une adresse IP au serveur. J’ai l’impression que c’est quand la lease précédente est toujours valide, le dockstar ne demande pas de nouvelle adresse.
Pour cela, j’efface systématiquement la lease précédente dans la commande PRE_UP. J’utilise netcfg, et dans les fichiers de configuration dans /etc/netword.d, j’ai ajouté :
PRE_UP="rm -f /var/lib/dhcpcd/dhcpcd-wlan0.lease"
ou pour une connection ethernet :
PRE_UP="rm -f /var/lib/dhcpcd/dhcpcd-eth0.lease"
Pour l’instant, ca a l’air de mieux fonctionner.
Hardware MOD : ajout de la RTC
Quelques forums parlaient de la modification nécessaire pour ajouter la RTC. RTC signifie « Real Time Clock ». C’est un petit bout de circuit qui continue à compter l’heure même que le courant est coupé. C’est à ca que sert la pile à côté du BIOS dans les PC.
Dans le dockstar, le CPU a la logique pour maintenir l’heure, mais les composants externes n’ont pas été intégrés au PCB (économies …). Voici comment les câbler soit même.
Ce schéma indique ou sont les pins à câbler :
Il y a a cet endroit des résistances de 0 ohms. Il faut tout d’abord les dessouder pour les enlever.
Puis il faut câbler le quartz, les 2 condos de 22pF, la résistance de 10M et la pile selon ce schéma :
Le résultat final donne quelque chose comme ca :
Comme à mon habitude, j’ai acheté les composants chez gotronic :
- 05220 Quartz 32.768 KHz 0.60€
- 16400 5x CONDENSATEURS 22pF 1206 0.75€
- 16280 10 RESIST. CMS 3.9M 1206 0.30€
- 09475 Pile 1.50€
-
- http://spritesmods.com/?art=macsearm&page=8
- http://gsg-elektronik.de/?id=92
- http://plugapps.com/forum/viewtopic.php?f=6&t=258&start=10
Attention !!!
Attention ! L’opération n’est quand même pas simple…. Les pistes sont toutes petites ! A ma première tentative, l’une des plots de connexion s’est arraché quand j’ai voulu tordre les pâtes du quartz après soudure. Donc un de mes dockstar n’aura jamais de RTC 😉 Il faut donc bien plier les pâtes des composants comme il faut AVANT de souder. Il faut aussi isoler le montage avec du scotch, pour éviter de faire court-circuit avec le blindage métallique du haut du boîtier. Attention aussi aux dates de montage des systèmes de fichiers. Il y a des vérifications, et le système de fichier ne se monte pas si il y a un décalage de date trop grand … Du coup, le dockstar ne boutait plus quand la RTC fonctionnait … J’ai donc débranché la pile, démarré le dockstar (01-01-1970), soudé la pile, et reboot à chaud (01-01-2000).
Le résultat est la, on voit dans /var/log/kernel.log:
avant:
Jan 1 01:00:22 plug2 kernel: rtc-mv rtc-mv: internal RTC not ticking Jan 1 01:00:22 plug2 kernel: drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
après:
Feb 6 15:12:28 plug1 kernel: rtc-mv rtc-mv: rtc core: registered rtc-mv as rtc0 Feb 6 15:12:28 plug1 kernel: rtc-mv rtc-mv: setting system clock to 2011-02-06 15:12:11 UTC (1297005131)
sources
-
Reinstallation du kernel debian
Suite au message:
Loading file "/boot/uImage" from usb device 0:1 (usbda1)
1436032 bytes read
Loading file "/boot/uInitrd" from usb device 0:1 (usbda1)
4532471 bytes read
Wrong Image Format for bootm command
ERROR: can't get kernel image!
J’ai recréé les images que uBoot attend:
/usr/bin/mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-2.6.32-5 -d /boot/vmlinuz-2.6.32-5-kirkwood /boot/uImage
/usr/bin/mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /boot/initrd.img-2.6.32-5-kirkwood /boot/uInitrd
7 février 2011 à 11:52
Joli tutoriel. Je ne connaissais pas netconsole. C’est effectivement bien plus rassurant que de reflasher en aveugle.
D’ailleurs, j’ai du chercher un peu les 2 commandes netcat à taper coté client pour l’administrer. Dans mon cas une ouverture en lecture et écriture du port UDP 6666.
Gab
7 février 2011 à 22:01
C’est vrai, il manque « nc -l -u -p 6666 » dans l’article ! Je viens de le rajouter. Merci !
13 février 2011 à 01:12
Super tuto.
J’ai acheté un Dockstar il y a peu et je l’ai activé sans connaître l’existence de ce hack.
Puis-je tout de même suivre votre procédure pour le modifier ?
Merci de partager et bonne continuation
16 février 2011 à 20:02
Bonjour, oui il est possible d’installer uBoot même après l’activation. Il faut se connecter au dockstar par ssh après avoir choisi un mot des passe dans un menu un peu caché de l’interface web de pogoplug. Ensuite, la procédure est la même. A+
17 février 2011 à 09:41
Bonjour et merci pour la réponse.
J’ai installé Jeff’s Debian squeeze sur le Dockstar et tout s’est parfaitement déroulé.
Je suis en train de configurer Samba pour le partage des disques connectés sur les ports USB.
Et je teste une procédure de création d’image de la cle USB de boot sans la débrancher !
J’essayerai de mettre ce que j’ai fait sur mon blog.
Bonne continuation
25 février 2011 à 09:18
Bonjour,
Je suis avec attention ce tutorial qui offre une alternative à l’ext2. J’aimerais cependant savoir quand la procédure d’installation de jeff doit se faire ?
En effet j’ai crée mes partitions comme il faut mais derrière je n’ai pas assez de place donc je pense que l’installation a été lancé trop tot (clé usb de 4gb), je n’ai pas fait de lien symbolique pour le root.
1) Quand se lance le script d’installation du système ?
2) J’ai du mal à capter comment se fait le lien symbolique ? On doit se trouver dans la partition /dev/sda1 ?
Merci pour tes réponses
11 mars 2011 à 15:24
Sympa le soudage du RTC, j’avais vu ça dans des forums allemands mais avec la langue de molière c’est plus facile.
Mon Dockstar est devenu serveur Web il y a quelques mois déjà et j’en ai deux autres qui attendent leurs utilisation (station méteo + domotique légère et l’autre je ne sais pas).
En tout cas bon post très agréable à lire.
20 avril 2011 à 07:21
Bonjour,
Je viens de mettre en ligne sur mon blog un benchmark sur les performances du seagate dockstar avec nginx pour l’autohébergement … Moins de 4W de consommation pour plus de 3000 visiteurs uniques/jours ! VIVE le DockSTar
http://goo.gl/z1Lkg
Cordialement,
Vincent RABAH
12 octobre 2011 à 21:14
Bonjour,
J’ai suivi le tutoriel pour utiliser du ext3 pour la partition système et il s’avère que ma partition ext3 n’a posé aucun problème pour booter. Pas besoin de seconde partition ou autre joyeuseté.
J’avais suivi le tuto à l’origine et il s’avère que je n’avais pas compris le fonctionnement de la ligne: setenv usb_scan_1 « usb=0:1 dev=sda3 »
Je ne savais pas que le usb=0:1 doit pointer vers la partition utilisée comme /boot. dans mon cas, la parition de boot était sda3, j’aurai du utiliser setenv usb_scan_1 « usb=0:3 dev=sda1 »
Cela m’a valu pas mal de problèmes…
Merci pour le tuto.
10 avril 2012 à 16:17
Salut,
Je sais que je viens un peu tardivement sur le sujet, mais je rencotre aujourd’hui un gros soucis au niveau de l’installation debian sur mon dock.
Alors, en suivant presque tous les tutos sur le sujet, je suis arrivé à tout faire jusqu’au moment où, après le formatage de la clé usb destiné a accueilir debian, on reboote le dockstar. En essayant de me reconnecter via ssh dessus, je n’arrive plus à le faire (connection refused).
Et je ne sais pas comment remédier tout ça.
Précisions: avant le reboot, j’avais trouvé le IP, je l’avais déclaré en IP static sur ma freebox, et j’ai fait les modifs via le ssh sur le dock (entre autre, bloquer le démarrage de pogoplug – avec le commentaire de la ligne /etc/….. start)
Donc maintenant, le dock reste en jaune clignotant, et je ne sais pas comment continuer….
Est-ce que si je fait un Reset avec le petit bouton sur le côté, les modifications que j’ai fait seront annulées????
MErci
1 mai 2012 à 21:23
Coucou,
Tu es sûrement au courant de la sortie du Raspberry Pi ?
Qu’en penses-tu ?
19 mai 2012 à 20:39
Salut Thomas,
Le Raspberry Pi ressemble dans l’idée au dockstar. Comme j’en ai encore 2 en stock, je n’ai pas cherché à commander le Raspberry 😉
Le CPU du Raspberry est quand même moins puissant que celui du dockstar. Par contre, il a une sortie vidéo, qui peut manquer au dockstar pour mettre sous la TV. Le prix est largement compétitif, pas de quoi se priver si on en a l’usage.
25 juillet 2014 à 11:55
Je me pose une question par rapport à la clock. C’est une machine prévue pour être branchée en permanence, donc l’utilité de la pile me semble limitée, non? Pourquoi ne pas configurer NTP pour le remettre à jour en cas de reboot?
25 juillet 2014 à 23:52
Bonjour Julien,
C’est vrai que le dockstar est configuré avec NTP, et récupère l’heure rapidement après le boot. Mais il y a quelques arguments pour avoir l’horloge RTC fonctionnelle :
– Souder sur des pistes plus fines que le fer à souder c’est fun 🙂
– J’avais utilisé ce dockstar pour faire une passerelle freewifi « automatique », et c’est pratique d’avoir l’heure dans les log, avant que la première connexion au net ne soit faite
– Certains services n’aime pas se retrouver le 1er janvier 1970, par exemple le fsck du début, et aussi les certificats qui sont invalides.