SDT-DUD(1) SUSE Driver Tools

Scott Bahling

23-07-2013

NAME

sdt dud - tool for creating update media

SYNOPSIS

sdt dud [options]

DESCRIPTION

Update Medium

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

Creating Update Medium (DUD) with SUSE Driver Tools

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.

OPTIONS

-b BASE_MEDIA, –base BASE_MEDIA

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.

-u UPDATEDIR, –updatedir=UPDATEDIR

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).

-w WORKDIR, –workdir WORKDIR

Work directory. Created if non-existent and remains after completion. If this option is not specified, temporary directory is created and deleted on exit.

–instsys

Unpack update RPMs into DUD inst-sys location. Only user-space (non-KMP and non-kernel) packages are unpacked.

-d, TARGET_DISTRO –distro TARGET_DISTRO

Specifies the base distro that the Update Media is for e.g. “suse”

–arch-version DISTRO_VERSION

Specifies the architecture-version path of the Update Media e.g. “x86_64-sles11”

–no-uni-dud

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.

DISTRO PATH

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.

INSTALL DIRECTORY

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.