我需要一张 SD 卡,只要插入插槽即可无人值守地安装。这很正常,但问题是它没有安装,我不知道为什么。
在/etc/fstab
:
#Entry for /dev/mmcblk0p1 :
UUID=_____ /mnt/SD-root ext3 defaults,nofail,umask=0027,utf8,comment=x-gvfs-show,x-gvfs-name=SD-root 0 2
编辑-1: 我也尝试/mnt/
用/media/myname/
上面的内容替换,并包括选项user,uid=1000
(就是我)或users
,但都无济于事。
挂载点为/mnt/SD-root
或/media/myname/SD-root
。挂载点所有权设置为“root:adm”。
$ ls -Al /mnt/ | grep -e 'SD-root'
1 drwxr-x--- 3 root adm 1024 Sep 25 16:51 SD-root/
目前,非 root 用户挂载 SD 卡的唯一方法是:
$ sudo mount /dev/mmcblk0p1 /mnt/SD-root/
我错过了什么?
答案1
要在运行的系统中自动安装卡,/mnt
可以使用附加udev
规则。如果没有此规则,卡将安装在/media/$USER/…
和/dev/disk/…
。
以下脚本和 udev 规则创建一个文件夹/mnt
并挂载具有已定义 UUID 的分区。在当前版本中,挂载点是挂载分区的标签。我个人认为,这是一个坏主意。我更喜欢 UUID 而不是标签,但 OP 想要这个解决方案。
剧本
在中创建脚本
/usr/local/bin
sudo nano /usr/local/bin/mount_by
添加以下代码
#!/bin/sh export mount_point="/mnt/$1" existing_device=$(awk '$2 == ENVIRON["mount_point"] {print $1; exit}' < /proc/mounts) if [ -n "$existing_device" ]; then exit 1 fi mkdir -p "$mount_point" sleep 1 # Perhaps not necessary, but in the test with the OP it was necessary mount "/dev/disk/by-uuid/$2" "$mount_point" exit 0
使脚本可执行
sudo chmod +x /usr/local/bin/mount_by
udev 规则
创建新规则
sudo nano /etc/udev/rules.d/99-myrules.rules
添加以下代码
ENV{ID_FS_UUID}=="c8bf306d-3d5d-4878-8045-e4087494eff0", RUN+="/usr/local/bin/mount_by'%E{ID_PART_ENTRY_NAME}''%E{ID_FS_UUID}'"
或者如果你的驱动器没有
ID_PART_ENTRY_NAME
,请尝试ID_FS_LABEL
假设分区是
/dev/sdc1
替换为ENV{ID_FS_UUID}==
上面的输出为udevadm 信息/dev/sdc1| awk -F='/ID_FS_UUID=/{打印$2}'
重启 udev
sudo service udev restart
插入 SD 卡后你会看到类似这样的内容
% ls -la /mnt total 12 drwxr-xr-x 3 root root 4096 Okt 6 19:29 . drwxr-xr-x 25 root root 4096 Sep 29 17:04 .. drwxr-xr-x 4 root root 4096 Okt 6 19:31 Label1
答案2
我安装了全新的 Ubuntu 14.04 来测试这一点。SD 卡格式化为 EXT3。已自动安装。
这里输出的mount
是不同的设置
使用默认设置,没有 fstab 条目:
/dev/mmcblk0p1 on /media/sneetsher/test0 type ext3 (rw,nosuid,nodev,uhelper=udisks2)
使用 fstab:
/dev/mmcblk0p1 /media/test0 ext3 nodev,noexec,comment=x-gvfs-show 0 0
安装为:
/dev/mmcblk0p1 on /media/test0 type ext3 (rw,noexec,nodev)
使用 fstab:
/dev/mmcblk0p1 /media/test0 ext3 defaults,nofail,umask=0027,utf8,comment=x-gvfs-show,x-gvfs-name=SD-root 0 2
发现 dmesg 错误:
[ 3339.729139] EXT4-fs (mmcblk0p1): Unrecognized mount option "umask=0027" or missing value
删除后发现:
[ 3410.950108] EXT4-fs (mmcblk0p1): Unrecognized mount option "utf8" or missing value
删除后发现:
[ 3490.129696] EXT4-fs (mmcblk0p1): Unrecognized mount option "x-gvfs-name=SD-root" or missing value
变成:
/dev/mmcblk0p1 /media/test0 ext3 defaults,nofail,comment=x-gvfs-show,comment=x-gvfs-name=SD-root 0 2
安装为:
/dev/mmcblk0p1 on /media/test0 type ext3 (rw,_netdev)
x-gvfs-name
就像在 nautilus 中显示的那样有效SD-root
。
我是否遗漏了您的设置中的某些内容?
答案3
只需取得文件夹 /media/test0 的所有权。
chown 用户.user /media/test0