Installer une SD Card recalcitrante

Cet article présente, via un cas pratique d'installation d'une SD Card, ce que le Zaurus attend de ces périphériques de stockage pour les reconnaître. Il sera également l'occasion de jeter un oeil aux différents systèmes de fichiers exploitables sur le Zaurus.

Le matériel

J'utilise un zaurus SL5500 avec la rom de sharp v3.10. et une carte Nokia. Sur la carte on peut lire :

Memory Card
Minitel
8 Mbyte
Nokia
Nokia
Type: DTS-8f
MADE IN USA
BH08
V1 REV.-P
D0002DT
USA

Il s'agit d'une carte récupérée sur un vieux Nokia Communicator qui ne servait plus.

Préambule

N'ayant pas les moyens de m'acheter un carte mémoire dans l'immédiat et ayant toujours besoin d'un peu d'espace sur le zaurus, je me suis dit que j'allais utiliser cette SD Card laissée à l'abandon ;-). L'emplacement compact flash sur le zaurus me servant à d'autres applications (Réseau 802.11b, Bluetooth, Transferts de fichiers sur CF 256Mb, ...), le lecteur de cartes sd est l'emplacement idéal pour ajouter de l'espace.

J'enfiche donc la carte dans le lecteur et, ô déception, ... rien ne se passe ...

Je décide alors de visiter quelques pages sur internet et ne trouve rien (malgré des années d'expériences sur google ;-) ).

Examen

Sur le zaurus, dans le terminal ou via ssh, je tape les commandes suivantes :

# mount /dev/mmcda1 /mnt/card
mount: Mounting /dev/mmcda1 on /mnt/card failed: Invalid argument
# mount /dev/mmcda /mnt/card
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/ram1                   44        44         0 100% /dev
/dev/mtdblock1           28785     14130     13119  52% /home
/dev/mmcda                7810         0      7810   0% /usr/mnt.rom/card
# cat /etc/mtab
/dev/root / cramfs ro 0 0
/proc /proc proc rw 0 0
/dev/ram1 /dev minix rw 0 0
/dev/mtdblock1 /home ext2 rw,sync 0 0
none /dev/pts devpts rw 0 0
/dev/mmcda /usr/mnt.rom/card vfat rw 0 0

On tire plusieurs enseignements de cet ensemble de commandes.

  1. La carte n'est pas partitionnée de la façon attendue par le zaurus (on doit pouvoir monter la première partition du périphérique /dev/mmcda pour que ça fonctionne automatiquement).
  2. La carte est reconnue et utilisable puisqu'on peut la monter. Un lsmod m'apprend que le module utilisé est celui par défaut de sharp sharp_mmcsd_m.
  3. Enfin, on voit dans la liste des périphériques montés que le système de fichier utilisé est vfat.

Mise en conformité

Je décide donc de mettre la carte en conformité avec ce que s'attend à trouver mon zaurus, c'est à dire une carte partitionnée avec un système de fichier valide sur la première partition. Les systèmes de fichiers à ma disposition sont dos, vfat, ext2 et minix. Je choisis ext2, principalement pour pouvoir utiliser des liens symboliques.

Sous linux, quand on pense partition, on pense fdisk. fdisk (comme nombre d'utilitaires indispensables, à l'instar de ssh) n'est pas fourni avec le zaurus. Qu'à celà ne tienne, on le trouve sur le Zaurus Software Index sous forme d'ipk, on le transfère sur le zaurus ou dans son feed préféré et on l'installe en trois clics.

Viennent ensuite les opérations chirurgicales de préparation de la carte (ce que vous avez à taper est en rouge):

# umount /mnt/card
# fdisk /dev/mmcda

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-245, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-245, default 245):
Using default value 245

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
# mkfs.ext2 /dev/mmcda1
mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1960 inodes, 7824 blocks
391 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
1960 inodes per group

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

Enfin !

J'éjecte la carte et la réinsère ... Ca marche ! Vite, on vérifie !

# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/ram1                   44        44         0 100% /dev
/dev/mtdblock1           28785     14130     13119  52% /home
/dev/mmcda1               7574        15      7168   0% /usr/mnt.rom/card

Et sur le zaurus, on trouve le bel icône sd card à droite de la barre des tâches...

Retour sur les systèmes de fichiers

L'avantage principal de la vfat est qu'elle laisse plus de place disponible que l'ext2 et offre le support des noms longs. Vous l'utiliserez donc pour du stockage (répertoires de mp3, archives, documents).

Les systèmes "dos" (msdos et vfat) sont les plus répandus. Votre carte servira donc plus facilement de vecteur de transfert de fichiers entre le zaurus et votre appareil photo, votre palm ou votre pocket pc. En plus, à condition d'utiliser une FAT16, ce sont les seuls systèmes de fichiers que vous pouvez utiliser poue flasher votre Zaurus. Pour rappel mkfs.vfat formatte en FAT16 par défaut, pour formatter en FAT32, il faut taper mkfs.vfat -F 32, man mkfs.vfat pour de plus amples informations.

Le principal avantage de l'ext2 est la prise en charge des liens symboliques. Il est à utiliser si on veut se servir de la carte pour installer des applications supplémentaires. En effet, les installations provoquent presque à coup sûr la création de liens symboliques, non pris en charge par la vfat.

Cartes Compact Flash

La technique est la même (création d'une partition, création d'un système de fichier, utilisation). Le zaurus crée de lui même les répertoires nécessaires une fois la carte reconnue. Vous n'avez qu'à créer le système de fichiers. Pour les CF comme pour les SD, vous avez le choix du type parmi les trois cités plus haut et minix (ce dernier n'est utilisé à ma connaissance que pour la partition /dev, créée en ram. Pour plus d'informations sur la création de la partition /dev sur /dev/ram1 (cocasse ?) voyez la page "the Z boot process [8a]" sur docs.zaurus.com.

Points de montage

Voici un tableau récapitulatif des points de montage de votre zaurus :

PériphériquePoint de montageSystème de fichiers
/dev/root/cramfs
/proc/procproc
/dev/ram1/devminix
/dev/mtdblock1/homeext2
none/dev/ptsdevpts
/dev/mmcda1/mnt/cardA votre goût
/dev/hda1/mnt/cfA votre goût

cramfs (vous avez bien dû vous posez la question, non ?) est un système de fichiers compressé dans lequel on ne peut écrire mais ne nécessitant que très peu de place. Il est donc tout naturellement employé dans les ROM des ordinateurs de poche tel que le zaurus. La meilleure source de documentation sur cramfs est son code source, dans les sources du kernel linux et la documentation succinte trouvable sur votre système dans les fichiers /usr/src/linux/Documentation/filesystems/cramfs.txt et /usr/src/linux/fs/cramfs/README, à condition que vous ayez installé les sources d'un kernel. Enfin, signalons que pour créer un système de fichiers cramfs, on utilise la commande mkcramfs et pour le vérifier cramfsck... Vous savez tout maintenant...

@+

Xavier Garreau - <xavier@xgarreau.org>
http://www.xgarreau.org/

Ingénieur de recherche PRIM'TIME TECHNOLOGY
http://www.prim-time.fr/

Membre fondateur du ROCHELUG
http://www.rochelug.org/

Références :


Précédent Index Suivant

a+

Auteur : Xavier GARREAU
Modifié le 21.09.2004