UDEV REGOLA MOUNT DISCO USB

11 risposte [Ultimo contenuto]
Ritratto di dolcemascolo.fra@gmail.com
Offline
Junior
Iscritto: 26/10/2017
Messaggi: 8

Buon Giorno ho iniziato a usare linux da poco ed ho il seguente problema ?

su debian 8 ho scritto questa regola UDEV automount.rules:

====================================================================================================
ENV{ID_FS_UUID}=="9798dd4d-7cb0-415e-821e-244ebd84cbc5",ENV{dir}="/USB/BACKUP-01" GOTO="start"
GOTO="end"
LABEL="start"
ENV{dir}="/USB/BACKUP-01"
ACTION=="add",KERNEL=="sd?1", RUN+="/bin/mkdir -p /%E{dir}", RUN+="/bin/mount /dev/%k %E{dir}"
ACTION=="remove", KERNEL=="sd?1*", RUN+="/bin/umount /dev/%k"

LABEL="end"
====================================================================================================

La stessa su debian 9 non funziona solo il mount ma la cartella la crea.

Ringrazio in anticipo mi possa aiutare.

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Se dai il seguente comando da solo, funziona?

/bin/mount /dev/... /USB/BACKUP-01
(ovviamente al posto di ... metti il nome corretto della partizione, tipo sdb1)

Ritratto di dolcemascolo.fra@gmail.com
Offline
Junior
Iscritto: 26/10/2017
Messaggi: 8

Ciao grazie per la risposta

si da solo il comando funziona perfettamente non riesco a capire.

Con la regola funziona tutti i comandi anche il lancio di usco script ma solo il Mount non funziona nella regola o nello script,

Sono riuscito ad intercettare il codice di ritorno = 32.

ho fatto diverse ricerche non ho trovato nulla al riguardo.

lo fa solo con Debian 9.

Grazie per la risposta.

Ps. il Disco è formattato EXT4

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Inizialmente ho pensato che forse mount è un po' pistino sul formato del file system e ti avrei suggerito di aggiungere "-t ext4". Ma allora perché funziona se lanciato da solo?

Potrebbe avere a che fare con il fatto che systemd (il vero programma che impersona udev) esegue i suoi sotto-processi in userspace diversi? Ad esempio, succede qualcosa se in /usr/lib/systemd/system/systemd-udevd.service modifichi l'opzione

MountFlags=slave
in
MountFlags=shared
e poi riavvii?

Ritratto di dolcemascolo.fra@gmail.com
Offline
Junior
Iscritto: 26/10/2017
Messaggi: 8

Ciao scusami ma il file non esiste dove mi hai descritto tu allora l' ho cercato :

find -iname systemd-udevd.service

./lib/systemd/system/systemd-udevd.service

./lib/systemd/system/sysinit.target.wants/systemd-udevd.service
./sys/fs/cgroup/pids/system.slice/systemd-udevd.service
./sys/fs/cgroup/devices/system.slice/systemd-udevd.service
./sys/fs/cgroup/systemd/system.slice/systemd-udevd.service
./var/lib/lxcfs/cgroup/pids/system.slice/systemd-udevd.service
./var/lib/lxcfs/cgroup/devices/system.slice/systemd-udevd.service
./var/lib/lxcfs/cgroup/name=systemd/system.slice/systemd-udevd.service

ho modifica questo ./lib/systemd/system/systemd-udevd.service e mi funzione. Va bene secondo te o ho sbagliato ?

grazie cmq mi hai risolto un problemone . Gentilissimo.

Scusatemi ripetizione non so come cancellarlo

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

In teoria sulle ultime versioni di Debian l'intera gerarchia /lib dovrebbe essere solo un link a /usr/lib, quindi il file che hai editato tu è in effetti lo stesso che dicevo io.

