如何挂载/卸载开机自动挂载的SD卡?

如何挂载/卸载开机自动挂载的SD卡?

我们有一台设备(实际上是两台)运行 Debian 8.4,大部分由供应商预先配置。有一个 SD 卡插槽(如果有)会在启动时自动安装。

问题是:我手动卸载卡以进行 fsck 后,如何再次安装它?我可以再次手动安装它,但由于它是在启动时自动安装的,在我看来应该有一种方法可以使系统再次以相同的方式安装它。我可以简单地重新启动系统,但这似乎不是最佳解决方案。

因为systemctl | grep mmc包括这个:

media-sd\x2dmmcblk0p1.mount          loaded active mounted   /media/sd-mmcblk0p1

在我看来,是 systemd 在启动时安装了该卡。但之后umount该条目就消失了。 Systemd 对我来说仍然是一个谜,因此这些知识对我没有多大帮助。

编辑:我忘了说:/etc/fstab 中没有关于 SD 卡的任何内容

编辑:启动后,systemctl status 'media-sd\x2dmmcblk0p1.mount'说:

? media-sd\x2dmmcblk0p1.mount - /media/sd-mmcblk0p1
   Loaded: loaded (/proc/self/mountinfo)
   Active: active (mounted) since Fri 2016-04-15 11:47:52 UTC; 3h 2min ago
    Where: /media/sd-mmcblk0p1
     What: /dev/mmcblk0p1

之后umount,它说:

? media-sd\x2dmmcblk0p1.mount
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

systemctl cat 'media-sd\x2dmmcblk0p1.mount'在这两种情况下什么也没说。

答案1

我想我找到了。

与我最初的想法相反,SD 卡是在启动时由 udev 挂载的,而不是由 systemd 挂载的。事实证明有一条规则/etc/udev/rules.d/11-media-by-label-auto-mount.rules包含:

KERNEL!="mmcblk[0-9]p[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}="sd-%k"
# Global mount options
ACTION=="add", ENV{mount_options}="relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"
# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
# Exit
LABEL="media_by_label_auto_mount_end"

所以我可以用类似的方法安装SD卡:

sudo udevadm trigger -c add -y "mmcblk*"

对于简单的事情来说仍然有点神秘(我认为),但它确实有效。

相关内容