Installer Windows XPe sur une Compacte Flash

Mettre un ordinateur dans un robot n'est pas chose facile, il faut faire en sorte que le système soit léger, compact, peu gourmand, résistant aux chocs, secousses et aux parasites EM. Le disque dur étant la pièce la plus vulnérable d'un ordinateur domestique, il faut donc trouver une solution pour le remplacer. Cet article explique donc comment utiliser une compact flash avec Windows XP embedded.

Un mot sur le matériel

Depuis deux ans, notre robot possède une carte mère de PC Via Epia M10000, il s'agit d'un modèle commercial grand public, qui offre donc l'avantage d'être vendu à un prix très raisonnable. Le rapport prix/puissance n'a rien à voir avec un modèle industriel.

Caractéristique détaillé de la carte mère Epia M10000:

 Carte mère Epia M10000

  • Processeur : C3 (x86) à 1Ghz
  • 512 Mo de RAM DDR400
  • Ethernet / Firewire / USB 2.0 / IDE / Audio
  • Port PCI / clavier/souris / VGA
  • Format mini-itx (17 x 17 cm)

+Lecteur Compact Flash IDE, muni d'une CF de 512 Mo.

Cette carte mère nous sert en particulier à acquérir et analyser les images de notre caméra FireWire Unibrain.

Utiliser un PC classique à l'énorme avantage de nous permettre de programmer et tester sur un PC classique aussi, sans avoir à faire de compilation croisée ni de simulation/émulation. Tout les membres du club peuvent donc potentiellement développé sur leur PC personnel.

L'OS : Windows XPe

En 2006, le système d'exploitation embarqué sur notre robot est la version allégée du système que l'on trouve sur un majorité de PC actuellement, Windows XP. Windows XPe ('e' pour embedded) est un OS embarqué simple et assez facilement configurable pour quelqu'un connaissant déjà bien Windows.

Les différences entre XP et XPe

L'installation d'un système XPe nécessite au préalable la configuration et la compilation d'une image XPe. En clair XPe est un système configurable, que l'on spécialise généralement pour une application et/ou pour une machine cible particulière. On n'installe donc que les pilotes et composants nécessaires à son fonctionnement. Cela permet d'une part de gagner énormément sur la place occupé par le système en mémoire sur le disque dur et dans la ram. Une image quasi complète de Windows XPe peut peser environ 300 Mo contre près de 2 Go pour un Windows XP standard, on peut de cette façon, si l'on souhaite un système minimum créer une image bootable d'une dizaine de Mo. Le temps de boot est par la même occasion énormément raccourci.

 La carte Epia M10000 montée sur notre robot 2006, Noémie.

La technique de l'EWF

En général, Windows effectue un grand nombre d'accès cours au disque dur principal de la machine, notamment pour tenir a jour des logs du système et pour le système de swap de l'OS. Or, une Compact Flash possède un nombre de cycles d' écriture limité (environ un million), il faut donc éviter de l'utiliser comme un disque dur classique sinon sa durée de vie sera énormément réduite.

Il est néanmoins envisageable d'utiliser une CF comme média de boot sous XPE sans risquer de l'endommager en utilisant la technique de l'EWF (Enhanced Write Filter), pour plus d'info : MSDN.

Le principe de l'EWF est de bufferiser tout les accès au disque pour les faire par paquet en une seule fois.

La technique de l'EWF n'est en pratique pas toujours réalisable, dans notre cas la CF était reconnu comme un périphérique amovible par Windows, et il est impossible de booter sur un périphérique amovible (Hotplug).

Nous n'avons donc pas pu mettre en oeuvre cette technique de boot. L'autre solution est alors d'utiliser un RamDisk…

La technique du RamDisk

Il s'agit d'un disque dur virtuel entièrement stocké dans la RAM du PC. Le bootloader charge l'image du disque dur dans la mémoire au démarrage. Cette méthode à plusieurs avantages :

La Compact Flash n'est plus sollicitée une fois la phase de boot terminée, il y a moins de risque que le système plante en pleine exécution à cause d'un problème matériel (CF débranchée ou grillée) En cas de plantage, ou d'arrêt brutal du système, l'image présente sur la CF a peu de chance d'être corrompue, de même il est difficile de modifier l'image par inadvertance, puisqu'elle reste figée (comme un CD-ROM). Enfin les accès au RamDisk sont nettement plus rapide que des accès à un disque standard. Par contre cette technique possède quelques inconvénients :

