跳转到内容

USB 存储设备

来自 Arch Linux 中文维基

本文介绍了如何在 Linux 下使用流行的 USB 闪存盘。不过,它也适用于其他设备,如数码相机,这些设备就像 USB 存储设备一样。

如果你的系统是最新的 Arch 内核,并使用现代桌面环境,你的设备就会直接显示在桌面上,无需打开控制台。

使用 udisks 自动安装[编辑 | 编辑源代码]

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

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

手动挂载[编辑 | 编辑源代码]

注意:在确定 Arch Linux 无法挂载 USB 设备之前,请务必检查所有可用端口。有些端口可能不共享同一个控制器,从而导致无法挂载设备。

获取支持 usb_storage 的内核[编辑 | 编辑源代码]

如果不使用定制的内核,就可以使用,因为所有 Arch Linux 内核都已正确配置。如果使用定制内核,请确保其编译了 SCSI-Support、SCSI-Disk-Support 和 usb_storage。如果使用最新的 udev,只需插入设备,系统就会自动加载所有必要的内核模块。

识别设备[编辑 | 编辑源代码]

访问存储设备首先需要内核分配的标识符。详见文件系统#查看现有文件系统

新插入的设备通常会显示在 Journal 中。

挂载 USB 存储器[编辑 | 编辑源代码]

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

如果 mount 无法识别设备的文件系统,可以尝试使用 -t 参数,详情请参见 mount(8) 。如果挂载失败,可以尝试重新创建文件系统,甚至重新分区磁盘

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

允许普通用户写入[编辑 | 编辑源代码]

如果想让非 root 用户写入 U 盘,可以发出以下命令:

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

如果不起作用,请确保文件系统可以以根用户身份挂载和写入,详见上一节。

使用 fstab 以作为普通用户操作[编辑 | 编辑源代码]

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

挂载工具[编辑 | 编辑源代码]

多个挂载工具便于以普通用户身份挂载。

问题解决[编辑 | 编辑源代码]

未检测到 USB 存储设备[编辑 | 编辑源代码]

如果您已连接 USB 存储设备,但它未被 lsblk 列出,而是出现在 journal 中,但未被分配块设备,请参阅常规故障排除#内核升级后部分外设无法使用

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

卸载所有分区后设备未关闭[编辑 | 编辑源代码]

这篇文章的某些内容需要扩充。

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

如果不关闭设备电源,可能会导致:

  • 硬盘驱动器没有停放磁头,在旋转时发出微弱的刮擦声并降低设备性能 [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 规则,其中包括一条出于各种原因忽略某些特定设备的规则。某些硬件设备,如数码相机、便携式录音机等,可能会以某种方式格式化 usb 存储,从而触发忽略规则。你可以使用以下命令检查是否应用了这些规则,然后在默认设置中找到相应的条件:

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

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