Previous Contents Next

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).


Previous Contents Next