编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

避免测试系统中发生数据丢失

驱动程序错误有时会导致系统无法引导。通过采取预防措施(如本节中所述),可以避免在此情况下重新安装系统。

使用备用引导环境

许多与驱动程序相关的系统文件都很难重新构造(如果可以重新构造)。如果安装期间驱动程序使系统崩溃,则诸如 /etc/name_to_major/etc/driver_aliases/etc/driver_classes/etc/minor_perm 之类的文件可能会损坏。请参见 add_drv(1M) 手册页。

为保证安全,请在正确配置测试计算机后使用 beadm(1M) 命令创建根文件系统的备份副本。如果打算修改 /etc/system 文件,请在修改之前生成该文件的备份副本。

通过替代内核进行引导

有关详细信息,请参见Chapter 4, Administering Boot Environments, in Creating and Administering Oracle Solaris 11.2 Boot Environments Booting From a ZFS Root File System in Managing ZFS File Systems in Oracle Solaris 11.2

考虑替代备份计划

如果将系统连接到网络,则可将测试计算机添加为服务器的客户机。如果出现问题,可从网络引导系统。然后,便可挂载本地磁盘,并进行任何修复。也可以直接从 Oracle Solaris 系统 CD-ROM 引导系统。

另一种从灾难中恢复的方法是获取另一个可引导的根文件系统。使用 format(1M) 创建一个大小与原始分区完全相同的分区。然后,使用 dd(1M) 复制可引导的根文件系统。创建副本后,在新文件系统上运行 fsck(1M) 以确保其完整性。

以后,如果系统无法从原始根分区进行引导,可引导备份分区。可以使用 dd(1M) 将备份分区复制到原始分区。可能会遇到这样的情况,即使根文件系统未损坏,也无法引导系统。例如,只有引导块或引导程序损坏。在这种情况下,可使用询问功能 (–a) 选项从备份分区进行引导。然后,将原始文件系统指定为根文件系统。

捕获系统故障转储

当系统出现紧急情况时,系统会将内核内存的映像写入转储设备。缺省情况下,该转储设备是最合适的交换设备。该转储是系统故障转储,它与应用程序生成的核心转储类似。在系统出现紧急情况后进行重新引导时,savecore(1M) 会检查转储设备中是否存在故障转储。如果找到转储,savecore 将生成名为 unix.n 的内核符号表的副本。然后,savecore 实用程序将在核心映像目录中转储名为 vmcore.n 的核心文件。缺省情况下,核心映像目录为 /var/crash/machine_name。如果 /var/crash 没有足够的空间用于核心转储,系统将显示所需的空间,但不实际保存转储。然后,可针对核心转储和已保存的内核使用 mdb(1) 调试器。

在 Oracle Solaris 操作系统中,缺省情况下会启用故障转储。dumpadm(1M) 命令用于配置系统故障转储。使用 dumpadm 命令可以验证故障转储是否已启用,并确定保存核心文件的位置。


注 - 可以阻止 savecore 实用程序填满文件系统,即在要保存转储的目录中添加一个名为 minfree 的文件。在此文件中,指定在 savecore 运行后保持可用的千字节数。如果没有足够的可用空间,则不保存核心文件。