为什么我的 USB 驱动器在启动时未安装

为什么我的 USB 驱动器在启动时未安装

我的 Raspberry Pi 上运行着 Arch Linux。我在 fstab 文件中添加了以下行:

/dev/sda1    /mnt/MyBook    ntfs    defaults    0    0

一段时间内,这个功能运行正常,设备在启动时自动安装。我安装了 transmission-cli 并正在下载一些东西,这时 Pi 似乎死机了。我将其关闭并再次打开,发现驱动器没有安装。如果我运行,驱动器sudo mount -a将再次正常安装,但为什么它在启动时不再这样做了?

答案1

一种可能的解释是“默认”选项已更改为对 ntfs 分区使用“noauto”。(是否有适用于 ntfs 的 tunefs?)

另一个(更可能的)解释与启动顺序和启动时间有关:USB 堆栈的模块可能在尝试 fstab 启动时挂载后加载;或者 USB 设备对内核的响应不够快,因此启动在准备好之前就继续进行。

此链接讨论中没有解决方案,但请参阅:https://bbs.archlinux.org/viewtopic.php?id=79676- 将安装移动到 rc.local 可能会有所帮助。(以及在 rc.local 中指定延迟。)考虑到 RasPi 不是池塘里最快的船,我倾向于认为这是一个时间问题。

答案2

系统启动时 USB 磁盘尚未准备好挂载,因此您无法使用 fstab 挂载它。

尝试在重启后使用 cron 等来执行此操作。效果很好。我的 USB 磁盘有一个标签“usbhdd”,因此请检查磁盘的标签,然后按照grep我的示例更改名称。

首先在/usr/local/bin中编写一个脚本(文件名:mountusbhdd):

echo mounting usb disk:
while ! df | grep usbhdd; do
   echo "10 sec break..."; sleep 10
   sudo mount -t ntfs-3g -o uid=pi,gid=pi,umask=000 /dev/sda1 /media/usbhdd
done
echo "usbhdd mounted."

添加“x”权限:

sudo chmod +x /usr/local/bin/mountusbhdd

并将此脚本添加到您的 crontab:

crontab -e

添加行:

@reboot /usr/local/bin/mountusbhdd>/tmp/usbhdd.log

就这样,重启后你可以检查 /tmp/usbhdd.log 看看你的磁盘需要多长时间才能挂载。我的磁盘需要 10 秒的延迟。

答案3

您还可以尝试在 fstab 中将默认值更改为“auto, defaults”:

/dev/sda1    /mnt/MyBook    ntfs    auto,defaults    0    0

相关内容