seymourui 2017-11-01 03:00 采纳率: 0%
浏览 3976

通过/udev/rules.d 实现自动挂载和热插拔的问题

我用树莓派(debian)做了一个NAS,需要开机自动挂载u盘(如果有)。
按照网上的教程,我先是修改/etc/fstab文件,这样是实现了自动挂载,但我发现,一旦这个u盘没插,系统就不能启动,我认为是fstab文件中的挂载是启动的必要条件,如果挂载失败,将导致系统不能启动。不知道这样理解对不对,或者这不应该发生?
后来为了解决这个问题,并且实现热插拔,我开始修改/dev/rules.d中的rules文件,我根据网上的教程做(代码在下面),却屡试屡败。
有一些教程说要在rules文件里调用脚本(.sh),通过这个脚本挂载,但我在udev的教程里看到大多说直接通过rules文件中的指令就可以实现挂载。
求帮助

 KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end"  
# Import FS infos  
IMPORT{program}="/sbin/blkid -o udev -p %N"  
# Get a label if present, otherwise specify one  
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"  
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usb-%k"  
# Global mount options  
ACTION=="add", ENV{mount_options}="relatime"  
# Filesystem-specific mount options  
# 如果是vfat 或者ntfs 系统,则设置mount_options 的选项如下  
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=000"  
# Mount the device  
#  如果文件系统不是ntfs ,意味着是vfat  
# 同时挂载到/media/sd[b-z][0-9] 的形式  
ACTION=="add",ENV{ID_FS_TYPE}!="ntfs", RUN+="/bin/mkdir -p /mnt/usb-%k", RUN+="/bin/mount -o $env{mount_options},rw /dev/%k /mnt/usb-%k"  
#ntfs  
#  如果文件系统是ntfs ,以ntfs-3g 的形式挂载,实现可读写  
# 同时挂载到/media/sd[b-z][0-9] 的形式  
ACTION=="add",ENV{ID_FS_TYPE}=="ntfs", RUN+="/bin/mkdir -p /mnt/usb-%k", RUN+="/bin/mount -t ntfs-3g -o $env{mount_options},rw /dev/%k /mnt/usb-%k"  
# Clean up after removal  
#  
ACTION=="remove", ENV{dir_name}!="",  RUN+="/bin/umount -l /mnt/usb-%k",  RUN+="/bin/rmdir /mnt/usb-%k" ,  RUN+="/bin/rm /mnt/usb-%k"   

# Exit  
LABEL="media_by_label_auto_mount_end"  
  • 写回答

1条回答 默认 最新

  • 雨煮夕阳 2023-02-14 09:59
    关注

    可以修改配置跳过开机自检,修改文件/etc/fstab
    若将/etc/fstab中pass选项的值改为0,就关闭了该盘的开机自检,启动速度会有很大提高。
    /etc/fstab内容详解
    /etc/fstab内容主要包括六列:(通过空格或 Tab 分隔)
    第一列:设备名或者设备卷标名
    第二列:设备挂载目录(/、home、sys等)
    第三列:设备文件系统(ext4、ntfs、iso9660、swap 及 auto等)
    第四列:挂载参数(auto、exec、ro、rw、user、users、owner、sync、async、dev、suid、noatime、relatime、flush、defaults等等)
    第五列:指明是否要备份,(0为不备份,1为要备份,一般根分区要备份)
    第六列:指明自检顺序。 (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)。因此要使ubuntu不开机自检,只需将该列的值修改为0即可。

    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题