不能在
fstab
中放入UUID,因为我必须找到每个设备的UUID。我希望能够插入具有不同文件格式的不同USB设备并自动安装它们。这可能吗?我也曾经一次将它与
usbmount
程序配合使用。在出现错误transport endpoint is not connected
之前,我可以访问驱动器一秒钟。我重新安装了该程序,但是即使出现错误,我也再也没有达到那个程度。#1 楼
经过大量研究,我可以使用usbmount解决问题:将ntfs添加到usbmount
用
sudo apt-get install usbmount
安装usbmount。安装NTFS驱动程序软件包ntfs带有
sudo apt-get install ntfs-3g
的-3g。通过使用
sudo nano /etc/usbmount/usbmount.conf
打开usbmount文件,将usbmount配置为挂载指定的文件系统。 这儿有一行叫做
FILESYSTEMS=""
。仅通过usbmount挂载了该行中指定的文件系统,因此我们将其更改为: ntfs-3g软件包有时会将NTFS设备列为fusblk,因此这两个是相同的。我真的不知道为什么。此外,如果您未在配置中添加fuseblk,则拔出的NTFS设备不会自动卸载。它们将保持挂载状态,并保留安装到的文件夹,直到使用
FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"
->手动卸载设备为止,其中sda1可能是另一个变量。在这里,您可以指定应挂载的文件系统以及应如何挂载它们。 )和fuseblk(再次为NTFS)已安装。我认为大多数参数可以保持不变。再次在这里只需添加ntfs-3g(添加ntfs-3g而不是ntfs)和fuseblk即可挂载所有NTFS文件。要获取更多文件系统,请添加更多以
unmount /dev/sda1
开头的行。几秒钟。此修复程序来自Christian Weinberger。使用
FS_MOUNTOPTIONS=""
在/etc/udev/rules.d/中创建文件usbmount.rules。这是内容:
KERNEL=="sd*", DRIVERS=="sbp2", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*", ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove"
用
FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=007,gid=46
-fstype=fuseblk,nls=utf8,umask=007,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=007"
在/ etc / systemd / system /中创建文件usbmount @ .service。这是内容:
[Unit]
BindTo=%i.device
After=%i.device
[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes
现在重新启动,并使用
-fstype=
检查USB设备安装到的文件夹。默认情况下,它们被安装到/ media / usbstick0。来源:
#2 楼
Untermoser的答案是正确的,但是它将破坏一些usbmount功能。因为他使用Systemd单元生成要挂载的进程(以启用NTFS),所以不再将环境变量
$DEVPATH
发送到usbmount add
命令,导致符号链接创建失败。要解决此问题,请运行以下命令:
sed -i '/# Determine vendor/,/if/ s/\(.*vendor=\)/if [ -z "$DEVPATH" ]; then DEVPATH="$(udevadm info --query=path --name=\/$DEVNAME)"; fi\n/g' /usr/share/usbmount/usbmount
上面的命令会重新创建
$DEVPATH
不可用。关于
usbmount remove
,usbmount中还有另一个错误。它遍历挂载点,并且在usmount config中定义的挂载被卸载。但是,如果找到匹配项但不在该列表中,请删除中断并不执行任何操作。如果您为一个USB创建多个安装点,这尤其重要,因为usbmount会看到第一个并且不执行任何操作。要修复,需要进行以下更改:
sed -i '/umount.d ||/,/break/ s/break.*//; /umount.d ||/,/done/ s/:/:\n\t\tbreak 2/' /usr/share/usbmount/usbmount
这会将中断移动到内部循环内(保证成功,并中断2步)。
#3 楼
对于那些试图在更新的Stretch(Lite)上使用相同功能并发现Untermoser和AlbiusX的答案没有卸载vfat驱动器的用户,除了提供的答案外,您还需要按照以下额外步骤进行操作:在终端中运行以下命令:
sudo mkdir -p /etc/systemd/system/systemd-udevd.service.d/
这将创建所需的所需文件夹。接下来,在此处创建一个conf文件,例如:
sudo nano /etc/systemd/system/systemd-udevd.service.d/shared-mount-ns.conf
在此文件中添加以下行:
[Service]
MountFlags=shared
这将更改systemd-udevd的专用文件系统名称空间的默认行为,以使用共享的名称空间,这等效于jessie中udev的行为。 / questions / 330094 / udev-rule-to-mount-disk-does-not-work / 330156#330156)
评论
所以这一直都是问题-我一直在寻找过时的文档。我在Pi上运行Linux raspberrypi 4.14.79-v7 +,以供参考
– ctietze
19年5月31日在7:47
评论
此解决方案还需要几个步骤,请参阅我的答案。
– AbiusX
17年11月1日在19:08
@ f-untermoser:您能在这里看看我有关usbmount的问题吗:superuser.com/questions/1603086/…?
– wewa
20-11-18在13:58