Mon affaire de système Debian Live est presque parfaite. Hélas, il me reste le problème suivant: quand je connecte ma clef USB à une machine Windows, comme expliqué précémment: Au lieu de monter la deuxième partition et pas la première, Windows monte la première partition et pas la deuxième .
En fait, "by design", lorsqu'on introduit une clef USB, Windows monte seulement la première partition, et aucune autre !
La solution est de mettre la partition DEBIAN_LIVE en second et la partition DOCUMENTS en premier.
Comment faire ?
En fait, lh_build génère à la fois le MBR (512 premiers octets de /dev/hda) et la partition Debian Live (/dev/hda1).
La première solution est de déplacer la partition /dev/hda1 à la fin de la clef USB où elle deviendra /dev/hda2 à l'aide d'un outil opensource approprié tel que GNU Parted ou GParted ou QtParted. Ou à la limite un outil commercial approprié: PartitionMagic
Mais, ce n'est finalement pas si facile que cela:
- GNU Parted ou GParted ou QtParted me disent tous: Error: The file system is bigger than its volume!
- PartitionMagic ne voit même pas les partitions sur la clef USB (!?)
- modifier directement la table de partition avec un éditeur hexadécimal me semble périlleux
- avec fdisk, voir combien de cylindres occupe /dev/sdb1
- créer un /dev/sdb2 type 0x83 comportant le même nombre de cylindres tout à la fin de la clef USB
- sauvegarder la table de partitions et quitter fdisk
- transférer "en raw" toutes les données de la première vers la deuxième partition: time dd if=/dev/sdb1 of=/dev/sdb2
- jeter la première partition
- avec cfdisk recréer comme première partition /dev/sdb1 de type 0x0b (FAT32) qui prend tout l'espace jusqu'au début de /dev/sdb2
- toujours dans cfdisk mettre le flag "bootable" sur /dev/sdb2
- sauver et quitter cfdisk
- créer la partition FAT32 DOCUMENTS sur /dev/sdb1 en faisant: mkfs.vfat -F 32 -n DOCUMENTS /dev/sdb1
Name Flags Part Type FS Type [Label] Size (MB)
----------------------------------------------------------------------
sdb1 Primary W95 FAT32 [DOCUMENTS] 1044,62
sdb2 Boot Primary Linux [DEBIAN_LIVE] 962,36
Voici ce que Windows voit:
Et voilà, désormais, j'arrive à faire les deux:
- Quand je boote sur ma clef USB, j'arrive dans Debian Live
- Quand je connecte ma clef USB à une machine Windows, j'arrive à monter la partition DOCUMENTS
3 commentaires:
Pour être plus exacte Windows monte la partition numéro 1 ce qui n'est forcement la première partition sur la clé USB.
J'ai fait
Device Boot Start End Blocks Id System
/dev/sdb1 402 1105 562496 b W95 FAT32
/dev/sdb2 * 1106 1231 100674 83 Linux
/dev/sdb3 1 401 320390+ b W95 FAT32
mkfs.msdos -n partition3 /dev/sdc3
mkfs.msdos -n partition1 /dev/sdc1
mount /dev/sdc1 /mnt
echo partition1 > /mnt/partition1.txt
umount /mnt
mount /dev/sdc3 /mnt
echo partition3 > /mnt/partition3.txt
umount /mnt
Et Windows a bien monté la partition avec le fichier partition 1. Il semble donc qu'il n'est pas nécessaire de déplacer la partition faite par DebianLive mais juste de changer son numéro. À vérifier.
Ca c'est intéressant.
En effet il est possible que la partition qui s'appelle /dev/sda1 ne soit pas nécessairement celle qui commence au secteur 1.
Je vais essayer ça dès que j'en aurai l'occasion.
Merci en tous cas !
Il n'est pas difficile de changer le numéro de la partition créée par Debian Live:
sudo lh_build
usb=/dev/sdc
dd if=binary.img of=/dev/sdc
sfdisk -d $usb | sed -e '/sdc1/{s/1/2/;h;d;}' -e '/sdc2/{s//sdc1/;G;}' | sfdisk --force $usb
après il suffit de créer une autre partition avec fdisk
sudo fdisk $usb << Eof || true
n
p
1
t
1
b
w
Eof
puis de la formater
mkfs.msdos -n stuart ${usb}1
Quand on insère cette clé dans une machine Windows la partition (vide) stuart est monté. La partition DebianLive reste invisible. C'est ce que nous voulons.
On pourrait demander à debian d'ajouter une option à DebianLive permettant de modifier le numéro de la partition créée afin d'éviter cette manipulation avec sfdisk.
Enregistrer un commentaire