Yadomi!

Do you remember when the world wide web was fun ?


Le DockStar, un dock ARM sous ArchLinux

Il y a pas si longtemps, je suis tombé sur un objet étrange en cherchant des infos sur la BeagleBoard. Il s'agissait du DockStar. Enfaîte c'est un petit boîtier qui à la base devait servir de socle pour poser un disque dur FreeAgent de Seagate et le rendre accessible via Internet. Le problème c'est que le service devient payant au bout d'un ans ! Une joli arnaque si on ne lis pas le petit rectangle rose derrière la boite. Là où ça devient intéressant ce que la bête n'est rien d'autre qu'un Pogoplug légèrement modifié à la sauce Seagate. Alors à partir de la tout devient possible, j'ai donc installé ArchLinux dessus et voici comment j'ai procédé.

1. Ne pas le brancher au net

La première étape sûrement la plus frustrante consiste à empêcher le DockStar de se connecter à Internet, car si jamais tel est le cas, il se connectera tout seul aux serveurs de Pogoplug et enlèvera gentiment l'accès SSH. Si par malheur vous avez déjà fait cette "bêtise", sachez que c'est possible de faire marche arrière a réactivant le Dropbear dans l'administration du Pogoplug mais pour y accéder il faut forcement y être inscrit (Vous avez 1 ans )

Donc pour se faire, il y a deux solution ou plus la plus simple est de débrancher le câble téléphonique de la box, mais du coup plus d'internet partout dans la maison donc fin du monde. Alors j'ai préférer brancher directement en mode AdHock sur le PC avec un câble RJ45. Dans mon cas le serveur DHCP du DockStar donne une adresse sous la forme 169.254.X.X.

Les X sont en faite les 2 derniers nombre de l'adresse MAC. Mais la façon la plus simple pour connaître l'adresse de notre nouveau joujou est sûrement nmpa :

ifconfig eth0 169.254.1.1 # On se place au bon endroit dans le réseau
nmap -Sp 169.256.1.0/24

Certain affirme que netdiscover est plus rapide ce qui est techniquement vrai, mais dans la pratique... ça reste a vérifier. Bref chez moi j'obtient :

sudo nmap -sP 169.254.1.0/24

Starting Nmap 5.00 ( http://nmap.org ) at 2011-11-12 02:22 CET
Host 169.254.1.56 is up (0.069s latency).
MAC Address: F4:6D:04:37:D2:0E (Acer Corporation)
Host dockstar.lan (168.254.137.40) is up (0.014s latency).
MAC Address: 00:10:75:1A:89:28 (Maxtor)

Et voila le travail ! On a obtenu l'ip. Il nous reste plus qu'a nous connecter

2.Se connecter via SSH et empécher les MaJ

Tout d'abord il faut se connecter au dockstar via SSH, là c'est du basique pour ceux qu connaisse:

ssh root@ip_du_dockstar
Password: stxadmin
#etc/bash:$

Et vous voila connecté ! It's magic. Bref, maintenant il faut l'empecher de se mettre a jours. On va donc lui interdire l'accès au serveur de mise a jour en modifiant le fichier /etc/hosts de la sorte:

cat /etc/hosts
127.0.0.1 service.pogoplug.com
127.0.0.1 pm1.pogoplug.com
127.0.0.1 pm2.pogoplug.com
127.0.0.1 service.cloudengines.com
127.0.0.1 upgrade.pogoplug.com

Attention, sur cette version linux minimal du dockstar il n'y a que VI comme éditeur... donc petit rappel, on appui sur i pour passer en mode insertion puis echap pour repasser en mode commande et pour sauvegarder :w

Une fois ceci fait, un peu désactiver le service de Pogoplug en le killant, il s'appelle hbmgr.

killall hbmgr
killall hbwd

Penser aussi à virer le hbmgr.sh dans /etc/init.d/rcS qui évitera de le lancer au boot. Bien voila qui est fait, on peut continuer !

3.Changer la NAND pour pouvoir booter depuis l'USB

Cette étape est indispensable si on veut booter sur une clef usb ou un disque dur, on remercira donc Jeff qui a conçu un script spécialement pour installer uboot sur le dockstar. Mais avant de faire cela il faut monter le systeme de fichier en écriture:

mount / -rw -o remount

ensuite on change de repertoire et on télécharge le gentil script d'installation, on le chmod et on l'execute.

cd /tmp
wget http://jeff.doozan.com/debian/uboot/install_uboot_mtd0.sh
chmod +x install_uboot_mtd0.sh
./install_uboot_mtd0.sh
fw_setenv usb_rootfstype ext3

Le script ce lance, des messages vous affirme que vous allez perdre toute vos données etc... On continue jusqu'a voire que l'opération s'est déroulé avec succès. Voila votre dockstar peut booter sur l'usb maintenant.

4. Installer ArchLinux ARM sur une clef.

Retournez sur votre PC, et essayez de trouver une clef usb qui traîne sur votre bureau, sûrement la plus difficile des étapes. Une fois une clef trouvé, il faut créer 2 partitions, une en ext2 ou ext3, mais pas l'ext4 n'est pas encore supporté. L'autre partition sera un swap. Sur la partition principal il faut télécharger la version ArchLinux ARM sur le site officiel. Cette version fait environ 150mb, il faut être patient. Une fois téléchargé, on extract directement sur la clef on poura ensuite supprimer l'archive.

wget http://archlinuxarm.org/os/ArchLinuxARM-armv5te-latest.tar.gz
tar -xzvf ArchLinuxARM-armv5te-*.tar.gz
rm ArchLinuxARM-armv5te-*.tar.gz
sync

L'étape crucial maintenant, branchez la clef sur le dockstar et rebootez le. Si vous êtes toujours connecté un "reboot" fera l'affaire, si non, on débranche l'alim :) Admirez.

Vous êtes sous archlinux ! Le boot est un peu plus long que sur le système d'origine mais c'est normal. Pour info, sur mon dockstar j'utilisais une clef usb 4go de marque inconnu mais qui bootais seulement quand je faisais un reboot depuis SSH, j'ai donc changer pour un disque dur USB , et depuis aucun problème.

Sous ArchLinux le mot de passe par defaut est root. Une fois connecté je vous recommande grandement d'installer opentpd pour pouvoir obtenir la date et l'heure depuis des serveurs de temps, et de le placer en temps que deamon dans le rc.conf sachant que le dockstar n'a pas d'horloge rtc ni de pile CMOS cela vous permetera d'etre toujours a l'heure ! Si tout ce passe bien, lors de l'installation d'opentpd, pacman voudra ce mettre a jours et mettera a jours les headers, vous serez donc sous Linux.3.0.1 ARM !

A partir de la, seul votre imagination et la limite de ce que vous voulez faire avec.Chez moi il me sert de:

  • De serveur domotique (2W de conso, c'est mieu que 350w ! )
  • De serveur multimedia avec MiniDLNA
  • De renderer audio avec gMediaRenderer et gstreamer
  • De serveur de version cvs perso

Sources: