G.5 添加或更新 LAN 驱动程序

LAN 卡制造商在开发和发行新的 LAN 适配器时,通常也会发行新的或已更新的驱动程序。有时,新 LAN 卡可以使用旧版驱动程序正常运行,而有时旧版驱动程序无法识别新的 LAN 卡且拒绝装载。有时虽然可以装载旧版驱动程序,但 LAN 卡会出现严重的性能问题。要获得新 LAN 卡的完全性能,则应使用新的驱动程序。

以下几节说明如何获取或编译驱动程序:

如果需要使用特定的参数装载驱动程序,请参见部分 G.5.3, 使用参数装载驱动程序

G.5.1 获取驱动程序

您应从制造商获取新版 LAN 卡驱动程序。大多数 LAN 卡制造商会在网站提供免费下载的驱动程序。部分驱动程序可从 www.scyld.com/network 获取,而 Broadcom* BCM5700 驱动程序的源文件可以从 http://www.broadcom.com/drivers/downloaddrivers.php 下载。

如果制造商已专为 ZENworks 使用的内核版本编译了二进制驱动程序,则您可以获取该驱动程序,并使用上述其中一种更新方法添加该驱动程序。有关详细信息,请参见部分 G.5.2, 构建驱动程序

G.5.2 构建驱动程序

几乎所有 Linux 驱动程序都以源代码的形式提供,需要经过编译才能使用。请遵循新驱动程序中随附的制造商说明来构建驱动程序模块。许多驱动程序可以通过将自身构建到内核中的方式构建,但是,我们建议将 LAN 卡驱动程序构建为外部内核模块。

在构建 LAN 卡驱动程序时,请确保用于构建的计算机与映像环境使用相同的内核。如果有一个 LAN 卡驱动程序在映像环境中不装载,通常意味着构建环境和映像环境中有不匹配的情况。

可以使用以下命令查找 Linux 环境的当前内核版本:

uname -r

要构建您的驱动程序:

获取 Linux 源代码树

要编译模块,需要有包含与 ZENworks 内核匹配的配置的 Linux 源代码树。

要使用 Linux 源代码树:

  1. 获取映像发行套件的当前内核版本:

    1. 将管理区域中的任何设备引导到 ZENworks Imaging 维护模式。

    2. 运行 uname -r 命令。

      即会显示显示映像发行套件的内核版本。

  2. Novell 下载网站下载步骤 1.b 中获取的内核版本的内核来源 RPM。

    内核来源 RPM 文件名的格式如下:

    kernel-source-内核版本.i586.rpm

    例如,kernel-source-2.6.27.29-0.1.i586.rpm 为内核版本 2.6.27.29-0.1-default 的源代码。

  3. 安装所下载的内核来源 RPM。

    RPM 将安装到 /usr/src 目录,并会创建以下子目录:

    • /usr/src/linux-内核来源版本

    • /usr/src/linux-内核来源版本-obj

    例如,安装 kernel-source-2.6.27.29-0.1.i586.rpm 时,会创建以下目录:

    • /usr/src/linux-2.6.27.29-0.1

    • /usr/src/linux-2.6.27.29-0.1-obj

  4. 要创建源代码树的链接:

    1. 要切换到 /usr/src 目录,请输入:

      cd /usr/src
      
    2. 如果该目录中有 Linux 软链接,请删除它。

    3. 创建新的 Linux 软链接,如:

      ln -s linux-2.6.27.29-0.1 linux
      

准备好 Linux 内核源树和软链接来编译模块后,继续编译模块

编译模块

要手动编译模块:

  1. 安装源代码。

    遵循制造商的指导安装源代码。

    模块源代码通常位于 /usr/src 下的目录中。模块源文件通常为 gzipped tar 格式(.tar.gz.tgz)的文件。该文件可能也是一个经过 bzip 的文件(.bz2)。

  2. 更改源代码的目录,并根据模块 Readme 中提供的编译指导对源代码进行编译。

  3. 在为 ZENworks 编译模块后,请选取生成的 .ko 模块文件(确保选择正确的模块名称而不是工作 .ko 文件),然后使用驱动程序更新方法将其放置在 initrd 文件系统中以安装该模块文件。

G.5.3 使用参数装载驱动程序

如果要在 linuxrc 处理期间装载某个模块,而 linuxrc 无法识别需要装载该模块,或者您想要指定装载参数,则可以在 linuxrc.config/info 文件中输入一行。然后,此文件需要在 initrd 文件系统中更新。

您可能需要使用特定的参数装载 LAN 卡驱动程序模块。可以使用如下一行执行此操作:

insmod="moduleName parm=xxx"

这种行最常见用于使用特定的参数(如全双工或特定速度)装载 LAN 卡驱动程序。