USB 存储设备

来自 ArchWiki

本文档描述了如何在 Linux 中使用流行的 USB 存储棒。然而,它也适用于其他设备,例如充当 USB 存储设备的数码相机。

如果您拥有使用标准 Arch 内核和现代桌面环境的最新系统,您的设备应该会直接在桌面上显示,而无需打开控制台。

使用 udisks 自动挂载

这是最简单且最常用的方法。许多桌面环境都在使用它,但也可以单独使用。

有关详细信息,包括挂载助手列表,请参阅Udisks

手动挂载

注意:在您断定 Arch Linux 未挂载您的 USB 设备之前,请务必检查所有可用的端口。某些端口可能不共享同一个控制器,从而阻止您挂载设备。

获取支持 usb_storage 的内核

如果您不使用自定义内核,那么您已准备就绪,因为所有 Arch Linux 官方内核都已正确配置。如果您确实使用自定义内核,请确保它已编译了 SCSI 支持、SCSI 磁盘支持和 usb_storage。如果您使用最新的udev,您只需插入设备,系统就会自动加载所有必要的内核模块。

识别设备

访问存储设备需要做的第一件事是获取内核分配的标识符。有关详细信息,请参阅文件系统#识别现有文件系统

新插入的设备通常显示在日志中。

挂载 USB 存储器

请参阅文件系统#挂载文件系统

如果 mount 无法识别设备的文件系统,您可以尝试使用 -t 参数,有关详细信息,请参阅 mount(8)。如果挂载不起作用,您可以尝试重新创建文件系统,甚至重新分区磁盘

注意: 有关使用 sudo 的挂载/卸载脚本示例,请参阅 [1]

允许普通用户写入

如果您希望非 root 用户能够写入 USB 存储棒,您可以发出以下命令

# mount -o gid=users,fmask=113,dmask=002 /dev/sda1 /mnt/usbstick

如果它不起作用,请确保文件系统是可挂载的,并且可以 root 用户身份写入,有关详细信息,请参阅上一节。

以普通用户通过 fstab

如果您希望普通用户执行挂载/卸载操作,请参阅FAT#以普通用户身份写入 FAT32

挂载工具

多种挂载工具方便普通用户进行挂载。

故障排除

未检测到 USB 存储设备

如果您已连接 USB 存储设备,但 lsblk 未列出它,但在日志中出现,但未分配块设备,请参阅通用故障排除#内核升级后无法使用某些外围设备

另请确保您的 BIOS 启用了 XHCI Handoff 和 EHCI Handoff,但这通常对于大多数现代设备来说不是问题。

卸载所有分区后设备未关闭

本文或章节需要扩充。

原因:请建议如何在卸载后自动关闭设备(在Talk:USB storage devices中讨论)

未能关闭设备电源可能会导致

  • 硬盘驱动器不归位磁头,在停止转动时发出轻微的刮擦声并降低设备性能 [2],或
  • 固态硬盘(尤其是较旧的)不刷新其缓存缓冲区或更新其映射表,并丢失数据 [3]

当您卸载分区时,设备仍然通电。您应该先请求系统关闭它,以便安全地移除它:[4]

# echo 1 > /sys/block/disk_name/device/delete

如果您使用 udisks,您可以使用以下命令:[5]

$ udisksctl unmount -b /dev/sdXY
$ udisksctl power-off -b /dev/sdX

设备已检测到但未注册为可挂载

udev 附带一个默认的规则集,位于 /usr/lib/udev/rules.d/ 中,其中包括一个用于忽略某些特定设备的原因。某些硬件设备(例如数码相机、便携式录音机等)可能会以导致触发忽略规则的方式格式化 USB 存储。您可以使用以下命令检查是否应用了其中一项规则,然后在默认值中查找相应的条件

$ udevadm info --attribute-walk --name=device_name | grep UDISKS_IGNORE

如果是这种情况并且您的设备将此属性设置为“1”,您可以按照 udev 页面使用自定义规则覆盖它。