Entferntes USB-Speichergerät ist noch eingebunden

Entferntes USB-Speichergerät ist noch eingebunden

Ich arbeite an einem eingebetteten Linux-System, das auf Busybox basiert. Manchmal wird ein USB-Gerät, das physisch vom Post entfernt wurde, immer noch in mountoder dfangezeigt /proc/mounts. Wenn ich das Gerät erneut anschließe, wird es beispielsweise erkannt, /dev/sdb1während das /dev/sda1Gerät noch gemountet ist.

Ich weiß, dass geöffnete Dateihandles auf entfernten Geräten dies verursachen können, aber gibt es noch andere Bedingungen, die dieses Verhalten auslösen können?

Antwort1

Sie könnten eine udev-Regel wie folgt schreiben:

ACTION=="remove", KERNEL=="sd[b-z][0-9]", SUBSYSTEM=="block", RUN+="umount-removed.sh"

Dadurch wird das Unplug-Ereignis ausgelöst und anschließend das Dateisystem über dieses Skript ausgehängt.

MNT_POINT=`df | grep "$DEVNAME" | awk '{print $6}'`

#If still mounted
if [ ! -z "$MNT_POINT" ];then
    logger -i -t usbrm -p daemon.notice "The device $DEVNAME is still mounted"
    #Umount fs
    umount $DEVNAME

    if [ $? -eq 0 ];then
        logger -i -t usbrm -p daemon.notice "$DEVNAME successfully unmounted from $MNT_POINT"
    else
        logger -i -t usbrm -p daemon.err "Impossible to umount $DEVNAME from $MNT_POINT. Aborting..."
    fi
fi

Sie können das Protokoll in /var/daemon.log sehen.

Bearbeiten :Ich habe vergessen, klarzustellen, dass Udev einen bestimmten Namensraum verwendet, Sie müssen es also so konfigurieren, dass der Einhängepunkt mit dem Benutzerraum geteilt wird.

Suchen Sie dazu die Datei systemd-udevd.serviceauf Ihrem System, duplizieren Sie sie /etc/systemd/system/systemd-udevd.serviceund ersetzen Sie den Inhalt durchMountFlags=shared

verwandte Informationen