热插拔设备是指在未关闭操作系统或未关闭系统电源的情况下添加或移除设备。所有的 USB 设备都是可热插拔设备。
可移除介质管理器 (vold) 现在可以识别热插拔设备。一旦插入该设备,vold 便会在几秒钟内尝试对其进行挂载。如果未发生任何情况,请查看该设备是否已挂载。
确保 vold 正在运行。
# svcs volfs STATE STIME FMRI online 10:39:12 svc:/system/filesystem/volfs:default |
如果文件系统有效并且可由 vold 进行识别,则可以从该设备将其挂载。
如果无法挂载,请停止 vold。
# svcadm disable volfs |
然后,尝试手动挂载。
热移除设备之前,应在 eject -n 命令的别名中找到该设备的名称。然后,弹出该设备的介质。如果不执行此操作,vold 仍会释放该设备,并且端口可再次使用,但是该设备中的文件系统可能已被破坏。
热插拔 USB 设备时,系统的设备分层结构中会立即显示该设备,如 prtconf 命令输出所示。移除 USB 设备时,如果未使用该设备,则会从系统的设备分层结构中删除该设备。
如果拔除设备时正在使用该设备,则该设备节点仍然存在,但控制该设备的驱动程序将停止该设备中的所有活动。向此设备发出的任何新的 I/O 活动都会返回错误。
在这种情况下,系统会提示插入原始设备。如果该设备不再可用,请停止应用程序。几秒钟后,端口将再次可用。
移除活动的设备或打开的设备可能会损害数据完整性。移除设备之前应始终先将其关闭,但连接的键盘和鼠标除外(可在活动状态时将其移除)。
通过更改 /etc/rmmount.conf 文件中的以下行,可以采用只读方式挂载 USB 海量存储设备:
mount * hsfs udfs ufs -o nosuid |
更改为:
mount * hsfs udfs ufs -o nosuid,ro |
然后重新启动 vold:
# svcadm disable volfs # svcadm enable volfs |
此时会以只读方式挂载包含这些文件系统的可移除设备。
(可选)有关禁用 vold 的信息,请参见如何在不运行 vold 的情况下准备使用 USB 海量存储设备。
检验 vold 是否未运行。
# svcs volfs STATE STIME FMRI disabled 10:39:12 svc:/system/filesystem/volfs:default |
连接 USB 海量存储设备。
检验是否已添加 USB 设备。
查找 USB 磁盘设备链路,这些链路可能在非 USB 存储设备的设备链路中,如下所示:
$ rmformat Looking for devices... 1. Logical Node: /dev/rdsk/c3t0d0p0 Physical Node: /pci@0,0/pci108e,4131@2,1/storage@4/disk@0,0 Connected Device: USB2.0 Flash Disk 2.00 Device Type: Removable |
如果相机的介质使用 PCFS 文件系统,则 vold 会自动挂载该相机。 如果该设备未绑定至 scsa2usb 驱动程序,请使用 libusb 应用程序来传送图片。有关更多信息,请参阅 /usr/sfw/share/doc/libusb/libusb.txt 。
成为超级用户。
系统将为相机创建一个逻辑设备。插入相机后,会将输出写入 /var/adm/messages 文件,以确认设备的连接。系统会将相机视为存储设备。
检查写入 /var/adm/messages 文件的输出。
# more /var/adm/messages |
通过检查此输出,可以确定已创建的逻辑设备,这样便可以使用该设备来访问图像。其输入与以下内容类似:
Jul 15 09:53:35 buffy usba: [ID 349649 kern.info] OLYMPUS, C-3040ZOOM, 000153719068 Jul 15 09:53:35 buffy genunix: [ID 936769 kern.info] scsa2usb1 is /pci@0,0/pci925,1234@7,2/storage@2 Jul 15 09:53:36 buffy scsi: [ID 193665 kern.info] sd3 at scsa2usb1: target 0 lun 0 |
请通过执行以下操作,使该设备与可挂载的 /dev/dsk 链路项匹配:
# ls -l /dev/dsk/c*0 | grep /pci@0,0/pci925,1234@7,2/storage@2 lrwxrwxrwx 1 root root 58 Jun 30 2004 c3t0d0p0 -> ../../devices/pci@0,0/pci925,1234@7,2/storage@2/disk@0,0:a |
挂载 USB 相机文件系统。
该相机的文件系统很可能是 PCFS 文件系统。如果文件系统是 PCFS,则该文件系统应由 vold 自动挂载。
要在 x86 系统上手动挂载文件系统,可以使用如下语法:
# mount -F pcfs /dev/dsk/c3t0d0p0:c /mnt |
要在 SPARC 系统上手动挂载文件系统,可以使用如下语法:
# mount -F pcfs /dev/dsk/c3t0d0s0:c /mnt |
有关挂载文件系统的信息,请参见第 19 章,挂载和取消挂载文件系统(任务)。
有关挂载其他 PCFS 文件系统的信息,请参见 mount_pcfs(1M)。
检验图像文件是否可用。
例如:
# ls /mnt/DCIM/100OLYMP/ P7220001.JPG* P7220003.JPG* P7220005.JPG* P7220002.JPG* P7220004.JPG* P7220006.JPG* |
查看并处理 USB 相机创建的图像文件。
例如:
# /usr/dt/bin/sdtimage P7220001.JPG & |
断开相机连接之前,取消挂载文件系统。
例如:
# umount /mnt |
(可选的)关闭并断开相机连接。
(可选)有关禁用 vold 的信息,请参见如何在不运行 vold 的情况下准备使用 USB 海量存储设备。
成为超级用户。
检验 vold 是否未运行。
# svcs volfs STATE STIME FMRI disabled Sep_29 svc:/system/filesystem/volfs:default |
停止使用该设备的所有活动应用程序。
取消挂载该设备。
移除该设备。