32.6. 错误分析

32.6.1. 日志文件

除非另行指定,否则 hotplug 只向 syslog 发送一些重要讯息。要获得更多信息,请将文件 /etc/sysconfig/hotplug 中的变量 HOTPLUG_DEBUG 设置为 yes。如果将此变量设置为值 max,则将为所有热插拔脚本记录每个 shell 命令。这意味着 syslog 储存所有讯息的 /var/log/messages 将变得很大。但是,因为 syslog 在引导进程期间在 hotplugcoldplug 后启动,所以第一条讯息可能未被记录。如果这些讯息对您很重要,则通过变量 HOTPLUG_SYSLOG 指定不同的日志文件。有关此主题的信息可以在 /etc/sysconfig/hotplug 中获得。

32.6.2. 引导问题

如果计算机在引导进程中挂起,则禁用 hotplugcoldplug,方法是在引导提示符下输入 NOHOTPLUG=yesNOCOLDPLUG=yes。由于热插拔处于取消激活状态,所以内核将不发出任何热插拔事件。在正在运行的系统中,可以输入命令 /etc/init.d/boot.hotplugstart 激活热插拔。将发出并处理在此之前生成的所有事件。要拒绝已排队的事件,首先在 /proc/sys/kernel/hotplug 中输入 /bin/true,过一段时间后,将输入重设置为 /sbin/hotplug。因为冷插拔处于取消激活状态,所以将不应用静态配置。要应用静态配置,稍后输入 /etc/init.d/boot.coldplug start

要查明是否是 hotplug 装载的特定模块导致此问题的产生,请在引导提示符下输入 HOTPLUG_TRACE=<N>。在实际装载模块之前,将在屏幕上列出所有要装载的模块的名称,显示时间为 N 秒。在此过程中,您不能进行干预。

32.6.3. 事件记录器

udev 规则会为每个事件执行底稿 /sbin/hotplugeventrecorder。如果目录 /events 存在,则所有热插拔事件都以各自文件的形式储存在此目录中。因此,可以重新生成事件以进行测试。如果此目录不存在,则不记录任何内容。