Novell Home

Modifying ZENworks 7 SP1 Imaging Engine

Novell Cool Solutions: Feature
By Matthew Nelson

Digg This - Slashdot This

Posted: 13 Jul 2007

This guide shows you how to modify the ZENworks 7SP1 imaging engine. This guide is for modifying the imaging engine based on the SLES 10 kernel (Hot Patch 1 or greater for ZENworks 7 SP1).

First you need to copy the initrd file from either a ZENworks imaging boot CD or from the TFTP server to your Linux workstation. Once you have a copy of the file locally you can begin to extract the initrd file.

  1. First of all you need to rename the initrd file to initrd.gz
    mv initrd initrd.gz

  2. You can now gunzip the file
    gunzip initrd.gz

Now you have a uncompressed initrd file.

This is where the process now changes from modifying the ZENworks Imaging Engine based on the SLES 9 kernel. The SLES 9 based initrd is a gzip compressed ext2 image file whereas the SLES 10 based initrd file is a gzip CPIO (similar to tar) archive file.

  1. You need to create a folder to extract the CPIO archive to.
    mkdir initrd_extracted (or whatever else you so desire)

  2. You then need to change to the newly created directory.
    cd initrd_extracted

  3. Now you need to extract the archive.
    cpio -iv <../initrd

  4. Once this has completed you can do a directory listing of the initrd_extracted folder and you will see the following:

  5. Now you can either add your own driver modules such as NIC drivers or you can add support for newer hardware using existing drivers if available.

  6. To add support for newer hardware such as ethernet cards, the easiest way is to modify the linuxrc.config file in the root of the initrd filesystem. For example, to add support to the ZENworks 7SP1 Hot Patch 5 imaging engine to support the Broadcom Netlink 5787 Gigabit Ethernet nics you would add the following to the end of the linuxrc.config using an editor such as vi.

    newid "0x14e4 0x1693,tg3"

    This tells the linux kernel that if it detects that particular nic it should load the tg3 kernel module (Broadcom nic driver).

  7. To find the PCI id for the hardware you need to use the lspci -n command. This shows you the vendor id and device id of the hardware in your machine. To learn more about this visit this site. You can see from the PCI DATABASE website that the "0x14e4" vendor id corresponds to the Broadcom Corporation. The "0x1693" is the device id for the Netlink 5787 Gigabit Ethernet card. So add the above line to make the device known by the kernel.

  8. Once you have added the appropriate kernel modules and modifed the linuxrc.config file accordingly you can now re-create the cpio archive and gzip ready for use by entering the following from within the root of the initrd_extracted (or whatever you called it) directory:

    find -print |cpio -o -H newc |gzip >../initrd

    IMPORTANT: This must be done from within the root of the initrd file system (in this case the initrd_extracted) otherwise your initrd file won't be in the correct format and will not work properly. This is vital.

Now you have a newly modified initrd file you can either copy it back to your tftp folder or use iso editing software to overwrite the original initrd file located in the /boot/i386/loader/ directory on the ZENworks boot CD.

Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions.

© 2014 Novell