Interactivité domotique avec un plugcomputer

April 24th, 2011

Pour minimiser la consommation d’un système domotique, et avoir un minimum d’intelligence et d’interactivité avec le système, je me suis orienté tout d’abord sur l’achat d’un pogoplug. Mais une mauvaise manip m’a contraint à le mettre de coté pour le moment.

Dans la suite, j’ai trouvé le Dockstar, qui est très suivi par la geekerie : http://forum.hardware.fr/hfr/OSAlternatifs/Hardware-2/seagate-dockstar-computer-sujet_71314_1.htm

L’intéret de cette machine, détournée de son utilisation originale  est que c’est en fait un plug computer, basé sur le Sheevaplug (http://fr.wikipedia.org/wiki/SheevaPlug).
Caractéristiques du dockstar:
- Processeur ARM Marvell Kirkwood 1,2 GHz
- 128Mo de RAM
- 256Mo de mémoire Flash NAND, dont ~32Mo occupés par le système / firmware / booloader
- 3 ports USB
- 1 port mini-USB (le port du haut du dock est en fait un mini-USB mâle standard)
- 1 port Ethernet Gigabit
- Consommation annoncée: maximum 8W, selon le fonctionnement (et en incluant la consommation d’un HDD 2.5″)
- 8,6 x 8,5 x 3,8, cm (long. x larg. x prof.) / Poids : 0,50 kg

Inconvénients:
- Pas de calcul CPU en virgule flottantes
- Pas d’horloge temps réél (http://fr.wikipedia.org/wiki/Horloge_temps_réel)

voici la procédure pour le rendre 100% flexible rapportée par velo_love :

1/ Débrancher le routeur

2/ Brancher le Dockstar

3/ http://192.168.1.1/
regarder la partie “DHCP client” : donne l’adresse IP du Dockstar

rajouter un bail permanent sur le routeur (menu Services -> Services)
00:10:75:1A:87:D9  idefix  192.168.1.13

4/ Connection au Dockstar
ssh root@192.168.1.123
-> password stxadmin

5/ Suppression du service de mise à jour et reboot automatique :
5.1/ vérification de la présence du service :
# ps | grep hbwd
5.2/ suppression du service :
# killall hbwd
5.3/ correction droits d’accès (bug) :
# ls -al /dev/null
crw-r–r–    1 root     root       1,   3 Feb 26  2008 /dev/null
# chmod go+w /dev/null
5.4/ remonter la partition en read/write
# mount / -rw -o remount
5.5/ créer le fichier /etc/init.d/dockstar-reboot.sh
#!/bin/sh

# attente de 1,30 minute avant de faire quoi que ce soit
sleep 90

# cherche si une connexion ssh est etablie
AA=`netstat -n -t -a | grep “:22″ | grep “ESTABLISHED”`

# effectue le choix reboot ou non
if [ -n "$AA" ]; then
echo “Ma Dockstar reste en mode Pogoplug”;
else
echo “Rebooting”
/sbin/reboot
fi
5.6/ rendre le script exécutable
# chmod +x /etc/init.d/dockstar-reboot.sh
5.7/ éditer le fichier des services lancés au démarrage
# vi /etc/init.d/rcS
5.7.1/ supprimer le service de mise à jour
-> commenter la ligne /etc/init.d/hbmgr.sh start
5.7.2/ appeler le script de reboot automatique (juste après la ligne
ci-dessus)
# automatic rebooting after 1min30 without ssh connection
/etc/init.d/dockstar-reboot.sh
5.8/ remonter la partition en read only
# mount -o remount,ro /
5.9/ reboot
# /sbin/reboot

6/ Formattage de la clé USB (Kingston 4Go)
6.1/ Brancher la clé (connecteur USB arrière droit)
# /sbin/fdisk -l | grep Disk
Disk /dev/sda: 4002 MB, 4002910208 bytes
6.2/ Formater la clé
# /sbin/fdisk /dev/sda
- pour effacer les partitions existantes :
commande : D
numéro de la partition
- création de la partition numéro 1 (partition primaire de 3,23 Go) :
commande : n
partition primaire ou étendue
numéro de la partition : 1
premier cylindre : (défaut)
dernier cylindre : 421
- création de la  partition numéro 2 (partition primaire de la taille restante,
environ 500 Mo) :
commande : n
partition primaire ou étendue
numéro de la partition : 2
premier cylindre : (défaut)
dernier cylindre : (défaut)
- changement du type de la 2ème partition :
commande : t
numéro de la partition : 2
code : 82 (la liste s’obtient avec la commande t avant ou en tapant L ici)
- rend la première partition bootable :
commande : a
numéro de la partition : 1
- sauvegarder :
commande : w

7/ Installation la version Debian Squeeze
# cd /tmp
# wget http://jeff.doozan.com/debian/dockstar.debian-squeeze.sh
# chmod +x dockstar.debian-squeeze.sh
# export PATH=$PATH:/usr/sbin:/sbin
# ./dockstar.debian-squeeze.sh

(nouveau mot de passe : root)

8/ Adaptation
8.1/ Nouveau mot de passe root (idem autres ordinateurs)
# passwd
8.2/ Etat
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                 3328448    266816   2892552   9% /
none                     60492        32     60460   1% /dev
/dev/sda1              3328448    266816   2892552   9% /
tmpfs                    62864         0     62864   0% /lib/init/rw
tmpfs                    62864         0     62864   0% /dev/shm
tmpfs                    62864         0     62864   0% /tmp
# cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/root      /               ext2    noatime,errors=remount-ro 0 1
/dev/sda2      none            swap    sw                0       0
tmpfs          /tmp            tmpfs   defaults          0       0
# uname -a
Linux debian 2.6.32-5-kirkwood #1 Wed Jan 12 15:27:07 UTC 2011 armv5tel GNU/Linux
8.3/ mise à jour du système et installation des outils de développement
# apt-get install dialog
# apt-get install make
# apt-get install gcc
# apt-get install g++
# apt-get install rsync
# apt-get install usbutils
# apt-get install less
# apt-get install bash-builtins
# apt-get install git
# apt-get install cron

# apt-get install ntpdate

8.4/ définition du hostname et paramétres réseau
# echo idefix > /etc/hostname
# cat > /etc/network/interfaces << EOF
auto lo
iface lo inet loopback

# the primary network interface
auto eth0
iface eth0 inet dhcp

EOF
# cat >> /etc/hosts <<EOF
192.168.1.10    abraracourcix
192.168.1.11    asterix
192.168.1.12    panoramix
EOF

8.5/ installation du noyau 2.6.32 avec support de la LED
# wget http://jeff.doozan.com/debian/linux-image-2.6.32-dockstar_1.1_armel.deb
# cd /boot
# cp uImage uImage-2.6.32-5-kirkwood
# cp uInitrd uInitrd-2.6.32-5-kirkwood
# cd /root
# dpkg -i linux-image-2.6.32-dockstar_1.1_armel.deb
# cd /boot
# /usr/bin/mkimage -A arm -O linux -T kernel  -C none -a 0×00008000 -e 0×00008000 -n Linux-2.6.32-5 -d /boot/vmlinuz-2.6.32-dockstar /boot/uImage
# /usr/bin/mkimage -A arm -O linux -T ramdisk -C gzip -a 0×00000000 -e 0×00000000 -n initramfs -d /boot/initrd.img-2.6.32-dockstar /boot/uInitrd
# vi /etc/rc.local
gestion de la LED :
vert clignotant pendant la séquence de boot
orange après que le kernel ait été chargé
vert fixe quand le système est ok
ajouter avant la commande ‘exit 0′
echo none > /sys/class/leds/dockstar\:orange\:health/trigger
echo default-on > /sys/class/leds/dockstar\:green\:health/trigger
# vi /etc/init.d/halt
extinction de la LED
ajouter après les 2 lignes suivantes la 3ème :
log_action_msg “Will now halt”
halt -d -f $netdown $poweroff $hddown
echo none > /sys/class/leds/dockstar\:green\:health/trigger
# reboot
# uname -a
Linux debian 2.6.32-dockstar #2 Mon Sep 6 15:43:50 EDT 2010 armv5tel GNU/Linux
8.6/ définition de la date et de l’heure
# dpkg-reconfigure tzdata
# apt-get install ntp
# ntpq -p
8.7/ redémarrage
# reboot

9/ Utilisation de netconsole pour observer la sortir de Uboot
9.1/ paramètres sur le Dockstar
# fw_setenv serverip 192.168.1.12
-> adresse IP du Guruplug
# fw_setenv ipaddr 192.168.1.13
-> adresse IP du Dockstar
# 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’
9.2/ lancement du programme sur le Guruplug
# nc -l -u -p 6666
ou
# nc -l -u -p 6666 &
# nc -u 192.168.1.13 6666
(ne pas oublier de faire un kill du premier process)

10/ Création d’un utilisateur
10.1/ création du group ‘users’ (inutile, existe déjà)
# groupadd -g 100 users
10.2/ création de l’utilisateur
# useradd -c “XXXXXX” -g 100 -u 1000 -m xxxxxxx -s /bin/bash
10.3/ autorisation de l’accès au port série
# usermod -G dialout xxxxxx
10.4/ initialisation du mode de passe
# passwd xxxxxx
10.5/ autres utilisateurs
# useradd -c “YYYYYYYYY” -g 100 -u 1001 -m yyyyyy -s /bin/bash
# passwd yyyyyy

11/ Récupération de la clé ssh
# mkdir .ssh
# cd .ssh
# scp xxxxxx@abraracourcix:/home/xxxxxxx/.ssh/id_dsa.pub id_dsa.pub
# cat id_dsa.pub > authorized_keys

12/ Installation du disque dur externe USB
12.1/ partitionnement du disque
# fdisk -l | grep Disk | grep -v ident
Disk /dev/sda: 4002 MB, 4002910208 bytes
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
# fdisk /dev/sdb
- création de la  partition (partition primaire de la totalité du disque)
commande : n
partition primaire ou étendue
numéro de la partition : 1
premier cylindre : (défaut)
dernier cylindre : (défaut)
- changement du type de la partition :
commande : t
numéro de la partition : 1
code : 83 (la liste s’obtient avec la commande t avant ou en tapant L ici)
- sauvegarder :
commande : w
12.2/ formatage du disque
# mkfs.ext4 /dev/sdb1
# reboot
12.3/ montage du disque au boot
# blkid /dev/sdb1
/dev/sdb1: UUID=”4d48e3c0-71b1-4298-8be1-03da9f238ae8″ TYPE=”ext4″
# ls /dev/disk/by-id
usb-Kingston_DataTraveler_G3_001CC0EC31EDF0C067E6138D-0:0
usb-Kingston_DataTraveler_G3_001CC0EC31EDF0C067E6138D-0:0-part1
usb-Kingston_DataTraveler_G3_001CC0EC31EDF0C067E6138D-0:0-part2
usb-SAMSUNG_HM500JI_317F49B07023-0:0
usb-SAMSUNG_HM500JI_317F49B07023-0:0-part1
# cd /
# mkdir data
# vi /etc/fstab
ajouter la ligne
/dev/disk/by-id/usb-SAMSUNG_HM500JI_317F49B07023-0:0-part1        /data   ext4
acl,user_xattr       1 2
# reboot

13/ appli perso

14/ appli perso

15/ Sauvegarde du système
15.1/ Arrêt du système
15.2/ Branchement de la clé sur abraracourcix (/media/disk)
15.3/ sauver le système
# cd /media/disk
# find . -print -depth | cpio -ov | bzip2 /root/archive.cpio.bz2
15.4/ rebrancher la clé sur idefix puis relancer le système

16/ Génération d’une clé SSH pour le compte root
16.1/ Connexion à panoramix (pour créer le répertoire .ssh sur cette machine)
16.2/ Génération de la clé (sur le Dockstar)
# ssh-keygen -t dsa
16.3/ Transfert de la clé sur panoramix
# scp .ssh/id_dsa.pub panoramix:/root/.ssh/.
16.4/ Mise en place de la clé sur panoramix
# ssh panoramix
# cd .ssh
# cat id_dsa.pub >> authorized_keys

17/ Mise en place du backup automatique
17.1/ Création du script (cf /home/xxxxxxxxxxx/Documents/domotique/scripts)
17.2/ Copie du script root_backup.sh sur le Dockstar dans /root/scripts
17.3/ Création du crontab sous root :
30 3 * * * /root/scripts/root_backup.sh > /dev/null

Misc :
réparation :
# mount /dev/sda1 /mnt
# /mnt/usr/bin/mkimage -A arm -O linux -T kernel  -C none -a 0×00008000 -e 0×00008000 -n Linux-2.6.32-dockstar -d /mnt/boot/vmlinuz-2.6.32-dockstar /mnt/boot/uImage
# /mnt/usr/bin/mkimage -A arm -O linux -T ramdisk -C gzip -a 0×00000000 -e 0×00000000 -n initramfs -d /mnt/boot/initrd.img-2.6.32-dockstar /mnt/boot/uInitrd

Références

http://jeff.doozan.com/debian/

http://blog.crifo.org/post/2010/10/02/Seagate-DockStar-deballage-et-installation-de-debian

http://wiki.daviddarts.com/Debian_on_the_Seagate_Dockstar

http://www.rudiswiki.de/wiki/DockStarDebian

http://forum.doozan.com/read.php?2,582,page=1

Ce très bon boulot est suivi par l’installation de la suite eibd+linknx+knxweb deja évoquée sur un post précédent : http://loftawattrelos.free.fr/?p=369

A terme, il faudra passer par 1 gninx et non apache.

Comments are closed.
  • Twitter
  • Facebook