到目前为止,有许多外部外部存储解决方案, 例如:通用串行总线 (USB):硬盘、USB thumbdrives、CD-R burners 等等。 FreeBSD 为这些设备提供了支持。
USB 大容量存储设备驱动,在 umass(4), 中提供了对 USB 存储设备的支持。如果您使用 GENERIC 内核,您不必要改变配置文件里的任何内容。 如果您使用了定制的内核,就要确定下面的行出现在您的内核配置文件里:
device scbus device da device pass device uhci device ohci device usb device umass
umass(4) 驱动程序使用 SCSI 子系统来访问 USB 存储设备, 您的 USB 设备将被系统看成为一个 SCSI 设备。依靠您主板上的 USB 芯片, 您只须选择 device uhci 或 device ohci 二者之一即可, 但是两者都加入内核配置文件当中也没有坏外。 不要忘了如果您加入了上面的几行要重新编译和安装内核。
注意: 如果您的 USB 设备是一个 CD-R 或 DVD 刻录机, SCSI CD-ROM 驱动程序, cd(4), 就必须加入内核中通过下面这行:
device cd由于刻录机被视为 SCSI 设备, 因此, 不应该在内核配置文件中使用 atapicam(4) 驱动程序。
在 FreeBSD 中已经提供了对 USB 2.0 控制器的内建支持; 然而, 您必须在编译内核时在配置中加入:
device ehci
配置好后准备进行测试:插入您的 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)
如果设备上已经包含了文件系统, 现在应该就可以挂接它了。 如果需要, 请参阅 第 18.3 节 来了解如何在 USB驱动器上格式化和创建分区。
如果希望设备能够被普通用户挂接, 还需要做一些其它操作。 首先, 在 USB 存储设备连接到计算机上时, 系统自动生成的设备文件, 必须是该用户能够读写的。 一种做法是让所有属于 operator 组的用户都可以访问该设备。 要完成这项工作, 首先需要用 pw(8) 来给用户指定组。 其次, 在生成设备文件时, operator 组应能读写它们。 这可以通过在 /etc/devfs.rules 中增加一些相应的设置来实现:
[localrules=1] 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/$USER (此处 $USER 应替换成用户的登录名):
# mkdir /mnt/$USER # chown $USER:$USER /mnt/$USER
假设已经插入了一个 USB 读卡设备, 并且系统将其识别为 /dev/da0s1, 由于这些设备通常是 FAT 文件系统, 用户可以这样挂接它们:
% mount -t msdosfs -m 644 -M 755 /dev/da0s1 /mnt/$USER
如果拔出设备 (必须首先将其对应的磁盘卷卸下), 则您会在系统消息缓冲区中看到类似下面的信息:
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
除了 Adding Disks 和 Mounting and Unmounting File Systems 章之外,阅读 umass(4), camcontrol(8), 和 usbdevs(8) 也是很有益的。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.