MKDUD(1) | User Commands | MKDUD(1) |
NAME¶
mkdud - create and manage SUSE Linux driver updates
SYNOPSIS¶
mkdud [OPTIONS]... SOURCES...
DESCRIPTION¶
mkdud manages driver updates (DUD) for SUSE Linux. You can create them, view their contents, and combine several driver updates into a single one.
General Options¶
--version
--save-temp
--help
Verify Driver Update¶
-s, --show=DUD
Create Driver Update¶
-c, --create=DUD
-a, --arch=ARCH
Note: if you don’t set the architecture and mkdud can’t find a hint in SOURCES either an update for all supported architectures is created.
-d, --dist=DIST
Note 1: sle15 is a short hand for specifying both sles15 and sled15.
Note 2: There are no separate names for service packs. So sles15-sp1 is the same as sles15. But see --condition below for a way to target specific service packs.
See Distribution (Product) Names below for more details.
Option can be repeated to specify several distribution targets.
--condition=SCRIPT
Note: For Tumbleweed you can pass the snapshot version as N to limit the DUD to a specific snapshot.
Option can be repeated to specify several conditions.
-p, --prio=NUM
-n, --name=NAME
Option can be repeated to specify a multi-line name.
-x, --exec=COMMAND
Note: The commands are run just before kernel modules are updated.
-i, --install=METHODS
--config=KEY=VALUE
Option can be repeated to set several options.
--no-docs
This is the default setting.
--keep-docs
--force
--no-fix-yast
See Consistency checks.
--no-fix-dist
See Consistency checks.
--no-fix-usr-src
See Consistency checks.
--no-fix-adddir
See Consistency checks.
--format=FORMAT
Default FORMAT is cpio.gz (gzip compressed cpio archive).
Note: please check README before changing the default.
--prefix=NUM
See README.
--sign
--detached-sign
--sign-key=KEY_FILE
--sign-key-id=KEY_ID
If both --sign-key and --sign-key-id are specified, --sign-key-id wins.
Note: gpg might show an interactive dialog asking for a password to unlock the key.
--volume
--vendor
--preparer
--application
--obs-keys
See Adding RPMs below.
CONFIGURATION FILE¶
mkdud reads $HOME/.mkdudrc at startup. There’s only one possible entry:
sign-key=KEY_FILE
sign-key-id=KEY_ID
DRIVER UPDATE SOURCES¶
To create a driver update you need SOURCES. SOURCES may be:
ADDING RPMS¶
If you add RPMs to SOURCES, these RPMs can be used to update the installation system and/or to be installed in the target system. See --install option on how to choose.
The best way is to go for repo to install them in the target system as then they are handled by the package manager and package dependencies are automatically resolved.
But there are two catches:
This is normally no problem if you update a package (as it’s likely required, else you wouldn’t want to update it) but if you try to install some uncommon package it might not be selected.
For this, mkdud will package any pgp public key files you add to SOURCES in a way so that they are used by the package manager during installation. They will not be installed in the target system.
To ease this even more, the --obs-keys option causes mkdud to retrieve the necessary keys for each RPM in SOURCES from the build service using the osc tool. Note that you must configure the build service access via $HOME/.oscrc for this to work.
DISTRIBUTION (PRODUCT) NAMES:¶
The --dist option accepts these values (case-insensitive; X, Y: decimal numbers):
As a shorthand and to avoid common mistakes, these aliases do also work (X, Y: decimal numbers):
SUSE Linux Enterprise (Server + Desktop) X + openSUSE Leap X.Y
SUSE Linux Enterprise (Server + Desktop) X
Note 1: there aren’t any products anymore that actually use sledX, even SLED uses the sles DUDs meanwhile. Because of this, please just use sleX when creating a DUD for a SUSE Linux Enterprise product.
Note 2: CaaSP releases are based on SLE releases. Since driver updates are usually released for a specific SLE version mkdud provides a mapping CaaSP release <→ SLE release when building with --dist=caspX.Y. Currently:
Kubic is based on Tumbleweed. For compatibility, --dist=kubic... variants are still supported but will be mapped to Tumbleweed. Please use --dist=tw directly.
openSUSE MicroOS (not to be confused with SUSE Linux Enterprise Micro) is based on Tumbleweed. Use --dist=tw.
Driver updates built for SLE 12 will implicitly also work with CaaSP3.0; those built for SLE 15 will implicitly also work with CaaSP4.0. But this is not true for CaaSP1.0 and CaaSP2.0.
Normally, a DUD will apply to the main release as well as to all the service packs. To target a specific service pack, use the --condition option. For example, to get a DUD exclusively for sle15-sp1: --dist=sle15 --condition=ServicePack1
This works also to target a specifc Tumbleweed release: --dist=tw --condition=20191231.
You can specify several --condition options. They must all be fulfilled (logical and).
CONSISTENCY CHECKS¶
It is possible to create driver updates that will predictably not work because they interfere with the setup of the installation environment.
mkdud will warn you and try to work around these cases. But there still may be valid use-cases so the --fix-XXX / --no-fix-XXX group of options lets you enable (default) or disable these workarounds.
In older SUSE versions /sbin/yast was a different script in the installation environment than the one from the yast package. Updating the special variant with the regular script would make the installation impossible. mkdud recognizes this and removes /sbin/yast from driver updates.
The --dist option normally allows you to specify only distributions mkdud knows about. With this option you may put anything there - in case you know better.
The installation system must not contain a /usr/src/packages directory. mkdud normally removes it (and its content) from driver updates.
The /sbin/adddir script is used in the installation system to actually apply the part of a driver update that replaces files in the installation system. In older SUSE versions this script was not able to update some programs from the coreutils package. mkdud implicitly includes an update for this script if it detects a need for it.
EXAMPLES¶
# show content of foo.dud mkdud --show foo.dud # create update for hello.rpm mkdud --create foo.dud --dist leap15.1 hello.rpm # create kernel update mkdud --create foo.dud --dist leap15.1 kernel-*.rpm # create kernel update and replace tg3 module mkdud --create foo.dud --dist leap15.1 kernel-*.rpm tg3.ko # create kernel update, replace tg3 module, add some docs # and give the driver update a nice name mkdud --create foo.dud --dist leap15.1 --name 'for granny' kernel-*.rpm tg3.ko README # update some YaST stuff mkdud --create foo.dud --dist leap15.1 BootCommon.y* # add directory tree below newstuff/ to installation system mkdud --create foo.dud --dist leap15.1 newstuff # extract driver updates from ISO (you need root permissions for that) mkdud --create foo.dud xxx.iso # create update for hello.rpm and join with foo1.dud and foo2.dud mkdud --create foo.dud --dist sle15 foo1.dud foo2.dud hello.rpm
Find more usage examples here: <https://github.com/openSUSE/mkdud/blob/master/HOWTO.md>.
SEE ALSO¶
2022-09-22 | mkdud 1.55 |