zoukankan      html  css  js  c++  java
  • 关于udev 自动挂载记录

    例子参考博客文章: LINUX下 Udev详解

    首先在新建此文件在/etc/udev/rules.d/目录下新建010.udev.rules,填入以下内容:

      ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mkdir -p /mnt/usb%n"
      ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount -t auto /dev/%k /mnt/usb%n -o rw,noauto,sync,dirsync,noexec,nodev,noatime"
      ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/umount -l /mnt/usb%n"
      ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rmdir /mnt/usb%n"

    %k 代表该设备在内核里的名称,比如:"sda1"

    %n 设备的内核号码,例如:sda1 的内核号码是 1

    # 编辑好此文件,已完成udev规则填写,可能还不能自动挂载,以下是本人遇到的一些情况。

    若自动挂载出问题:

      # 可以进行插拔U盘观察/var/log/syslog文件的输出,可以看到udev的输出,来进行原因分析。

    1、原因一:禁用系统自动挂载,由于我的是ubuntu 20.04 LTS

        解决方法一(参考:禁用 Ubuntu 自动挂载功能

           $ gsettings set org.gnome.desktop.media-handling automount false

        解决方法二

           参考(未经测试):【工具】ubuntu18.04取消自动挂载

    2、原因二:This is a systemd feature. The original udev command has been replaced by systemd-udevd

    解决方法(参考:Udev rule to mount disk does not work):
      # sudo systemctl edit systemd-udevd
      

      [Service]   MountFlags=shared

       # 如果是 Ubuntu 20.04, 把 MountFlags=shared 改为 PrivateMounts=no

    其他:

      获取未挂载分区的文件系统类型方法

      # /bin/lsblk -f | /bin/grep sdc2 | /usr/bin/cut -d' '  -f 2

       把sdc2替换你想查看的分区

      LINUX下 Udev详解这篇博客提到用以下方式挂载 vfat格式的文件系统,PROGRAM执行的命令结果会返回到RESULT, RESULT=="vfat" 进行对比,若RESULT等于vfat,则返回true,继续执行RUM后面的命令。

    ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,sync,dirsync,noexec,nodev,noatime,dmask=000,fmask=111 /dev/%k /media/usbhd-%k", OPTIONS="last_rule"
    可是我的ubuntu没有/lib/udev/vol_id命令, 自己尝试把PROGRAM的值改为PROGRAM=“/bin/lsblk -f | /bin/grep sdc2 | /usr/bin/cut -d' '  -f 2”, 但是还是不起作用,不知道什么原因,若各位大佬知道的话,希望能告诉我
     
  • 相关阅读:
    Codeforces Round #555 (Div. 3) A B C1(很水的题目)
    蓝桥杯国赛之阶乘位数
    POJ-1258 Agri-Net(最小生成树)
    昂贵的聘礼(枚举区间+最短路)
    地斗主(矩阵快速幂)
    救救兔子(二分)
    shell编程之sed编辑器&gawk程序
    typedef struct与struct的区别
    iOS内存管理编程指南
    Object c 基础知识
  • 原文地址:https://www.cnblogs.com/sealin/p/14272748.html
Copyright © 2011-2022 走看看