Règle UDEV lorsque le lecteur flash USB est débranché

J'ai écrit une règle pour monter automatiquement ma key USB dans un certain dossier mais quand je le détwig, le dossier est toujours monté et quand je suis là je vois beaucoup d'erreurs comme: Le Directory bread (block: NNNN) failed

J'ai essayé d'utiliser

 SUBSYSTEM=="block", ACTION=="remove", RUN+="/bin/umount /media/disk" 

ça ne fonctionne pas.

Ma règle de assembly ressemble

 SUBSYSTEM=="block", ACTION=="add", RUN+="/bin/mount -t vfat <options> /dev/%k /media/disk" 

J'ai vu cette méthode imparfaite autour des canvass et sa scope est trop générique, comme mentionné précédemment. Ce n'est pas assez dynamic, et si plusieurs périphériques USB étaient branchés? Ce problème est commun et les solutions sont autour. Vous n'avez pas mentionné votre dissortingbution, donc je ne peux pas vous dire quels scripts sont disponibles. Je vais les mentionner de toute façon, car ils vous montreront une meilleure méthode, vous pouvez toujours emprunter les sections applicables.

Tout d'abord, vous devriez vraiment envisager de regarder les udisks , Si vous utilisez un DE complet Vous pourriez seulement avoir besoin de lui seul. Pour un WM seulement … Un grand projet qui remplace le HAL déconseillé, et utilise udisks est appelé udisks-glue .

Si vous décidez encore de ne pas udisks , udisks un coup d'œil aux scripts udev appelés uam . Gentoo a un ebuild, sinon vérifiez le code source sur GitHub Bitbucket .

Il vaut la peine de mentionner, Arch a également un tas de grands exemples USB uDev automount dans leur Wiki

Chacune de ces options serait un moyen léger de le faire, et sont complets dans la mise en œuvre, spécifique dans la scope et testé pour les effets secondaires.

Ici, nous avons deux problèmes.

Le premier est que vos règles udev ne sont pas suffisamment précises. Oui, ils peuvent lancer des actions sur le branchage / détwigment d'un lecteur flash USB, mais ils peuvent également être déclenchés lorsque vos disques durs sont reconnus au démarrage.

Le deuxième problème peut avoir des conséquences plus graves: vous devez toujours démonter vos lecteurs avant de les détwigr . Sinon, le lecteur et votre système peuvent en souffrir. J'ai personnellement vu des gens détruire leurs lecteurs flash de cette façon.

Vous cherchez l'action "precog" .

Comme l'a dit rozcietrzewiacz, c'est une mauvaise idée de sortir votre disque pendant qu'il est encore monté. Par définition, le système ne sait pas que le lecteur est retiré jusqu'à ce qu'il ait déjà été supprimé. Par conséquent, il ne peut pas démonter automatiquement les dossiers avant de le détwigr. Ergo, vous devez indiquer au système que vous envisagez de retirer le lecteur en le démontant d'une manière ou d'une autre (manuellement ou en option).

C'est un domaine dans lequel le kernel Linux est toujours cassé. Il n'a pas la possibilité de démonter un système de files s'il est utilisé. Si un process quelconque a toujours un file ouvert sur ce disque, il ne peut pas être démonté.