How to get ZENworks imaging to automatically recognize new NICs

  • 3421576
  • 23-Jan-2008
  • 30-Jun-2014

Environment

Novell ZENworks 11 Configuration Management - 11 Imaging
Novell ZENworks 10 Configuration Management with Support Pack 3 - 10.3 Imaging
Novell ZENworks 10 Configuration Management with Support Pack 2 - 10.2 Imaging
Novell ZENworks 10 Configuration Management with Support Pack 1 - 10.1 Imaging
Novell ZENworks 6.5 Desktop Management - ZDM6.5
Novell ZENworks 7 Desktop Management - ZDM7
Novell ZENworks 7 Desktop Management - ZDM7 Imaging
Novell ZENworks 7.3 Linux Management - ZLM7.3

Situation

Situation:
New network drivers will not load automatically once the new compiled driver is added to the initrd.

How to get the Imaging kernel to recognize new device id of network cards.

How to add "newid" Parameter twice

"newid" Parameter is already used in z_*.cmd

More than one "newid" parameter is needed in z_*.cmd

Resolution

To solve this issue the user will have to do the following steps to get the Linux kernel to load the driver automatically.The following parameter must be passed to the kernel at boot time to get this to work.
newid=","

or use syntax as follows for using second "newid" Parameter
newid=","newid=","

To determine the VendorID and DeviceID do the following:
  1. Boot from the latest ZENworks Imaging bootcd found on download.novell.com
  2. At the imaging menu select "Manual mode".
  3. An error will occur saying that the network module was not loaded, select "OK".
  4. This will get the user to a bash prompt.
  5. Once at a bash prompt type 'hwinfo --netcard'
  6. This will give information about the network card in the workstation.
  7. Look for Vendor, Device and Driver:
  8. Example: Vendor: pci 0x14e4 "Broadcom" and Device: pci 0x169b and Driver: tg3
  9. The hex values will be the numbers passed using the newid parameter. Write the hex values down for vendor and device IDs
Test the newid string:

  1. Reboot the workstation and get back to the imaging menu.
  2. Once at the imaging menu type a newid command - in the example here it would be this:
    newid="0x14e4 0x169b,tg3"
    (Make sure quotes are used like in this example and the only space that's used is between the two hex values.)
  3. Then select manual mode and see what happens. If it does not load automatically it is more than likely a new driver will be needed and compiled. For compiling drivers see documentation on Adding or updating LAN cards.

If the driver is loaded automatically then this parameter can be added to a file for PXE or one of 2 different files for the bootcd. See below for details.

How to add the newid string for a bootcd:
The newid string can either be added to the linuxrc.config file in the initrd or the /boot/i386/loader/isolinux.cfg from the bootcd.iso. It's much easier to add it to the isolinux.cfg from the bootcd.iso.

To modify the /boot/i386/loader/isolinux.cfg from the bootcd.iso, open the ISO file with a utility like winiso and add the parameter to both of these append lines in the isolinux.cfg:

Example of isolinux.cfg BEFORE modification:

label linux
kernel linux
append initrd=initrd ramdisk_size=67584 vga=0x0314 splash=silent mode=2 CDBOOT=YES showopts
label manual
kernel linux
append initrd=initrd ramdisk_size=67584 vga=0x0314 splash=silent mode=5 CDBOOT=YES showopts

Example of isolinux.cfg AFTER modification:

label linux
kernel linux
append initrd=initrd ramdisk_size=67584 vga=0x0314 splash=silent mode=2 CDBOOT=YES showopts newid="0x14e4 0x169b,tg3"
label manual
kernel linux
append initrd=initrd ramdisk_size=67584 vga=0x0314 splash=silent mode=5 CDBOOT=YES showopts newid="0x14e4 0x169b,tg3"
(the newid string needs to be on the same line as the APPEND line)

This second way to add the newid string for the bootcd is more difficult: modify the initrd and linuxrc.config file for the bootcd, see Modifiying and updating the Imaging resource files

How to add the newid string for PXE:
From the ZCC, Select "Configuration->Device Management->Preboot Services"
Add the "newid" parameter to the "PXE Kernel Boot Parameters" box.
 
Alternately, the configuration files can be updated manually on the PXE servers to add these parameters.

Netware:
Add the deviceid parameter to the z_auto.cmd and z_maint.cmd files found in the sys:\tftp\cmds directory.

Linux:
Add the deviceid parameter to the z_auto.cmd and z_maint.cmd files found in /srv/tftp on Linux servers.

Windows:
Add the deviceid parameter to the z_auto.cmd and z_maint.cmd files found in C:\Program Files\ZEN Preboot Services\tftp\Data\cmds on Windows server.

***NOTE: See ZDM 7 Imaging File Locations


Example of CMD / CFG file before modification:
KERNEL boot/linux
APPEND initrd=boot/initrd vga=0x314 install=tftp://$TFTPIP/boot rootimage=/root PROXYADDR=$PROXYADDR TFTPIP=$TFTPIP splash=silent PXEBOOT=YES mode=5

Example of CMD /CFG file after modification:

KERNEL boot/linux
APPEND initrd=boot/initrd vga=0x314 install=tftp://$TFTPIP/boot rootimage=/root PROXYADDR=$PROXYADDR TFTPIP=$TFTPIPsplash=silent PXEBOOT=YES mode=5 newid="0x14e4 0x169b,tg3"
(the newid string needs to be on the same line as the APPEND line)

For more information on adding ANY parameter to PXE see: TID 3004541"ACPI and PCMCIA FAQ with ZENworks Imaging".

Additional Information

Root Cause:
There are many times when Linux can not 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 Linux kernel, Linux will still not recognize the new driver and will not load the driver automatically. If the user loads it manually it will work.



To determine whether the imaging version being used has the driver needed, boot up with the BootCD and go into maintenance mode to get to a bash prompt. From the bash prompt do either:
modprobe -l |grep
or
ls /lib/modules/-default/updates/initrd/

NOTE: For ZDM7 only, if the ENGL Imaging Toolkit is being used as a replacement to initrd for pxe boot, the z_*.cmd files are not used. See KB 2007020 at the ENGL site at https://www.engl.co.uk/Support.aspx for instructions on using defmenu.dat.