Nota però che quel file è proprietà privata del pacchetto che lo ha installato e, se lo modifichi, sarà sovrascritto al prossimo aggiornamento. Per rendere la modifica permanente, conviene copiare quel file in /etc, che, oltre ad avere la precedenza su /lib, non viene toccato dal sistema di gestione dei pacchetti.

mkdir -p /etc/systemd/system
cp /lib/systemd/system/systemd-udevd.service /etc/systemd/system/
Va bene anche se il primo comando dice directory già esistente.

Ritratto di dolcemascolo.fra@gmail.com
Offline
Junior
Iscritto: 26/10/2017
Messaggi: 8

Grazie Mille per l'ulteriore spiegazione e chiarimento

Ritratto di dolcemascolo.fra@gmail.com
Offline
Junior
Iscritto: 26/10/2017
Messaggi: 8

ciao scusami mi è rimasto un piccolo problema quando riavvio debian mi accade che se digito

lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
....
sdc 8:32 0 465.8G 0 disk
└─sdc1 8:33 0 465.8G 0 part /USB/BACKUP-01

l' unita mi risulta montata ma non lo è perche se faccio

df non c'è

udev 6125912 0 6125912 0% /dev
....
tmpfs 1048576 0 1048576 0% /USB

mio fstab

tmpfs /USB tmpfs nodev,nosuid,noexec,nodiratime,size=1024M 0 0

se stacco l'unita e la riattacco invece funziona
df

/dev/sdd1 480589544 289219488 166934396 64% /USB/BACKUP-01
tmpfs 1048576 0 1048576 0% /USB

percaso potresti farmi capire cosa succede.

grazie per l'aiuto comunque

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Immagino sia un problema di tempistica: quando udev esegue la regola per montare il disco, non è ancora stato montato /USB. Sincronizzare questi due meccanismi non è semplice. Potresti elencare il tuo disco in fstab:

... /USB/BACKUP-01 ext4 nofail,noexec,nodev,noatime 0 0
Al posto di ... metti qualcosa che identifichi il tuo disco, idealmente UUID=9798dd4d-7cb0-415e-821e-244ebd84cbc5. L'opzione nofail è indispensabile per non far fallire il boot se riavvii senza il disco inserito.

Nota che ho indicato qualche altra opzione sensata in questo contesto. Per essere sicuro che le opzioni siano sempre le stesse, sia all'avvio, sia quando a montare i disco è udev, è meglio cambiare la regola di udev omettendo uno dei due: o il punto di mount o il device. Così facendo obblighi mount ad andare a leggere i dettagli in fstab. Esempio:

ENV{ID_FS_UUID}=="9798dd4d-7cb0-415e-821e-244ebd84cbc5", GOTO="start"
GOTO="end"
LABEL="start"
ENV{dir}="/USB/BACKUP-01"
ACTION=="add",KERNEL=="sd?1", RUN+="/bin/mkdir -p /%E{dir}", RUN+="/bin/mount %E{dir}"
ACTION=="remove", KERNEL=="sd?1*", RUN+="/bin/umount %E{dir}"
LABEL="end"

Ritratto di dolcemascolo.fra@gmail.com
Offline
Junior
Iscritto: 26/10/2017
Messaggi: 8

grazie per le delucidazioni :

Diciamo che la logica di questo script nasce dall'esigenza di fare il backup di macchine virtuali su disco USB.

Ho creato una cartella temporanea /USB di 1G circa perché se il disco non è montato il backup mi avvisa con email di errore per mancanza di spazio.

Ti spiego tutto questo perché intuisco che sei molto preparato e quello che vorrei fare e cambiare il disco una volta a settimana ma con lo stesso mount

/USB/BACKUP-01. Pensi sia possibile farlo in fstab ? Hai qualche idea da suggerirmi ?

Grazie cmq per le spiegazioni esaustive...

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Posso consigliarti di sperimentare un po' con UUID=... e LABEL=... e guarda anche in /dev/disk dove i device file sono organizzati per UUID, ID, ecc.