Next Previous Contents

4. 如何对付 PnP 卡

4.1 介绍

今天, 大部分新的内置插卡是 PnP 的. 其中的一些卡有跳线(或类似的)可以把卡设置为非 PnP. 因为许多 Linux (和 Dos/Windows)程序可以处理 PnP, 最好保留卡的 PnP 功能. 假如你把内核升级为支持 PnP, 它不仅会配置硬件而且会把硬件配置信息提供给驱动程序, 这样你就不需要配置它们了. 例如, 对于串口你就不必使用 "setserial" 了.

假如你有一块 PnP 卡, 你会有下面一个或多个选项来配置它:

4.2 禁用 PnP ?

许多卡的 PnP 功能无法抑制掉. 即使你有机会这样做, 由于下面的原因你也许不会这样做.

  1. 假如在同台机器上有 MS Windows, 你也许希望在 MS Windows 下可以用 PnP 来做不同的配置.
  2. IRQ 等资源有限, 除非使用 PnP, 否则很难配置.
  3. 假如需要使用 Dos/Windows 下的软件设置为非 PnP 方式, 可有一天你不能使用 Dos/Windows 了, 因此很难再改变配置.
  4. 你有(或将有)其它 PnP 设配需要配置, 所以你要无论如何都需要 PnP 功能.
设备一旦被设置为非 PnP 配置方式, 它们将不能被 PnP 软件或 BIOS 配置. (除非移去跳线或使用配置软件打开 PnP 功能)

4.3 BIOS 配置 PnP

想这样做, 你的 BIOS 必须支持 PnP. 得到关于你的 BIOS 更多的信息, 看有关的 Web 站点. 一些 BIOS 只有最少的 PnP 功能, 它会试图把困难的配置工作交给 Windows 工具(在 Linux 下不可能). 在这种情况下如果 BIOS 维护一个配置数据库的话, 你也需要用 DOS/Windows 下的 ICU 来设置这数据库.

首先设置你的 BIOS 为 ""Not a PnP Operating System"(没有 PnP 的操作系统). 看 配置 PnP BIOS. 这会使 BIOS 完成全部配置工作, 而不是把剩馀的交给操作系统.

BIOS 的非挥发数据库叫 ESCD (Extended System Configuration Data). 它不仅存储 PnP 设备的配置并且存储非 PnP 设备的信息用于避开冲突. 当你安装新的非 PnP 设备应在安装前用ICU(Intel Configuration Utility)告诉 ESCD 关于设备的信息. 你也需要运行 ICU 告诉 ESCD 关于已经存在机器中的非 PnP 设备的信息(除非有人已经做过了).

ESCD 通常保存在芯片中, 但有时会保存在硬盘上?? (译者想: COMPAQ 的配置信息有些是否保存在硬盘上) 使用 Linux 操作系统的机器的 BIOS 每次启动时是这样配置. 你也许想纪录 ICU (和 BIOS)是如何配置的(或打印出来). 然而, 假如你增加一个新的非 PnP 设备就需要再次运行 ICU. 假如它是 PnP 的, BIOS 会自动配置它, 并尽量不改变机器中已经存在的设备的配置. 但为了给新设备分配它需求的资源, 有时不得不改变已有设备的配置. 假如这发生了, 你需要找到什麽改变了(看 /proc/pci 和使用 "pnpdump"命令)并且做出相应改变.

注意: 在 Dos/Windows 下配置信息还会放在硬盘上的Windows文件中, 这样操作系统知道每个设备的情况. 对于自动检测设备的 Linux 不会发生这种事情.

4.4 Isapnp

仅用于 ISA 总线上的 PnP 设备. 在启动时运行此程序将按照你在 /etc/isapnp.conf 的设定来配置这些设备.你需要 isapnptools 包, 包含在许多发行版本中. 输入 "locate pnp" 来查找你是否拥有 isapnp. 假如你的 Linux 自动安装了 isatools, isapnp 也许在启动时已经运行. 对于这种情况, 你需要做的就是编辑 /etc/isapnp.conf (用 man isapnp.conf 得到有关信息). 因为你通过编辑配置文件来决定如何设置设备, 这样做有点象手工配置 PnP. 假如这样使用 "isapnp" 并且有一个 PnP BIOS, 你将告诉 BIOS 你有一个 PnP 的操作系统吗?? (翻译者认为: 如果你的 Linux 内核不支持 PnP, 回答没有 PnP 操作系统, 让 BIOS 完成所有的 PnP 设置工作, 但你不要试图去修改设备的资源, 修改自己的配置文件即可.)

假如你曾经运行 isapnp 配置 ISA-PnP 设备,但每次启动时运行isapnp失败, 那麽假如你在同台机器上有 Windows 95/98 的话可能会发生: 当使用 Windows 95/98 时, Windows 也许会以不同的方式配置你的 PnP卡, 当你返回使用 Linux 时, 卡就不会正常工作.

4.5 修补核心让 Linux 支持 PnP

有一个巨大的补丁来做这些. 新的核心是稳定的并且包含文档: serial.txt 说明如何处理串行口. 它在 /proc 目录中提供"文件", 所以你可以知道这些是如何进行的并能用 echo 命令来设置配置. 一个问题是许多驱动程序不知道这些, 你还需要使用传统的配置文件, 等. 如何配置, 请看 http://lucifer.hemmet.s-hem.chalmers.se/~dwh

4.6 PnP 软件和文档


Next Previous Contents