3 Architecture système de l'eeePC
3.1 Le système d'exploitation
Remplacez le système d'origine par une distribution Debian classique.
Installez la distribution Linux Debian sur le système embarqué en
utilisant une clef USB de la distribution "testing" et le réseau.
Il est fortement conseillé de jetter un oeil à l'URL :
http://wiki.debian.org/DebianEeePC/HowTo/Install.
Lisez bien tout le sujet avant de partitionner le "disque" de l'eeePC.
Pour l'installation utilisez le miroir Debian de l'école
(sur le serveur ftp.eudil.fr). Lors de la sélection des
paquetages par tasksel réclamez les configurations "ordinateur
de bureau", "portable", "serveur DNS" et "serveur web". Comme mot
de passe administrateur, imposez glopglop et comme utilisateur
annexe pifou avec le mot de passe pasglop.
La machine devra être configuré, à terme, sur votre sous-réseau routé.
Cela dit vous pouvez l'installer à partir du VLAN INSECURE de votre
ordinateur fixe (dans ce cas utilisez la plage 172.26.79.0/24
qui n'est pas distribuée par le serveur DHCP). Il est important d'enlever
la clef USB avant l'installation de chargeur secondaire GRUB, sinon
il s'installe sur la clef et pas sur le disque de l'eeePC.
3.2 Immunisation contre la renumérotation de disques
Le disque interne de l'eeePC a tendance à changer de nom suivant
la configuration (à l'installation, quand un autre périphérique
USB est branché, etc). Pour éviter des erreurs au démarrage du
système, il vous est demandé de remplacer toutes les références
aux fichiers spéciaux de type /dev/sd* par des références
aux identifiants de disques de type UUID=xxx. Cela concerne
le fichier de configuration du chargeur GRUB /boot/grub/menu.lst,
le fichier de configuration des montages /etc/fstab et les fichiers
du système de suspension /etc/uswsusp.conf et
/etc/initramfs-tools/conf.d/resume. Après ces modifications,
il faut reconstruire le système de fichiers initial en mémoire par la
commande update-initramfs -u -k all.
3.3 Prise en compte des périphériques
Vous devrez utiliser une autre webcam que la webcam intégrée
de l'eeePC. La caméra USB fournie n'est gérée qu'à partir de la
version 2.6.31 du noyau Linux. Faites en sorte d'installer ce noyau
sur votre eeePC. Si aucun paquetage n'est disponible pour cette
version de noyau, opérez comme suit. Téléchargez les sources
du noyau sur ftp.eudil.fr à partir du répertoire
/pub/linux/kernel/v2.6. Ensuite décompressez ces sources
dans /usr/src. Mettre un lien symbolique entre le répertoire
obtenu et linux ne peut pas faire de mal. Récupérez le fichier
de configuration Debian le plus récent (regardez dans /boot).
Créez les paquetages Debian en utilisant la commande
make-kpkg --initrd kernel_image. Installez les nouveaux
paquetages. Enfin vérifiez bien que tous les périphériques de
l'eeePC fonctionnent sous ce nouveau noyau (sinon recompilez
les pilotes nécessaires).
3.4 Le système de fichiers
Utilisez le système de gestion de volumes logiques LVM pour créer un
espace web d'une dizaine de Go. Il suffit d'utiliser une partie du
disque de l'eeePC et une carte SD. Pour que le montage se fasse
automatiquement au démarrage du système, pensez à modifier le fichier
/etc/fstab.
3.5 Le démon de contrôle
Un des buts de la maquette est de contrôler une base motorisée servant
de support à une webcam. Il vous faudra écrire un serveur permettant
le contrôle de la base par l'envoi de paquets UDP. Il faudra aussi écrire
un script pour que ce serveur soit lancé au démarrage du système dans
le niveau d'exécution 2. Une partie délicate de l'écriture du serveur
est le contrôle de la base via des commandes USB. Vous allez dans un
premier temps installer le logiciel de contrôle du lance-missiles sous
windows. Vous utiliserez ce logiciel en ayant pris soin de lancer un
renifleur USB (comme usbsnoop). Vous explorerez les traces de
l'activité USB pour en déduire les commandes permettant de gérer la
base motorisée. Vous pourrez ensuite utiliser la bibliothèque libusb
sous Linux pour reproduire les commandes. Pour trouver les périphériques
USB disponibles utilisez les fonctions usb_find_busses() et
usb_find_devices() ainsi que la variable globale usb_busses.
Pour préparer le périphérique utilisez la fonction usb_detach_kernel_driver_np
afin de détacher le périphérique du pilote système, la fonction usb_set_configuration
pour sélectionner une configuration du périphérique et la fonction
usb_claim_interface pour réserver une interface de communication
avec le système. Alors vous pouvez envoyer des commandes à la base motorisée
par la fonction usb_interrupt_write. Votre serveur UDP doit savoir
interpréter des datagramme UDP simples comprenant une lettre (comme U
pour haut, D pour bas, etc).