sdt dud - tool for creating update media
sdt dud [options]
The SUSE Linux distributions support a concept called Update Medium otherwise known as Driver Update Disk or DUD. The Update Medium is basically a directory structure containing kernel modules, YaST2 modules, and rpm packages. The kernel and YaST modules are used during the installation and can provide updates required for the installation. The rpm packages are installed to the target system at the end of the distro installation just before first boot.
In addition to kernel modules, YaST modules and rpm packages, the update media can deliver a tar-ball that is extracted to the root file-system of the target installation.
Lastly, the update media can provide a set of files to be written to the install environment that can be additions to or replacements of the standard installation system files.
The directory structure of the update media is documented at ftp://ftp.suse.com/pub/people/hvogel/Update-Media-HOWTO/Update-Media-HOWTO.html
To create an update media use the ‘dud’ sub-command of the sdt tool.
sdt dud -u updates -b sles11sp1-x86_64
The -ur/--updatedir option specifies a directory where the sdt command will find the files to be added to the Update Medium. The -b/--base option specifies the location of the base OS media (DVD/CD1) of the OS that the Update Medium is to be used with.
Points to the contents of the initial installation media of the SUSE Linux Enterprise Product that the driver kit is designed to work with. Option can point to either a directory containing the contents of the installation media, or the media ISO image itself.
The base media is accessed to determine the proper DUD file structure whose specification is located in the linuxrc.config file on the initrd of the bootable media.
This option is not required if using the --distro and --arch-version options.
Directory to be scanned for update files to be added to driver kit. Directory will be scanned for kernel packages, KMP packages, YaST2 modules (.ybc), and tar files (.tgz).
Work directory. Created if non-existent and remains after completion. If this option is not specified, temporary directory is created and deleted on exit.
Unpack update RPMs into DUD inst-sys location. Only user-space (non-KMP and non-kernel) packages are unpacked.
Specifies the base distro that the Update Media is for e.g. “suse”
Specifies the architecture-version path of the Update Media e.g. “x86_64-sles11”
By default DUDs are generated to work with both SUSE Linux Enterprise Server and Desktop products. Use this option to disable this and have the DUD structure created to only work with the specified base product.
The top level path of the update medium is constructed as:
/linux/[distro]/[arch]-[version]
i.e.
/linux/suse/x86_64-sles11
The update media path for the target is configured in the linuxrc.config located in the initrd file on the base media. The SUSE driver tools will extract the linuxrc.config file and pull the needed information from it.
Optionally the distro and arch-version parts can be supplied via the following command line options:
-d --distro=DISTRO
-v --version=ARCH-VERSION
For example:
sdt dud -u updates -d suse -v x86_64-sles11
The above command creates the following directory structure:
|-- linux
| `-- suse
| `-- x86_64-sles11
| |-- install
| | `-- rpms
| `-- modules
NOTE: The -d/--distro option defaults to suse so it’s not required when building for a suse distribution.
All RPMs in the install directory will installed. YaST will attempt to install RPMs in this directory using the following command:
rpm -Ufv *.rpm"
While this works OK for one or two RPMs that are guaranteed to install without any dependency issues, it breaks down when used for installing KMPs. When delivering KMP packages, you can’t be sure which kernel flavor will end up on the installed system. Therefore all matching KMP flavors must be provided. When providing all KMP flavors the rpm command that YaST calls will try to install them all in one swipe. This command will fail as soon as a KMP that does not match the installed kernel flavor(s) is attempted to be installed.
To remedy this situation, the SUSE Driver Tools puts the rpm packages in a sub-directory called rpms and installs an update.post script that will attempt to install each package with a separate call to rpm. In addition, the script will log the installation process to /var/log/DUD.log.