diff --git a/man/ukify.xml b/man/ukify.xml
index 4c1ccca6b9..0a9cd5ee38 100644
--- a/man/ukify.xml
+++ b/man/ukify.xml
@@ -22,19 +22,28 @@
- /usr/lib/systemd/ukify
+ ukify
OPTIONS
build
+
+
+
+ ukify
+ OPTIONS
genkey
+
+
+ ukify
+ OPTIONS
+ inspect
+ FILE
+
Description
- Note: this command is experimental for now. While it is intended to become a regular component of
- systemd, it might still change in behaviour and interface.
-
ukify is a tool whose primary purpose is to combine components (usually a
kernel, an initrd, and a UEFI boot stub) to create a
Unified Kernel Image (UKI)
@@ -505,7 +514,7 @@
All the bells and whistles
- $ /usr/lib/systemd/ukify build \
+ $ ukify build \
--linux=/lib/modules/6.0.9-300.fc37.x86_64/vmlinuz \
--initrd=early_cpio \
--initrd=/some/path/initramfs-6.0.9-300.fc37.x86_64.img \
@@ -564,7 +573,7 @@ Phases=enter-initrd:leave-initrd
enter-initrd:leave-initrd:sysinit
enter-initrd:leave-initrd:sysinit:ready
-$ /usr/lib/systemd/ukify -c ukify.conf build \
+$ ukify -c ukify.conf build \
--linux=/lib/modules/6.0.9-300.fc37.x86_64/vmlinuz \
--initrd=/some/path/initramfs-6.0.9-300.fc37.x86_64.img
@@ -600,7 +609,7 @@ $ /usr/lib/systemd/ukify -c ukify.conf build \
EOF
Next, we can generate the certificate and keys:
- # /usr/lib/systemd/ukify genkey --config=/etc/kernel/uki.conf
+ # ukify genkey --config=/etc/kernel/uki.conf
Writing SecureBoot private key to /etc/kernel/secure-boot.key.pem
Writing SecureBoot certificate to /etc/kernel/secure-boot.cert.pem
Writing private key for PCR signing to /etc/kernel/pcr-initrd.key.pem
@@ -613,7 +622,7 @@ Writing public key for PCR signing to /etc/kernel/pcr-system.pub.pem
to /etc/kernel/.)
Subsequent invocations of using the config file
- (/usr/lib/systemd/ukify build --config=/etc/kernel/uki.conf)
+ (ukify build --config=/etc/kernel/uki.conf)
will use this certificate and key files. Note that the
kernel-install8
plugin 60-ukify.install uses /etc/kernel/uki.conf
diff --git a/meson.build b/meson.build
index 6d0cddf7d8..efa9071511 100644
--- a/meson.build
+++ b/meson.build
@@ -2417,9 +2417,13 @@ ukify = custom_target(
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
install : want_ukify,
install_mode : 'rwxr-xr-x',
- install_dir : libexecdir)
+ install_dir : bindir)
if want_ukify
public_programs += ukify
+
+ meson.add_install_script(sh, '-c',
+ ln_s.format(bindir / 'ukify',
+ libexecdir / 'ukify'))
endif
############################################################
diff --git a/src/kernel-install/60-ukify.install.in b/src/kernel-install/60-ukify.install.in
index 2ab0305e91..01146467d1 100755
--- a/src/kernel-install/60-ukify.install.in
+++ b/src/kernel-install/60-ukify.install.in
@@ -34,7 +34,7 @@ except (KeyError, ValueError):
VERBOSE = False
# Override location of ukify and the boot stub for testing and debugging.
-UKIFY = os.getenv('KERNEL_INSTALL_UKIFY', '/usr/lib/systemd/ukify')
+UKIFY = os.getenv('KERNEL_INSTALL_UKIFY', 'ukify')
BOOT_STUB = os.getenv('KERNEL_INSTALL_BOOT_STUB')
diff --git a/src/ukify/ukify.py b/src/ukify/ukify.py
index 10a464bb1a..b7e21dafed 100755
--- a/src/ukify/ukify.py
+++ b/src/ukify/ukify.py
@@ -1413,7 +1413,10 @@ def apply_config(namespace, filename=None):
# Do not make keys lowercase
cp.optionxform = lambda option: option
- cp.read(filename)
+ # The API is not great.
+ read = cp.read(filename)
+ if not read:
+ raise IOError(f'Failed to read {filename}')
for section_name, section in cp.items():
idx = section_name.find(':')