本章提供有关在 Solaris OS 中使用 USB 设备的逐步说明。
有关与使用 USB 设备关联的过程信息,请参见以下主题:
有关 USB 设备的最新信息,请转至以下站点:
http://www.sun.com/io_technologies/USB-Faq.html
有关使用 USB 设备的概述信息,请参见第 7 章,使用 USB 设备(概述)。
使用本指南可以确定用于在 Solaris OS 中管理 USB 设备的所有任务。每个任务都指向一系列其他任务,如使用 USB 设备、热插拔 USB 设备以及添加 USB 音频设备。
有关在 Solaris OS 中使用 USB 组件的信息,请参见关于 Solaris OS 中的 USB。
任务 |
说明 |
参考 |
---|---|---|
使用 USB 海量存储设备。 |
USB 海量存储设备必须包含文件系统,才能向其中添加数据。此外,必须先格式化 USB 软盘,然后才能在这些软盘上创建和挂载文件系统。 本节还介绍如何以物理方式在系统中添加或移除 USB 设备。 | |
添加 USB 音频设备。 |
使用此任务列表可确定与添加 USB 音频设备关联的任务。 | |
使用 cfgadm 命令在系统中添加或删除 USB 设备。 |
可以使用 cfgadm 命令以逻辑方式在系统中添加或删除 USB 设备。 |
任务 |
说明 |
参考 |
---|---|---|
添加或删除 USB 海量存储设备。 |
选择以下操作之一可添加 USB 海量存储设备: |
|
在不运行 vold 的情况下添加 USB 海量存储设备。 | ||
|
添加用于访问数字图像的 USB 相机。 | |
在不运行 vold 的情况下删除 USB 海量存储设备。 | ||
添加不兼容的 USB 海量存储设备。 |
通过向 scsa2usb.conf 中添加项,可以添加不兼容的 USB 海量存储设备。 | |
准备使用 USB 海量存储设备。 |
在运行 vold 的情况下准备使用 USB 海量存储设备。 | |
|
在不运行 vold 的情况下准备使用 USB 海量存储设备。 | |
显示 USB 设备信息。 |
显示有关 USB 设备的信息。 | |
在 USB 海量存储设备中创建文件系统。 |
必须先在设备中创建文件系统,然后才能向其中添加数据。 | |
在 USB 海量存储设备中修改分区并创建文件系统。 |
在 USB 海量存储设备中创建文件系统之前,可能需要修改现有的分区。 | |
在 USB 海量存储设备中创建 Solaris 分区并修改相应的片。 |
使用 rmformat 修改片信息之前,需要使用片信息创建一个文件。 | |
在不运行 vold 的情况下挂载 USB 海量存储设备。 |
在不运行 vold 的情况下挂载 USB 海量存储设备。 | |
(可选)禁用 USB 设备驱动程序。 |
如果不需要系统支持 USB,可以禁用 USB 设备驱动程序。 | |
(可选)删除未使用的 USB 设备链路。 |
使用 devfsadm 命令删除 USB 设备链路。 |
从 Solaris 9 发行版开始,支持以下 USB 可移除海量存储设备:
CD-RW
硬盘
DVD
数码相机
软盘设备
SmartMedia 和 CompactFlash 设备
有关将 USB 海量存储设备用于 Solaris ZFS 文件系统的信息,请参见Solaris 10 6/06 发行版在 USB 设备方面的新增功能。
有关 Solaris OS 所支持的 USB 设备的完整列表,请参见:
http://www.sun.com/io_technologies/USB.html
在以前的 Solaris 发行版中,所有的 USB 存储设备都被标识为可移除介质设备,这些设备可提供以下许多优点,包括通过 vold 自动挂载。在 Solaris 10 6/06 发行版中,USB 海量存储设备被标识为可热插拔设备,而且具有 USB 可移除设备的优点(如下所述)。有关可热插拔行为的更多信息,请参见USB 和 1394 (FireWire) 支持增强功能。
从 Solaris 10 1/06 发行版开始,vold 可自动挂载热插拔设备。有关更多信息,请参见vold 用于识别热插拔 USB 设备。
支持使用标准 MS-DOS 或 Windows (FAT) 文件系统的 USB 存储设备。
可以使用用户友好的 rmformat 命令来创建片,还可以使用 fdisk 命令对 USB 设备进行分区,但决不能使用 format 实用程序或 rmformat -F 命令以物理方式格式化 USB 驱动器。
可使用 rmformat 命令显示插入了介质的所有 USB 设备。有关示例,请参见如何显示 USB 设备信息。
由于不再需要 mount 命令,因此非超级用户现在可以访问 USB 存储设备。设备将通过 vold 自动挂载并且位于 /rmdisk 目录下。如果在系统关闭时连接了一个新设备,可使用 boot -r 命令进行重新配置引导,以便 vold 可以识别该设备。
可以通过卷管理来管理这些设备,也可以不通过卷管理。
可以挂载和访问使用 FAT 文件系统的磁盘。例如:
mount -F pcfs /dev/dsk/c2t0d0s0:c /mnt |
现在,除了支持 LOG SENSE 页面的 USB 存储设备之外,其他所有USB 存储设备都会进行电源管理。包含 LOG SENSE 页面的设备通常是通过 USB-to-SCSI 桥接设备进行连接的 SCSI 驱动器。
使用 USB 海量存储设备时,应用程序的工作方式可能有所不同。如果要将应用程序用于 USB 存储设备,请牢记以下问题:
应用程序可能对介质的存储容量作出不正确的假定,因为以前仅有较小存储容量的设备(如软盘)才是可移除设备。
当应用程序发出请求,要求设备弹出介质,而此移除操作却不适用于该设备(如硬盘驱动器)时,请求会成功,但不会产生任何结果。
如果要使用以前的 Solaris 发行版中的性能,即不将所有的 USB 海量存储设备都视为可移除介质设备,则可通过更新 /kernel/drv/scsa2usb.conf 文件来强制使用旧性能。
有关使用 USB 海量存储设备的更多信息,请参见 scsa2usb(7D)。
USB 软盘设备显示为可移除介质设备。USB 软盘设备不是通过 fd(软盘)驱动程序进行管理的。发出旨在用于 fd(本机软盘)驱动程序的 ioctl(2) 调用的应用程序将失败。仅发出 read(2) 和 write(2) 调用的应用程序将成功。其他应用程序(如 SunPCI 和 rmformat)也将成功。
卷管理 (vold) 会将 USB 软盘设备视为 SCSI 可移除介质设备。通过卷管理可在 /rmdisk 目录下访问该设备。
有关如何使用 USB 软盘设备的更多信息,请参见第 1 章,管理可移除介质(概述)。
即使某些设备未将其自身标识为与 USB 海量存储类兼容,或以不正确的方式标识其自身, USB 海量存储驱动程序也仍可能支持这些设备。scsa2usb.conf 文件包含一个属性覆盖列表,其中列有供应商 ID、产品 ID、用于匹配海量存储设备的修订版,以及用于覆盖缺省设备属性的字段。缺省情况下,会注释掉此列表中的项。要启用对特定设备的支持,可以复制并取消注释这些项。
如果将 USB 海量存储设备连接至运行此 Solaris 发行版的系统,但该系统无法使用它,则可以检查 /kernel/drv/scsa2usb.conf 文件,查看是否存在与该设备对应的注释掉的项。根据 scsa2usb.conf 文件中给出的信息,查看是否可以使用覆盖信息支持特定设备。
有关推荐的 USB 海量存储设备的列表,请转至:
http://www.sun.com/io_technologies/USB.html
有关更多信息,请参见 scsa2usb(7D)。
成为超级用户。
向 /kernel/drv/scsa2usb.conf 文件中添加项。
以下项适用于 USB 内存条。
attribute-override-list = "vid=* reduced-cmd-support=true"; |
重新引导系统或执行以下操作:
热插拔设备是指在未关闭操作系统或未关闭系统电源的情况下添加或移除设备。所有的 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 |
停止使用该设备的所有活动应用程序。
取消挂载该设备。
移除该设备。
无论是否使用卷管理,都可以访问有关可移除介质的信息。有关使用 GNOME 的文件管理器访问可移除介质相关信息的信息,请参见 GNOME 桌面文档。
格式化 USB 设备后,通常会将该设备挂载于 /rmdisk/label 目录下。有关配置可移除存储设备的更多信息,请参见 rmmount.conf(4) 或 vold.conf(4)。
设备节点是在 /vol/dev 目录下创建的。有关更多信息,请参见 scsa2usb(7D)。
以下过程介绍如何在不运行 vold 的情况下管理 USB 海量存储设备。对于字符设备,对应的设备节点是在 /dev/rdsk 目录下创建的,而对于块设备,对应的设备节点是在 /dev/dsk 目录下创建的。设备链路是在热插拔设备时创建的。有关更多信息,请参见 scsa2usb(7D)。
可以在不运行卷管理 (vold) 的情况下使用 USB 海量存储设备。可通过发出以下命令停止 vold:
# svcadm disable volfs |
或者,使用以下过程使 vold 保持运行,但不使用 vold 来注册 USB 海量存储设备。
成为超级用户。
检验 vold 是否未运行。
# svcs volfs STATE STIME FMRI disabled 10:28:23 svc:/system/filesystem/volfs:default |
通过对 /etc/vold.conf 文件中的以下行进行注释,删除 USB 海量存储设备的卷管理注册功能。
# use rmdisk drive /dev/rdsk/c*s2 dev_rmdisk.so rmdisk%d |
注释该行后,重新启动 vold。
# svcadm enable volfs |
如果注释掉该行,且其他可移除设备(如 SCSI 或 Peerless)位于系统上,则这些设备的 vold 注册功能也会被禁用。
有关更多信息,请参见 vold.conf(4)。
例如,使用 prtconf 命令可显示 USB 设备信息。本示例中的 prtconf 输出已截断为仅显示 USB 设备信息。
$ prtconf usb, instance #0 hub, instance #2 device, instance #8 interface (driver not attached) printer (driver not attached) mouse, instance #14 device, instance #9 keyboard, instance #15 mouse, instance #16 storage, instance #7 disk (driver not attached) communications, instance #10 modem (driver not attached) data (driver not attached) storage, instance #0 disk (driver not attached) storage, instance #1 disk (driver not attached) |
例如,使用 rmformat 命令可显示 USB 设备信息。
$ rmformat Looking for devices... 1. Volmgt Node: /vol/dev/aliases/rmdisk3 Logical Node: /dev/rdsk/c1t0d3s2 Physical Node: /pci@1e,600000/usb@a/storage@2/disk@0,3 Connected Device: SMSC 223 U HS-SD/MMC 1.95 Device Type: Removable 2. Volmgt Node: /vol/dev/aliases/cdrom0 Logical Node: /dev/rdsk/c2t2d0s2 Physical Node: /pci@1e,600000/ide@d/sd@2,0 Connected Device: JLMS XJ-HD166S D3S4 Device Type: DVD Reader 3. Volmgt Node: /vol/dev/aliases/rmdisk4 Logical Node: /dev/rdsk/c4t0d0s2 Physical Node: /pci@1e,600000/usb@a/storage@1/disk@0,0 Connected Device: IC25T048 ATDA05-0 DA8O Device Type: Removable |
使用此过程可向 USB 海量存储设备中添加文件系统。
必须先格式化 USB 软盘,然后才能向其中添加文件系统。所有其他的 USB 海量存储设备只需 PCFS 或 UFS 文件系统即可使用。格式化 USB 软盘时,请牢记以下要点:
除在 USB 软盘上以外,请勿使用 rmformat -F。
如果缺省的片不可接受,请使用 rmformat -s 命令来创建片。使用 fdisk 实用程序对 USB 设备进行分区(如果需要)。有关逐步说明,请参见:
仅在需要格式化 USB 软盘时,才执行步骤 5–6。
(可选)有关禁用 vold 的信息,请参见如何在不运行 vold 的情况下准备使用 USB 海量存储设备。
检验 vold 是否未运行。
# svcs volfs STATE STIME FMRI disable 10:39:12 svc:/system/filesystem/volfs:default |
向系统中添加 USB 设备。
有关热插拔 USB 设备的信息,请参见:
(可选)标识 USB 设备。
以下示例标识了 USB 软盘设备。
# cd /dev/rdsk # ls -l c*0 | grep usb lrwxrwxrwx 1 root root 55 Mar 5 10:35 c2t0d0s0 -> ../../devices/pci@1f,0/usb@c,3/storage@3/disk@0,0:a,raw |
在本示例中,软盘设备为 c2t0d0s0。
将软盘插入软盘驱动器中(如果必要)。
格式化该软盘(如果必要)。
% rmformat -Flong raw-device |
例如,在 SPARC 系统上:
% rmformat -Flong /dev/rdsk/c2t0d0s2 |
例如,在 x86 系统上:
% rmformat -Flong /dev/rdsk/c3t0d0p0 |
确定文件系统类型并选择以下操作之一:
创建 PCFS 文件系统。
# mkfs -F pcfs -o nofdisk,size=size raw-device |
以 512 字节块为单位指定 -size 选项。
以下示例说明如何在 SPARC 系统中的 1.4 MB 软盘上创建 PCFS 文件系统:
# mkfs -F pcfs -o nofdisk,size=2880 /dev/rdsk/c4t0d0s2 |
以下示例说明如何在 x86 系统中的 1.4 MB 软盘上创建 PCFS 文件系统:
# mkfs -F pcfs -o nofdisk,size=2880 /dev/rdsk/c4t0d0p0 |
以下示例说明如何在 SPARC 系统上的 100 MB USB 内存条上创建 PCFS 文件系统:
# mkfs -F pcfs /dev/rdsk/c5t0d0s2:c |
以下示例说明如何在 x86 系统上的 100 MB USB 内存条上创建 PCFS 文件系统:
# mkfs -F pcfs /dev/rdsk/c5t0d0p0:c |
完成此命令可能要用几分钟时间。
创建 UFS 文件系统。
# newfs raw-device |
例如:
# newfs /dev/rdsk/c4t0d0s7 |
对于大容量 USB 硬盘,请考虑使用 newfs -f 4096 选项或 newfs -T 选项。
由于软盘的存储容量有限,因此 UFS 文件系统开销会占用软盘上的大部分空间。
有关在 USB 海量存储设备中创建 PCFS 文件系统和修改片的详细示例,请参见以下两个过程。
以下步骤介绍如何删除现有分区,创建新分区,然后在 USB 设备中创建 PCFS 文件系统。执行此任务之前,请确保先备份所有数据。
成为超级用户。
启动 fdisk 实用程序。
例如:
# fdisk /dev/rdsk/c3t0d0p0 |
通过选择选项 3 来删除分区。
例如:
Total disk size is 29 cylinders Cylinder size is 2048 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === 1 Active Solaris2 1 28 28 97 SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Enter Selection: 3 |
选择要删除的分区号。
例如:
Total disk size is 29 cylinders Cylinder size is 2048 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === 1 Active Solaris2 1 28 28 97 SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Specify the partition number to delete (or enter 0 to exit): 1 Partition deleted. |
创建分区。
例如:
Total disk size is 29 cylinders Cylinder size is 2048 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === WARNING: no partitions are defined! SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Enter Selection: 1 |
选择 FAT32 分区类型。
Total disk size is 29 cylinders Cylinder size is 2048 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === WARNING: no partitions are defined! SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Select the partition type to create: 1=SOLARIS2 2=UNIX 3=PCIXOS 4=Other 5=DOS12 6=DOS16 7=DOSEXT 8=DOSBIG 9=DOS16LBA A=x86 Boot B=Diagnostic C=FAT32 D=FAT32LBA E=DOSEXTLBA F=EFI 0=Exit? c |
指定此分区所使用的磁盘百分比。
Total disk size is 29 cylinders Cylinder size is 2048 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === WARNING: no partitions are defined! SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Select the partition type to create: Specify the percentage of disk to use for this partition (or type "c" to specify the size in cylinders). 100 |
选择新分区应为活动分区还是非活动分区。
Total disk size is 29 cylinders Cylinder size is 2048 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === WARNING: no partitions are defined! SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Select the partition type to create: Should this become the active partition? If yes, it will be activated each time the computer is reset or turned on. Please type "y" or "n". n |
更新磁盘配置并退出。
Total disk size is 29 cylinders Cylinder size is 2048 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === 1 Win95 FAT32 1 28 28 97 SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Enter Selection: 5 |
在此分区中创建 PCFS 文件系统。
例如:
# mkfs -F pcfs -o fat=32 /dev/rdsk/c3t0d0p0:c Construct a new FAT file system on /dev/rdsk/c3t0d0p0:c: (y/n)? y |
以下步骤说明如何创建 Solaris 分区和修改片。
有关禁用 vold 的信息,请参见如何在不运行 vold 的情况下准备使用 USB 海量存储设备。
执行此任务之前,请确保先备份所有数据。
成为超级用户。
启动 fdisk 实用程序。
例如:
# fdisk /dev/rdsk/c5t0d0s2 No fdisk table exists. The default partition for the disk is: a 100% "SOLARIS System" partition Type "y" to accept the default partition, otherwise type "n" to edit the partition table. y |
显示当前的片。
例如:
# prtvtoc /dev/rdsk/c5t0d0s2 * /dev/rdsk/c5t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 63 sectors/track * 255 tracks/cylinder * 16065 sectors/cylinder * 5836 cylinders * 5836 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 0 00 0 93755340 93755339 2 0 00 0 93755340 93755339 |
创建包含片信息的文本文件。
例如:
slices: 0 = 0, 5GB, "wm", "home" : 1 = 8225280000, 6GB : 2 = 0, 44GB, "wm", "backup" : 6 = 16450560000, 15GB |
请确保每个片都从柱面边界开始。例如,片 1 的初始大小为 822280000 字节,即柱面大小与 1000 的乘积(以字节为单位)。
有关更多信息,请参见 rmformat(1) 中的 -s 选项说明。
通过包含以上创建的片文件来创建片。
例如:
# rmformat -s slice_file /dev/rdsk/c5t0d0s2 |
查看新的片信息。
例如:
# prtvtoc /dev/rdsk/c5t0d0s2 * /dev/rdsk/c5t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 63 sectors/track * 255 tracks/cylinder * 16065 sectors/cylinder * 5836 cylinders * 5836 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * Unallocated space: * First Sector Last * Sector Count Sector * 10485760 5579240 16064999 * 28647912 3482088 32129999 * 63587280 30168060 93755339 * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 8 00 0 10485760 10485759 1 3 01 16065000 12582912 28647911 2 5 00 0 92274688 92274687 6 4 00 32130000 31457280 63587279 |
有关禁用 vold 的信息,请参见如何在不运行 vold 的情况下准备使用 USB 海量存储设备。
成为超级用户。
检验 vold 是否未运行。
# svcs volfs STATE STIME FMRI disabled 10:39:12 svc:/system/filesystem/volfs:default |
(可选)标识该设备。
例如:
# cd /dev/rdsk # ls -l c*0 | grep usb lrwxrwxrwx 1 root root 55 Mar 5 10:35 c2t0d0s0 -> ../../devices/pci@1f,0/usb@c,3/storage@3/disk@0,0:a,raw |
在本示例中,软盘设备为 c2t0d0s0。
选择以下操作之一以挂载或取消挂载 USB 海量存储设备:
挂载 USB 海量存储设备。
# mount [ -F fstype ] block-device mount-point |
本示例说明如何挂载包含 UFS 文件系统的设备:
# mount /dev/dsk/c1t0d0s2 /mnt |
本示例说明如何在 SPARC 系统上挂载包含 PCFS 文件系统的设备:
# mount -F pcfs /dev/dsk/c3t0d0s2:c /mnt |
本示例说明如何在 x86 系统上挂载包含 PCFS 文件系统的设备:
# mount -F pcfs /dev/dsk/c3t0d0p0:c /mnt |
本示例说明如何挂载包含只读 HSFS 文件系统的 CD:
# mount -F hsfs -o ro /dev/dsk/c1t0d0s2 /mnt |
取消挂载 USB 海量存储设备。
首先,确保无人正在使用该设备中的文件系统。
例如:
# fuser -c -u /mnt # umount /mnt |
弹出该设备(对于 CD 或软盘设备,此操作可选)。
# eject /dev/[r]dsk/cntndnsn |
例如:
# eject /dev/rdsk/c1t0d0s2 |
如果在添加或移除 USB 海量存储设备时遇到问题,请牢记以下提示。
请检查 /var/adm/messages 文件中枚举该设备时出现的故障。对于枚举故障,可能需要插入 USB 集线器,或移除集线器并将其直接连接至根 USB 集线器。
如果在系统关闭时添加或移除 USB 设备,则必须执行重新配置引导。
ok boot -r |
如果系统正在运行时访问连接的设备遇到问题,请尝试以下命令:
# devfsadm |
如果因暂停操作关闭了系统电源,请勿来回移动设备。有关更多信息,请参见SPARC: USB 电源管理。
如果应用程序在设备使用时已将其移除并且该设备不再可用,请停止应用程序。使用 prtconf 命令可查看是否已删除了设备节点。
通过禁用 USB 设备的客户机驱动程序,可以禁用特定类型的 USB 设备。例如,通过禁用驱动 USB 打印机的 usbprn 驱动程序,可以禁用这些打印机。禁用 usbprn 不会影响其他种类的设备,如 USB 存储设备。
下表提供了一些 USB 设备类型及其对应的驱动程序。
设备类型 |
要禁用的驱动程序 |
---|---|
音频 |
usb_ac 和 usb_as |
HID(通常为键盘和鼠标) |
hid |
存储 |
scsa2usb |
打印机 |
usbprn |
串行 |
usbser_edge |
如果禁用仍与系统连接的 USB 设备的驱动程序,则会显示类似如下的控制台消息:
usba10: WARNING: usba: no driver found for device name |
如果在系统电源关闭时移除 USB 设备,请使用此过程。在系统电源关闭时移除 USB 设备可能会保留不存在设备的设备链路。
成为超级用户。
关闭可能正在访问该设备的所有应用程序。
删除特定 USB 类的未使用的链路。
例如:
# devfsadm -C -c audio |
或者,直接删除悬而未决的链路:
# devfsadm -C |
任务 |
说明 |
参考 |
---|---|---|
添加 USB 音频设备。 |
添加 USB 麦克风和扬声器。 | |
确定系统的主音频设备。 |
确定哪个音频设备是主音频设备。 | |
更改主 USB 音频设备。 |
如果移除或更改 USB 音频设备,则可能需要使某个音频设备成为主音频设备。 | |
删除未使用的 USB 设备链路。 |
如果在系统电源关闭时移除 USB 音频设备,则 /dev/audio 设备可能会指向不存在的 /dev/sound/* 设备。 | |
解决 USB 音频问题。 |
如果 USB 扬声器无法发声,请使用本部分来解决此问题。 |
有关特定 Solaris 发行版中的 USB 音频支持的信息,请参见Solaris 对 USB 设备的支持。
此 Solaris 发行版提供了由一对协作驱动程序 usb_ac 和 usb_as 实现的 USB 音频支持。 音频控制器驱动程序 usb_ac 是与 Solaris USB 体系结构兼容的客户机驱动程序,用于向用户应用程序提供控制接口。音频流驱动程序 usb_as 可在播放和录制期间处理音频数据消息。该驱动程序将设置样例频率和精度,并对来自 usb_ac 驱动程序的请求进行编码。这两个驱动程序都符合 USB 音频类 1.0 规范。
某些音频设备可以在软件控制下设置音量。为了管理此功能,可以将 STREAMS 模块 usb_ah 推送至 HID 驱动程序的顶部。
Solaris 支持仅播放、仅录制或同时播放和录制的 USB 音频设备, 还支持热插拔 USB 音频设备。
具有 USB 连接器的 SPARC UltraTM 和 x86 平台支持 USB 音频设备。
Solaris 8 10/01、Solaris 8 2/02 或 Solaris 9 发行版支持的 USB 音频设备必须支持固定的 44100 Hz 或 48000 Hz 抽样频率以进行播放或录制。 Solaris 10 发行版中不再要求 44100 Hz 或 48000 Hz 抽样频率。
有关完全支持的音频数据格式的信息,请参见 usb_ac(7D)。
主音频设备为 /dev/audio。通过使用以下命令,可以检验 /dev/audio 是否指向 USB 音频:
% mixerctl Device /dev/audioctl: Name = USB Audio Version = 1.0 Config = external Audio mixer for /dev/audioctl is enabled |
连接 USB 音频设备后,可以通过 /dev/sound/N 设备链路使用 audioplay 和 audiorecord 命令对其进行访问。
请注意,/dev/audio 和 /dev/sound/N 设备可能是指扬声器、麦克风或组合设备。 如果引用不正确的设备类型,则该命令将失败。例如,如果尝试将其与麦克风一同使用,则 audioplay 命令将失败。
对于大多数 Sun 音频应用程序(如 audioplay 和 audiorecord),通过设置 AUDIODEV shell 变量或为这些命令指定 -d 选项,可以选择特定的缺省音频设备。但是,设置 AUDIODEV 不适用于将 /dev/audio 硬编码为音频文件的第三方应用程序。
插入 USB 音频设备时,如果没有正在使用 /dev/audio,则该设备将自动成为主音频设备 /dev/audio。有关将 /dev/audio 从板载音频更改为 USB 音频或从 USB 音频更改为板载音频的说明,请参阅如何更改主 USB 音频设备和 usb_ac(7D)。
如果将 USB 音频设备插入系统,该设备将成为主音频设备 /dev/audio。即使在重新引导系统后,该设备也仍为主音频设备。如果插入其他 USB 音频设备,则最后一个设备将成为主音频设备。
有关 USB 音频设备问题疑难解答的其他信息,请参见 usb_ac(7D)。
主音频设备 /dev/audio 指向 USB 扬声器。
% ls -l /dev/audio lrwxrwxrwx 1 root root 10 Feb 13 08:46 /dev/audio -> usb/audio0 |
(可选)移除扬声器。然后,重新插入扬声器。
如果移除扬声器,则 /dev/audio 设备将恢复回板载音频。
% ls -l /dev/audio lrwxrwxrwx 1 root root 7 Feb 13 08:47 /dev/audio -> sound/0 |
添加 USB 麦克风。
% ls -l /dev/audio lrwxrwxrwx 1 root root 10 Feb 13 08:54 /dev/audio -> usb/audio1 |
此过程假定已连接 USB 音频设备。
使用 ls 命令显示系统的新音频链路。
例如:
% ls -lt /dev/audio* lrwxrwxrwx 1 root root 7 Jul 23 15:46 /dev/audio -> usb/audio0 lrwxrwxrwx 1 root root 10 Jul 23 15:46 /dev/audioctl -> usb/audioctl0/ % ls -lt /dev/sound/* lrwxrwxrwx 1 root root 74 Jul 23 15:46 /dev/sound/1 -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:... lrwxrwxrwx 1 root root 77 Jul 23 15:46 /dev/sound/1ctl -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:... lrwxrwxrwx 1 root other 66 Jul 23 14:21 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root other 69 Jul 23 14:21 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl % |
请注意,主音频设备 /dev/audio 指向新插入的 USB 音频设备 /dev/usb/audio0。
还可以使用 prtconf 命令来检查系统的 USB 音频设备,并查找 USB 设备信息。
% prtconf . . . usb, instance #0 hub, instance #0 mouse, instance #0 keyboard, instance #1 device, instance #0 sound-control, instance #0 sound, instance #0 input, instance #0 . . . |
有时,USB 扬声器不会发出任何声音,即使连接了驱动程序并将音量设置为高也是如此。热插拔该设备可能不会更改该行为。
解决方法是关闭然后再打开 USB 扬声器的电源。
插入 USB 音频设备并登录控制台后,控制台即是 /dev/* 项的属主。此情况表明,只要登录控制台,便可使用音频设备。
如果插入 USB 音频设备时未登录控制台,则超级用户会成为该设备的属主。但是,如果登录控制台并尝试访问 USB 音频设备,则设备拥有权将归控制台所有。有关更多信息,请参见 logindevperm(4)。
如果使用 rlogin 命令远程进行登录并尝试访问 USB 音频设备,则拥有权不会更改。这表明,未经授权的用户无法通过他人拥有的麦克风侦听会话。
任务 |
说明 |
参考 |
---|---|---|
显示 USB 总线信息。 |
显示有关 USB 设备和总线的信息。 | |
取消配置 USB 设备。 |
以逻辑方式取消配置仍通过物理方式连接至系统的 USB 设备。 | |
配置 USB 设备。 |
配置先前取消配置的 USB 设备。 | |
以逻辑方式断开 USB 设备连接。 |
如果物理位置远离系统,则可以逻辑方式断开 USB 设备连接。 | |
以逻辑方式连接 USB 设备。 |
以逻辑方式连接先前通过逻辑方式断开连接或取消配置的 USB 设备。 | |
断开 USB 设备子树连接。 |
断开 USB 设备子树连接,该子树是集线器下的设备分层结构(或树)。 | |
重置 USB 设备。 |
重置 USB 设备,以便以逻辑方式移除和重新创建设备。 | |
更改多重配置 USB 设备的缺省配置。 |
更改多重配置 USB 设备的缺省配置。 |
可以在正在运行的系统中添加或移除 USB 设备,而不必使用 cfgadm 命令。不过,USB 设备也可以逻辑方式热插拔,而不必以物理方式移除。在远程位置工作并且需要禁用或重置未正常运行的 USB 设备时,这种方案比较方便。cfgadm 命令还可提供显示 USB 设备树(包括制造商和产品信息)的方法。
cfgadm 命令可以显示有关附着点的信息,附着点是指系统中可以执行动态重新配置操作的位置。附着点由以下几项组成:
插卡,表示可以配置到系统中的硬件资源,如 USB 设备。
插座,接受插卡的位置,如 USB 端口
附着点由逻辑附着点 ID 和物理附着点 ID (Ap_Id) 表示。物理 Ap_Id 是附着点的物理路径名。逻辑 Ap_Id 是物理 Ap_Id 的用户友好替代项。有关 Ap_Id 的更多信息,请参见 cfgadm_usb(1M)。
cfgadm 命令提供了以下 USB 设备状态信息。
插座状态 |
说明 |
---|---|
empty/unconfigured |
设备不是通过物理方式连接的。 |
disconnected/unconfigured |
设备以逻辑方式断开连接且不可用,即使仍可以通过物理方式连接设备也是如此。 |
connected/unconfigured |
设备以逻辑方式建立连接但不可用。设备在 prtconf 输出中可见。 |
connected/configured |
设备已连接并且可用。 |
以下各小节介绍如何使用 cfgadm 命令通过软件热插拔 USB 设备。这些小节中的所有样例 USB 设备信息都已截断,以便集中阐明相关信息。
有关使用 prtconf 命令显示 USB 配置信息的示例,请参见如何显示 USB 设备信息。
例如:
% cfgadm Ap_Id Type Receptacle Occupant Condition usb0/4.5 usb-hub connected configured ok usb0/4.5.1 usb-device connected configured ok usb0/4.5.2 usb-printer connected configured ok usb0/4.5.3 usb-mouse connected configured ok usb0/4.5.4 usb-device connected configured ok usb0/4.5.5 usb-storage connected configured ok usb0/4.5.6 usb-communi connected configured ok usb0/4.5.7 unknown empty unconfigured ok |
在前面的示例中,usb0/4.5.1 标识连接至二级外部集线器的端口 1 的设备,二级外部集线器连接至一级外部集线器的端口 5,而一级外部集线器连接至第一个 USB 控制器的根集线器端口 4。
显示特定 USB 设备信息。
例如:
% cfgadm -l -s "cols=ap_id:info" Ap_Id Information usb0/4.5.1 Mfg: Inside Out Networks Product: Edgeport/421 NConfigs: 1 Config: 0 : ... usb0/4.5.2 Mfg: <undef> Product: <undef> NConfigs: 1 Config: 0 ... usb0/4.5.3 Mfg: Mitsumi Product: Apple USB Mouse NConfigs: 1 Config: 0 ... usb0/4.5.4 Mfg: NMB Product: NMB USB KB/PS2 M NConfigs: 1 Config: 0 usb0/4.5.5 Mfg: Hagiwara Sys-Com Product: SmartMedia R/W NConfigs: 1 Config: 0 : ... usb0/4.5.6 Mfg: 3Com Inc. Product: U.S.Robotics 56000 Voice USB Modem NConfigs: 2 ... usb0/4.5.7 |
可以取消配置仍通过物理方式连接至系统的 USB 设备。但是,无法再将驱动程序连接至该设备。请注意, prtconf 输出中会始终显示 USB 设备,即使已取消配置该设备也是如此。
成为超级用户。
例如:
# cfgadm -c unconfigure usb0/4.7 Unconfigure the device: /devices/pci@8,700000/usb@5,3/hub@4:4.7 This operation will suspend activity on the USB device Continue (yes/no)? y |
验证是否已取消配置该设备。
例如:
# cfgadm Ap_Id Type Receptacle Occupant Condition usb0/4.5 usb-hub connected configured ok usb0/4.5.1 usb-device connected configured ok usb0/4.5.2 usb-printer connected configured ok usb0/4.5.3 usb-mouse connected configured ok usb0/4.5.4 usb-device connected configured ok usb0/4.5.5 usb-storage connected configured ok usb0/4.5.6 usb-communi connected configured ok usb0/4.5.7 unknown empty unconfigured ok usb0/4.6 usb-storage connected configured ok usb0/4.7 usb-storage connected unconfigured ok |
成为超级用户。
例如:
# cfgadm -c configure usb0/4.7 |
检验是否已配置 USB 设备。
例如:
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
如果要从系统和 prtconf 输出中删除 USB 设备,但物理位置远离系统,则只需以逻辑方式断开 USB 设备连接即可。从物理角度来看,该设备仍然处于连接状态。但是,从逻辑角度来看,对系统而言设备已断开连接、不可用且不可见。
成为超级用户。
例如:
# cfgadm -c disconnect -y usb0/4.7 |
验证是否已断开该设备的连接。
例如:
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 unknown disconnected unconfigured ok |
使用此过程可以逻辑方式连接先前通过逻辑方式断开连接或取消配置的 USB 设备。
成为超级用户。
例如:
# cfgadm -c configure usb0/4.7 |
验证是否已连接该设备。
例如:
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
对系统而言设备现在可用且可见。
使用此过程可以断开 USB 设备子树连接,该子树是集线器下的设备分层结构(或树)。
成为超级用户。
例如:
# cfgadm -c disconnect -y usb0/4 |
检验是否已断开 USB 设备子树连接。
例如:
# cfgadm usb0/4 Ap_Id Type Receptacle Occupant Condition usb0/4 unknown disconnected unconfigured ok |
如果 USB 设备行为异常,请使用 cfgadm 命令重置该设备,即以逻辑方式删除并重新创建该设备。
成为超级用户。
重置设备。
例如:
# cfgadm -x usb_reset -y usb0/4.7 |
检验是否已连接设备。
例如:
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
使用多重配置 USB 设备时,请牢记以下要点:
USB 设备配置定义了设备向操作系统显示其本身的方式。 此方法不同于其他 cfgadm 部分中介绍的系统设备配置。
某些 USB 设备支持多种配置,但一次只能有一种配置处于活动状态。
通过检查 cfgadm -lv 输出,可以确定多重配置设备。 Nconfigs 将大于 1。
缺省 USB 配置为配置 1。当前配置在 cfgadm -lv 输出中反映为 Config。
只要将设备重新连接至同一个端口,对缺省配置所做的更改在重新引导、热移除以及重新配置设备期间就将始终保持不变。
确保设备未被使用。
更改缺省 USB 配置。
例如:
# cfgadm -x usb_config -o config=2 usb0/4 Setting the device: /devices/pci@1f,0/usb@c,3:4 to USB configuration 2 This operation will suspend activity on the USB device Continue (yes/no)? yes |
检验设备是否已更改。
例如:
# cfgadm -lv usb0/4 Ap_Id Receptacle Occupant Condition Information When Type Busy Phys_Id usb0/4 connected unconfigured ok Mfg: Sun 2000 Product: USB-B0B0 aka Robotech With 6 EPPS High Clk Mode NConfigs: 7 Config: 2 : EVAL Board Setup unavailable usb-device n /devices/pci@1f,0/usb@c,3:4 |
请注意,Config: 现在显示 2。