vendredi 7 mars 2008

Debian Live: script pour monter automatiquement la partition Documents

Comme je vous l'ai expliqué dans plusieurs posts précédents, je m'intéresse à produire un système Debian Live sur clef USB de 2 GB.

Mon système Debian Live prend 800MB, il me reste donc 1200 MB pour mes données. Evidemment, le plus simple est de créer une partition de données appelée "DOCUMENTS" en effectuant:
time mkfs.vfat -F 32 -n DOCUMENTS /dev/sdb2.

Cette partition sera la deuxième sur la clef. J'aurai donc une table des partitions comme ceci:
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1 * 1 93 746991 83 Linux
/dev/sdb2 94 244 1212907+ b W95 FAT32

Avec ceci, quand je connecte ma clef USB à une machine Debian GNU/Linux, Ubuntu ou Mac OS X, ma partition DOCUMENTS est automatiquement montée et je peux y accèder en lecture/écriture. Hélas, trois fois hélas, 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 .

Une solution est de mettre la partition DEBIAN_LIVE en second et la partition DOCUMENTS en premier. Oui mais, dans ce cas, lorsque je boote Debian Live sur ma clef, il faut arriver à monter automatiquement la partition DOCUMENTS, qu'elle soit première ou deuxième. Et ce n'est à priori pas si facile que ça car:
  • je ne connais pas à priori sur quel disque sera monté mon système Debian Live: /dev/sda, /dev/sdb, /dev/sdc, ...
  • même si je connais le disque, par exemple /dev/sdb, je ne sais pas à priori si la partition DOCUMENTS est première càd /dev/sdb1 ou deuxième càd /dev/sdb2: il serait élégant de ne pas produire deux versions du script qui monte la partition DOCUMENTS: une version pour le cas où DOCUMENTS est premier, une autre pour le cas où DOCUMENTS est second...
J'ai finalement produit un script monter-partition-documents.sh qui détecte automatiquement sur quelle partition se trouve DEBIAN_LIVE et sur quelle partition se trouve DOCUMENTS.
#!/bin/bash
#
# Monte la partition des documents (vfat) dans /home/user/Documents
# monter-partition-documents.sh
#
# Pierre Bauduin
# Le 7 mars 2008
#
# Ceci est une clef USB
#
# Une des partitions est le système Debian Live,
# l'autre partition est la partition Documents (formatée en FAT32)
#
# Il est possible que la partition Debian Live soit la première c'est à dire /dev/hdX1 ou /dev/sdX1
# dans ce cas la partition Documents est /dev/hdX2 ou /dev/sdX2
#
# ! Mais, comme Windows ne monte que la première partition qu'il trouve sur une clef USB,
# ! il est possible que sur la clef la partition Debian Live soit la deuxième c'est à dire /dev/hdX2 ou /dev/sdX2
# ! dans ce cas la partition Documents est /dev/hdX1 ou /dev/sdX1
#

# Le point de montage /live/image est-il sur la première partition de ma clef USB ?
if `mount | grep /live/image | awk '{print $1}' | grep -q 1`; then
# Oui
# Donc ma partition Documents est la deuxième et je la monte
PART=`mount | grep /live/image | awk '{print $1}' | sed 's/1/2/'`
[ -z "$PART" ] && exit 1
[ -d "$HOME/Documents" ] || mkdir $HOME/Documents
sudo mount $PART $HOME/Documents \
-t vfat \
-o rw,noexec,nosuid,nodev,noatime,uid=999,gid=6,umask=027,codepage=850
# Le point de montage /live/image est-il sur la deuxième partition de ma clef USB ?
elif `mount | grep /live/image | awk '{print $1}' | grep -q 2`; then
# Oui
# Donc ma partition Documents est la première et je la monte
PART=`mount | grep /live/image | awk '{print $1}' | sed 's/2/1/'`
[ -z "$PART" ] && exit 1
[ -d "$HOME/Documents" ] || mkdir $HOME/Documents
sudo mount $PART $HOME/Documents \
-t vfat \
-o rw,noexec,nosuid,nodev,noatime,uid=999,gid=6,umask=027,codepage=850
fi
Cliquez ici pour télécharger ce script à partir de mon site (faites clic-droit -> Enregistrer sous...)

Aucun commentaire: