取り外したUSBストレージデバイスがまだマウントされている

取り外したUSBストレージデバイスがまだマウントされている

私はbusyboxに基づいて組み込みLinuxシステムを開発しています。場合によっては、投稿から物理的に取り外されたUSBデバイスがmountdfまたはに表示され続けることがあります/proc/mounts。デバイスを再接続すると、デバイスが/dev/sdb1マウントされている間に検出されます。/dev/sda1

削除されたデバイスでファイルハンドルを開くと、この問題が発生する可能性があることを理解してください。しかし、この動作を引き起こす可能性がある他の条件はありますか?

ベストアンサー1

次の udev ルールを作成できます。

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

これにより、リンク解除イベントがトリガーされ、このスクリプトからファイルシステムがマウント解除されます。

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

/var/daemon.log でログを表示できます。

編集する:正確にudevが特定の名前空間を使用していることを忘れてください。したがって、マウントポイントをユーザースペースと共有するように構成する必要があります。

これを行うには、systemd-udevd.serviceシステムでファイルを見つけてコピーし、/etc/systemd/system/systemd-udevd.service内容を次に置き換えます。MountFlags=shared

おすすめ記事