FreeBSD 使用手册
上一页 | 第19章 　存储 | 下一页

# 19.5 USB 存储设备

Contributed by Marc Fonvieille.

到目前为止，有许多外部外部存储解决方案， 例如：通用串行总线 (USB)：硬盘、USB thumbdrives、CD-R burners 等等。 FreeBSD 为这些设备提供了支持。

## 19.5.1 配置

USB 大容量存储设备驱动，在 umass(4), 中提供了对 USB 存储设备的支持。如果您使用 `GENERIC` 内核，您不必要改变配置文件里的任何内容。 如果您使用了定制的内核，就要确定下面的行出现在您的内核配置文件里：

    device scbus
    device da
    device pass
    device uhci
    device ohci
    device ehci
    device usb
    device umass

umass(4) 驱动程序使用 SCSI 子系统来访问 USB 存储设备， 您的 USB 设备将被系统看成为一个 SCSI 设备。依靠您主板上的 USB 芯片， 您只须选择 `device uhci` 或用于 USB 1.X 支持的 `device ohci` 二者之一即可， 但是两者都加入内核配置文件当中也是无害的。 对于 USB 2.X 控制器的支持由 ehci(4) 提供 (`device ehci` 这一行)。 不要忘了如果您加入了上面的几行要重新编译和安装内核。

> 注意: 如果您的 USB 设备是一个 CD-R 或 DVD 刻录机， SCSI CD-ROM 驱动程序， cd(4), 就必须加入内核中通过下面这行：

>     device cd

> 由于刻录机被视为 SCSI 设备， 因此， 不应该在内核配置文件中使用 atapicam(4) 驱动程序。

## 19.5.2 测试配置

配置好后准备进行测试：插入您的 USB 设备， 在系统信息中 (dmesg(8)), 应该会出现像下面的设备：

    umass0: USB Solid state disk, rev 1.10/1.00, addr 2
    GEOM: create disk da0 dp=0xc2d74850
    da0 at umass-sim0 bus 0 target 0 lun 0
    da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device
    da0: 1.000MB/s transfers
    da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)

当然啦，商标，设备标识 (`da0`) 和其它的细节信息会根据您的配置不同 而有所不同。

因为 USB 设备被看作 SCSI 设备中的一个， `camcontrol` 命令也能够用来列出 USB 存储设备和系统的关联：

    # camcontrol devlist
    <Generic Traveling Disk 1.11>      at scbus0 target 0 lun 0 (da0,pass0)

如果设备上已经包含了文件系统， 现在应该就可以挂接它了。 如果需要， 请参阅 第 19.3 节 来了解如何在 USB驱动器上格式化和创建分区。

> 警告: 允许非可信用户挂载任意介质， 例如通过使用前面介绍的 `vfs.usermount` 来启用的功能， 从安全角度来看是很不保险的。 FreeBSD 中的绝大多数文件系统并不提供针对恶意设备的内建防护能力。

如果希望设备能够被普通用户挂接， 还需要做一些其它操作。 首先， 在 USB 存储设备连接到计算机上时， 系统自动生成的设备文件， 必须是该用户能够读写的。 一种做法是让所有属于 `operator` 组的用户都可以访问该设备。 要完成这项工作， 首先需要用 pw(8) 来给用户指定组。 其次， 在生成设备文件时， `operator` 组应能读写它们。 这可以通过在 `/etc/devfs.rules` 中增加一些相应的设置来实现：

    [localrules=5]
    add path 'da*' mode 0660 group operator

> 注意: 如果系统中已经有其它 SCSI 磁盘， 则上述操作必须做一些变化。 例如， 如果系统中已经存在了设备名为 `da0` 到 `da2` 的磁盘， 则第二行应改为：

>     add path 'da[3-9]*' mode 0660 group operator

> 这会将系统中已经存在的磁盘， 排除在属于 `operator` 组的设备之外。

另外， 您还需要在 `/etc/rc.conf` 文件中， 启用 devfs.rules(5) 规则集：

    devfs_system_ruleset="localrules"

接下来， 需要配置内核， 令普通用户能够挂接文件系统。 最简单的方法是将下面的配置加入到 `/etc/sysctl.conf`：

    vfs.usermount=1

注意， 这个设置只有在下次重启系统时才会生效。 另外， 您也可以使用 sysctl(8) 来设置这个变量。

最后一步是创建将要挂接文件系统的目录。 这个目录必须是属于将要挂接文件系统的用户的。 以 `root` 身份为用户建立属于该用户的 `/mnt/`username`` (此处 `username` 应替换成用户的登录名， 并把 `usergroup` 替换成用户所属的组)：

    # mkdir /mnt/username
    # chown username:usergroup /mnt/username

假设已经插入了一个 USB 读卡设备， 并且系统将其识别为 `/dev/da0s1`， 由于这些设备通常是 FAT 文件系统， 用户可以这样挂接它们：

    % mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/username

如果拔出设备 (必须首先将其对应的磁盘卷卸下)， 则您会在系统消息缓冲区中看到类似下面的信息：

    umass0: at uhub0 port 1 (addr 2) disconnected
    (da0:umass-sim0:0:0:0): lost device
    (da0:umass-sim0:0:0:0): removing device entry
    GEOM: destroy disk da0 dp=0xc2d74850
    umass0: detached

## 19.5.3 深入阅读

除了 Adding Disks 和 Mounting and Unmounting File Systems 章之外， 阅读各种手册页也是有益的： umass(4), camcontrol(8), 和 FreeBSD 8.X 的 usbconfig(8) 或者对于更早期 FreeBSD 版本的 usbdevs(8)。

上一页 | 起始页 | 下一页
RAID | 上一级 | 创建和使用光学介质(CD)

本文档和其它文档可从这里下载：ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读文档，如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.