对区域中可用的一组设备进行了限制,以防止某个区域中的进程干扰在其他区域中运行的进程。例如,区域中的进程不能修改内核内存,也不能修改根磁盘的内容。因此,缺省情况下,只提供被视为可以在区域中安全使用的特定伪设备。在特定区域内,可使用 zonecfg 实用程序使其他设备变得可用。
Solaris 系统使用 devfs(7FS) 手册页中所述的 devfs 文件系统来管理 /devices。此名称空间中的每个元素都表示指向硬件设备、伪设备或 nexus 设备的物理路径。名称空间是设备树的一种表现形式。同样,文件系统由目录和特定于设备的文件分层结构填充。
现在作为 /(根)文件系统一部分的 /dev 文件分层结构由指向 /devices 中的物理路径的符号链接或逻辑路径组成。应用程序引用指向 /dev 中设备的逻辑路径。/dev 文件系统使用只读挂载回送挂载到区域。
/dev 文件分层结构由以下列出的组件所组成的系统进行管理:
devfsadm(请参见 devfsadm(1M) 手册页)
syseventd(请参见 syseventd(1M) 手册页)
libdevinfo 设备信息库(请参见 libdevinfo(3LIB) 手册页)
devinfo 驱动程序(请参见 devinfo(7D) 手册页)
重新配置协调管理器 (Reconfiguration Coordination Manager, RCM)(请参见《系统管理指南:设备和文件系统》中的“重新配置调整管理器 (Reconfiguration Coordination Manager, RCM) 脚本概述”)
在建立 /dev 路径名之前,依赖于 /devices 路径名的子系统不能在非全局区域中运行。
可能拥有需要指定给特定区域的设备。允许非特权用户访问块设备可能会导致通过使用这些设备造成系统出现紧急情况、总线复位或其他不良影响。在进行此类指定之前,请考虑以下问题:
在为特定区域指定 SCSI 磁带设备之前,请查看 sgen(7D) 手册页。
将物理设备放入多个区域可以在区域之间创建隐藏通道。使用此类设备的全局区域应用程序可能会存在非全局区域危及数据或损坏数据的风险。
在非全局区域中,可以使用 modinfo(1M) 手册页中所述的 modinfo 命令来检查已装入的内核模块的列表。
大多数与内核、设备和平台管理相关的操作都不能在非全局区域内部执行,因为修改平台硬件配置会破坏区域安全模型。这些操作包括:
添加和删除驱动程序
明确装入和卸载内核模块
启动动态重新配置 (dynamic reconfiguration, DR) 操作
使用影响物理平台状态的功能
以下实用程序无法在区域中使用,因为它们所依赖的设备通常不存在:
cdrecord(请参见 /usr/share/man/man1 目录中的手册页。)
cdrw(请参见 cdrw(1) 手册页)
rmformat(请参见 rmformat(1) 手册页)
add_drv(请参见 add_drv(1M) 手册页)
disks(请参见 disks(1M) 手册页)
prtconf(请参见 prtconf(1M) 手册页)
prtdiag(请参见 prtdiag(1M) 手册页)
rem_drv(请参见 rem_drv(1M) 手册页)
eeprom 实用程序可用于查看区域中的设置,但不能用于更改设置。有关更多信息,请参见 eeprom(1M) 和 openprom(7D) 手册页。