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(':')