There are many times when the ZENworks Imaging Distro cannot recognize new hardware with new workstations being released to the public. Often this calls for a new hardware driver. Once the new compiled driver is added to the ZENworks Imaging Distro it works fine. The following section covers all the details starting from identifying the device, and adding the corresponding driver to the Imaging bootable files.
In this article I am going to cover the following topics. How to get the new device details, driver source code, how to compile the driver source code, and how to add the new drivers to the Imaging bootable files.
How to get the device details, driver source, and how to compile the driver source.
Boot through the ZEN Imaging bootable CD (maintenance mode) or any other Linux Distro Live CD, and do the following at the command prompt:
It lists all the hardware detected by the Operating System. If you are specific about a particular device one can mention it as option.
hw_item is one of:
all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu, disk, dsl, dvb, fingerprint, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn, joystick, keyboard, memory, modem, monitor, mouse, netcard, network, partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp, sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, zip.
The following example shows the command to get the details of the NIC.
< – snippet start – >
# hwinfo --network
28: None 00.0: 10701 Ethernet
[Created at net.124]
Unique ID: usDW.ndpeucax6V1
Parent ID: rBUF.SON p7ZhsFD
SysFS ID: /class/net/eth0
SysFS Device Link: /devices/pci0000:00/0000:00:19.0
Hardware Class: network interface
Model: "Ethernet network interface"
Driver Modules: "e1000e"
Device File: eth0
HW Address: 00:0f:fe:4d:8a:bd
Link detected: yes
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #4 (Ethernet controller)
< – snippet end – >
From the above output, the 'Driver Modules' section indicates the device driver module name. 'HW Address' is the MAC address of the Ethernet card.
New drivers should be obtained from the manufacturer. Most device manufacturers have drivers available for free downloading from their Web site. Some drivers are available from www.scyld.com.
Preparing the Build Environment and Building Drivers
For building the driver modules one needs the SLES Operating System with the exact version of the ZENworks Imaging you are using. While installing the SLES OS, choose the default kernel version (by default YaST selects the kernel version depending on the number of cores it detected, still select the default kernel version), and also install gcc, and kernel-source packages. Everything else is the same as a normal installation.
Nearly all Linux drivers are distributed in source code form and need to be compiled before they can be used. 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:
The following example shows how to compile the driver module.
'e1000-3.5.17.tar.gz' is the driver source I got from the intel web site.
#tar -xvzf e1000-3.5.17.tar.gz
If everything goes fine, it creates a file 'e1000.ko' in the current directory. Now add this driver module to the 'initrd', add the following line to linuxrc.config file.
(Ex: newid="0x8086 0x10bd,e1000")
'VendorID' and 'DeviceID' are the vendor Id and device Id of the driver respectively. 'hwinfo' will shows you these Ids.
Adding driver modules to Imaging Resource files
The Novell documentation has a detailed explanation of Adding drivers to 'initrd' and 'root', and the following is a link to that section, and 'section G, Updating ZENworks imaging Resource Files' explains how to modify the imaging resource files.