samedi 4 avril 2009

Debian Live sur une clef USB: la solution définitive pour les partitions

Dans un post précédent (enfin il y a plus d'un an) je vous expliquais un "dilemme":

Lorsqu'on introduit une clef USB qui contient plusieurs partitions, Windows monte seulement la première partition, et aucune autre !

Ceci est embêtant car sur ma clef USB Debian Live j'ai en fait deux partitions
  • une partition DEBIAN_LIVE qui contient le système Debian Live bootable
  • une partition DOCUMENTS formatée en FAT32 qui contient divers fichiers utiles
La partition DOCUMENTS occupe en fait l'espace libre après la partition DEBIAN_LIVE.

La solution que j'avais trouvée il y a un an fonctionnait, mais n'était pas très élégante. Je devais utiliser dd ou parted pour déplacer la partition DEBIAN_LIVE à la fin de la clef USB. Ensuite je recréais la partition DOCUMENTS comme première partition de la clef USB.

Comme me l'a suggéré Stuart (merci beaucoup !) dans un commentaire sur mon blog, il y a une solution beaucoup plus élégante. On se base sur le fait que la première partition de la table des partitions n'est pas obligatoirement la première partition sur la clef USB. La partition que Windows va monter est celle qui est la première dans la table des partitions, mais elle peut être n'importe où sur la clef USB.

Voici en pratique comment faire:

** Je m'occupe de ma clef USB: /dev/sdc
[root@cobra] /home/pbn/debian-live>fdisk /dev/sdc
** Je regarde les partitions
Command (m for help): p
Disk /dev/sdc: 2004 MB, 2004876800 bytes
255 heads, 63 sectors/track, 243 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00075233
Device Boot Start End Blocks Id System
/dev/sdc1 * 1 134 1076323+ 83 Linux
** Je vois qu'il y a une partition, c'est DEBIAN_LIVE, qui commence au cylindre 1 et s'arrête au cylindre 134
** Je jette la partition 1
Command (m for help): d
Selected partition 1
** Je crée une nouvelle partition 2
** Cette partition va du cylindre 1 à 134 inclus
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1-243, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-134, default 134):
Using default value 134
** Je marque la partition 2 comme bootable
Command (m for help): a
Partition number (1-4): 2
** Je crée une nouvelle partition 1
** Cette partition va du cylindre 135 à la fin
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-243, default 1): 135
Last cylinder or +size or +sizeM or +sizeK (135-243, default 243):
Using default value 243
** Cette partition est de type 0x0b (FAT32)
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 0b
Changed system type of partition 1 to b (W95 FAT32)
** Je regarde le résultat
Command (m for help): p
Disk /dev/sdc: 2004 MB, 2004876800 bytes
255 heads, 63 sectors/track, 243 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00075233
Device Boot Start End Blocks Id System
/dev/sdc1 135 243 875542+ b W95 FAT32
/dev/sdc2 * 1 134 1076323+ 83 Linux
Partition table entries are not in disk order
* J'écris la table des partitions
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
* Ca y est on a fini !

C'est beaucoup plus élégant, et ça va beaucoup plus vite !
Merci encore à Stuart...

Aucun commentaire: