Monter automatiquement les partitions d'un disque USB

J’ai un disque dur USB, j’ai inscrit les partitions dans fstab pour qu’elles soient montées automatiquement au boot. Le problème est que quand le HD n’est pas présent au boot les rep /dev/xxx sont recherchés et une erreur m’oblige à faire Ctrl+D pour terminer le boot.

Le disque est monté automatiquement par KDE avec les options du fstab quand je le branche une fois le system démarrer. Je ne peu pas me passer des options de montages, donc supprimer les partions du fstab n’est pas une solution.

La méthode évoquée ici: viewtopic.php?f=8&t=3253
ne me convient pas car mon disque a plusieurs partitions, et les options de mount sont ici définie pour toutes les partitions du media de la même facon.

J’ai aussi pensé à un scripte qui se lance au démarrage avec des mount [options] pour chaque partitions, mais qui ne bloquerait pas le boot si le HD n’est pas présent. Ca n’est pas possible non plus car le disque n’étant plus présent dans fstab, si il est branché une fois le system démarrer, KDE monte toutes les partitions en “defaults”

Si vous avez des idées… je traîne le problème depuis longtemps, je n’avais jamais pris le temps de le résoudre. Je croyais que ca allait etre simple, ca s’avère bien plus compliqué… pour un détail, mais un détail somme toute gênant.

Je pense qu’en définissant les règles udev avec un petit script qui monte et démonte tes partitions à la mise sous tension devrait résoudre le problème.

J’avais un peu regardé de ce coté, mais comment faire ca sans avoir les partitions renseignées ds fstab ? car sinon cela me fera le même probleme au boot.

Tu définis tes partitions dans fstab avec un label en montage noauto.
Ensuite, tu écris les règles udev qui détectent la mise sous tension et l’arrêt du périphérique, et tu leur associes un petit script pour monter/démonter tes partitions.

Je ne vois aucune raison pour que cela ne fonctionne pas.

Tu peux regarder le paquet http://boisson.homeip.net/debian/pool/etch/all/plugusb_1.0-4_all.deb
Tu as dedans des règles lançant un script que tu peux adapter:

En gros, /etc/udev/rules.d/z99_clef.rules

[quote]ACTION==“add”, ENV{SUBSYSTEM}==“block”, ENV{ID_TYPE}==“floppy” , PROGRAM="/lib/udev/usb_fstab.sh %k"
ACTION==“add”, ENV{SUBSYSTEM}==“block”, ENV{ID_FS_TYPE}!="" , PROGRAM="/lib/udev/usb_fstab.sh %k"
ACTION==“remove”, ENV{SUBSYSTEM}==“block”, ENV{ID_TYPE}==“floppy” , PROGRAM="/lib/udev/usb_fstab.sh %k"
ACTION==“remove”, ENV{SUBSYSTEM}==“block”, ENV{ID_FS_TYPE}!="" , PROGRAM="/lib/udev/usb_fstab.sh %k"
[/quote]
qui appelle usb_fstab.sh lorsqu’on met une clef ou un disque USB (y compris au démarrage)
et le fichier usb_fstab.sh actuel (pas commenté mais bon)

[code]#!/bin/sh
while [ -f /tmp/__plugusb ] ; do /bin/true ; done
touch /tmp/__plugusb
date >> /tmp/dev_usb
echo $ACTION >> /tmp/dev_usb
echo $1 $ID_FS_TYPE $ID_TYPE >> /tmp/dev_usb
echo $ID_SERIAL >> /tmp/dev_usb
echo “----------”>> /tmp/dev_usb

if [ “$ACTION” = “add” ] ; then
NOM=$1_$ID_SERIAL
DEVICE=/dev/$1
if [ “$ID_FS_TYPE” = “” ] ; then
ID_FS_TYPE=auto
fi
while [ -f /tmp/__insertusb ] ; do /bin/true ; done
touch /tmp/__insertusb
mkdir -p /media/$1
echo “#$NOM” >> /etc/fstab
if grep -q $DEVICE /etc/fstab > /dev/null ; then
echo -n “#” >> /etc/fstab
fi
echo $DEVICE /media/$1 $ID_FS_TYPE user,defaults 0 0 >> /etc/fstab
rm /tmp/_insertusb
fi
if [ “$ACTION” = “remove” ] ; then
NOM=$1
$ID_SERIAL
DEVICE=/dev/$1
while [ -f /tmp/fstab ] ; do /bin/true ; done
touch /tmp/fstab
umount -f /media/$1
rmdir /media/$1
echo “sed -e '/^#”$NOM"/{N;d}’ /etc/fstab > /tmp/fstab"> /tmp/edite.$1
cp /etc/fstab /tmp/fstab.$1
sh /tmp/edite.$1
mv /tmp/fstab /etc/fstab
if [ ls -l /etc/fstab | awk '{print $5}' = “0” ] ; then
cp /etc/fstab.org /etc/fstab
fi
fi
rm /tmp/__plugusb
[/code]