Le temps de boot est plus long puisque le bootloader doit copier l'intégralité de l'image du RamDisk dans la RAM, pour ensuite effectuer un boot standard. Le système n'est pas très souple, puisqu'il faut un certain temps pour modifier la configuration de XPe, l'ajout d'un driver à la volée reste possible, mais il faudra le réinstaller à chaque démarrage.

 Système XPE de 200 Mo, le disque C étant le ramdisk, le disque D la CF.

Construction de l'OS

Installer « Microsoft Windows Embedded Studio », le programme est assez lourd et va installer une base de donnée sur votre système répertoriant tout les composants (packages) utilisables avec XPe.

Sous Embedded Studio, l'image XPe se construit en ajoutant des composants un par un. Le programme est capable d'analyser les dépendances de chaque package et de les ajouter automatiquement à votre image.

Pour faciliter le début de la construction, on peut utiliser un outil : le Target Analyser (utilities/ta.exe), c'est un programme à exécuter sur la machine cible (déjà munie d'un Windows) et qui va analyser les drivers nécessaire au fonctionnement du système. Le résultat de l'analyse peut ensuite être importé dans Embedded Studio. Une autre technique est de s'adresser directement au fabriquant qui fournit parfois les fichiers nécessaires (VIA par exemple).

Il ne faut pas oublier d'ajouter le driver RamDisk à l'image, sinon elle ne pourra pas fonctionner après le boot.

Ensuite il faut générer l'image la copier sur un disque dur et booter sur le disque dur pour exécuter le First Boot Agent (FBA)…

La partition sur laquelle vous placez les fichiers générés de XPe doit avoir approximativement la même taille que l'image que vous comptez obtenir, en effet cette partition sera recopié telle quelle (espace libre compris) dans un fichier qui fera donc la même taille que la partition en question.

Création de l'image SDI

Une fois que l'image semble correcte, on peut la figer une fois pour toute en utilisant l'utilitaire SDI manager (utilities/SDIMgr.wsf). C'est un script qui va permettre de convertir une partition entière en une ISO au format .SDI. On l'utilise en lançant la commande suivante :

CScript SDIMgr.wsf

Pour afficher l'aide on tape donc :

CScript SDIMgr.wsf /?

En supposant que la partition contenant XPe soit le lecteur F:, cela donne :

CScript SDIMgr.wsf imageXPe.sdi /new
CScript SDIMgr.wsf imageXPe.sdi /readpart:F:

A ce moment vous obtenez un fichier imageXPe.sdi, qui n'est autre que l'image de la partition contenant votre Windows XPe, c'est ce fichier qui sera chargé en RAM par le bootloader.

Après avoir formater la CF en utilisant de préférence un programme comme le “HP Drive Key Boot Utility”.

Vous pouvez copier le fichier .sdi sur la CF, il faut y ajouter les fichiers suivant :

ntldr NTDETECT.COM boot.ini

Configuration du Bootloader

Vous devez éditer boot.ini, le fichier de configuration du bootloader, de manière à ce qu'il ressemble plus ou moins à ca (attention à la distinction entre / et \ !):

timeout=10 default=ramdisk(0)\WINDOWS [operating systems] ramdisk(0)\WINDOWS=“Win XPe” /rdpath=multi(0)disk(0)rdisk(0)partition(1)\imageXPE.sdi /rdimageoffset=4096

Astuces diverses

C'est souvent une bonne idée de rajouter le support du bureau à distance ou un serveur VNC, notamment si la machine cible ne doit pas avoir un écran et un clavier fixe. Elle pourra de cette façon être facilement contrôlée à distance depuis n'importe quel PC sur le même réseau.

La compact flash prendra probablement sous Windows la lettre D:, cela peut donc être judicieux de configurer l'image XPe pour qu'elle lance un script ou un programme présent à la racine du lecteur D:. Il sera plus facile de faire des modifications de configuration, ou de lancer des programmes automatiquement au démarrage du système, sans avoir à recréer une image XPe.

References

Documentation sur la MSDN : [1] Compact Flash et Enhanced Write Filter : [2] HP Drive Key Boot Utility : [3] Fichier de configuration pour XPe pour les VIA Epia : [4]

Article écrit par ROUVIERE Julien

21 septembre 2006