As LAN card manufacturers develop and release new LAN adapters, they usually release new or updated drivers as well. Sometimes the new LAN card functions properly with an earlier driver, and sometimes the earlier driver does not recognize the new LAN card and refuses to load. Occasionally, the older driver does load, but the LAN card exhibits serious performance problems. To obtain the full performance capabilities of a new LAN card, you should use the new driver.
The following sections explain how to obtain or compile drivers:
If you need to load your drivers with specific parameters, see Section F.5.3, Loading Drivers with Parameters.
New LAN drivers should be obtained from the manufacturer. Most LAN card are free to download from the manufacturers web site. Download the appropriate LAN drivers based on the machine’s NIC (Network Interface Card) specifications.
If a manufacturer has a binary driver compiled specifically for the kernel version used by ZENworks, you can obtain the driver and use one of the update methods to add the driver. For more information, see Section F.5.2, Building Drivers.
Nearly all Linux drivers are distributed in source code form and need to be compiled before they can be used. Follow the manufacturer’s instructions included with the new driver to build the driver module. Many drivers can be built in such a way that they are built into the kernel itself; however, we recommend that LAN drivers be built as external kernel modules.
When building your LAN drivers, make sure that your build machine uses the same kernel as the imaging environment. If you have a LAN driver that doesn’t load in your imaging environment, it usually means that you have a mismatch between your build environment and the imaging environment.
You can find the current kernel version of your Linux environment by using the following command:
uname -r
To build your drivers:
To compile a module, you need the Linux source code tree that contains the configuration matching the ZENworks kernel.
To use the Linux source code tree:
Obtain the current kernel version of the Imaging distro:
Boot any device in the Management Zone into the ZENworks Imaging Maintenance mode.
Run the uname -r command.
This displays the kernel version of the Imaging distro.
From the Novell Downloads Web site, download the kernel source RPM for the kernel version obtained in Step 1.b.
The kernel source RPM filename is in the following format:
kernel-source-kernel_version.i586.rpm
For example, kernel-source-2.6.27.29-0.1.i586.rpm is the source code for the kernel version 2.6.27.29-0.1-default.
Install the downloaded kernel source RPM.
The RPM is installed to the /usr/src directory, and the following subdirectories are created:
/usr/src/linux-Kernel_source_version
/usr/src/linux-Kernel_source_version-obj
For example, the following directories are created when you install 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
To create a link to the source tree:
To change to the /usr/src directory, enter:
cd /usr/src
If there is a Linux soft link in the directory, delete it.
Create the new Linux soft link, such as:
ln -s linux-2.6.27.29-0.1 linux
After you have the Linux kernel source tree and soft link ready for compiling the module, continue with Compiling the Module.
To compile the module:
Install the source.
Follow the manufacturer’s instructions to install the source.
Normally, the module source is in a directory under /usr/src. Module source files usually come in the form of a gzipped tar file (.tar.gz or .tgz). The file might also be a bzipped file (.bz2).
Change directories to the source and compile the source according to the compilation instructions provided in the module’s Readme.
When you have your module compiled for ZENworks, take the generated .ko module file (make sure you select the proper module name and not a work .ko file) and install it by using the driver update method or placing it in the initrd file system.
If there is a module that you want to load during the linuxrc processing time, and if linuxrc does not recognize that it needs to be loaded or you want to specify the load parameters, you can enter a line in the linuxrc.config or /info file. This file then needs to be updated in the initrd file system.
You might need to load a LAN driver module with specific parameters. You can do this with a line like:
insmod="moduleName parm=xxx"
This type of line is most commonly used to load a LAN driver with specific parameters, such as full duplex or specific speed.