{{:Design Warning}}
During the installation of diskfull node or netboot of diskless node, the initrd needs to supply the drivers to drive the devices like network card, scsi card which are needed during the installation or netboot. But sometimes, the drivers of some kinds of device are not included in the default initrd for diskfull. Linux supplies an approach which can load the "driver update disk" during the diskfull installation. The driver update disk is a formatted image which including the drivers and related configuration files.
During the installation, admin can specify the kernel parameter "dd=path:/xx" or add the "driverdisk xx" entry in the kickstart/autoyast configuration file to make the installation program (anaconda/linuxrc) to load drivers from the "driver update disk" before the real installation.
The deployment of Operating System is an important function for xCAT, how to use the "driver update disk" to drive the devices during the xCAT controlled installation/netboot will be described in this mini design.
User needs to put the driver update disks into the directory "/<install>/ driverdisk/<os>/<arch>/" base on the os and arch that the driver disk can support. xCAT will look for the driver update disk from this directory during the "nodeset command". Then hack the driver update disk and put drivers into the initrd and do some proper configuration so that the driver can be loaded automatically during the installation or netboot.
xCAT has three possible methods to load the driver update disk.
Method 1 can NOT handle the network driver, so it is NOT considered.
Method 2 is good, but it has two problems: 1. xCAT still needs to hack the "driver update disk"; 2. For the redhat, the"driver update disk" can NOT handle the case that the initrd has the driver same with the driver in the "driver update disk". That means if the initrd has an old driver, then the old driver will be loaded first and the new driver in the "driver update disk" will not be used. Since the "driver update disk" is loaded later than the pci probe in which time the old driver has been loaded, and the new driver in the "driver update disk" will not replace the old one.
Method 3 is a little complex, but it can handle all the cases.
Base on these three methods, the redhat will merge all the drivers form driver disk to the initrd; the sles will insert the driver disk into the initrd and use the kernel parameter to load the driver disk.
The implementation steps:
[Rhel <install>/ driverdisk/<os>/<arch>/"
[Rhel >= 6.0] (The ppc and x86 have the same process)
For diskless netboot, there is no installation programs anaconda or linuxrc can help to load the "driver update disk" during the netboot process. xCAT has to extract the drivers out from "driver update disk" and insert them into the initrd. The initrd of diskless has different format with the diskfull one.
The implementation steps:
For the Redhat, after the installation, the drivers in the "driver update disk" will not be installed in the new installed system.
For the sles, if the driver update disk has the kmod rpm packages, the kmod will be installed into the new installed system.
If user wants to install a driver for a new installed system, the otherpkgs.pkglist can be used to install the kernel module rpm packages during the installation.