diff options
author | Luca Boccassi <bluca@debian.org> | 2023-03-08 21:25:25 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-08 21:25:25 +0000 |
commit | 25a45b0dd1a3d81a0b398ba112e298116179a86f (patch) | |
tree | 30910e443d5d96a3cf558b0e46c95c008b49ce8a /src/kernel-install | |
parent | 2ca6f09b30c343c0b55686d8f606025feb5b5a47 (diff) | |
parent | 3d5f0bfe4e72fdc4d8f8d65f96dc5501dfed8a64 (diff) | |
download | systemd-25a45b0dd1a3d81a0b398ba112e298116179a86f.tar.gz |
Merge pull request #26119 from kraxel/uki.install
kernel-install: improve uki handling
Diffstat (limited to 'src/kernel-install')
-rwxr-xr-x | src/kernel-install/90-uki-copy.install | 4 | ||||
-rwxr-xr-x | src/kernel-install/kernel-install.in | 12 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/kernel-install/90-uki-copy.install b/src/kernel-install/90-uki-copy.install index d6e3deb723..6c71b211d7 100755 --- a/src/kernel-install/90-uki-copy.install +++ b/src/kernel-install/90-uki-copy.install @@ -49,8 +49,8 @@ case "$COMMAND" in esac if ! [ -d "$UKI_DIR" ]; then - echo "Error: entry directory '$UKI_DIR' does not exist" >&2 - exit 1 + [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "creating $UKI_DIR" + mkdir -p "$UKI_DIR" fi TRIES_FILE="${KERNEL_INSTALL_CONF_ROOT:-/etc/kernel}/tries" diff --git a/src/kernel-install/kernel-install.in b/src/kernel-install/kernel-install.in index c722dc0f77..2c59648afc 100755 --- a/src/kernel-install/kernel-install.in +++ b/src/kernel-install/kernel-install.in @@ -268,10 +268,18 @@ if [ -z "$ENTRY_TOKEN" ]; then log_verbose "No entry-token candidate matched, using \"$ENTRY_TOKEN\" from machine-id" fi -if [ -z "$layout" ]; then +export KERNEL_INSTALL_IMAGE_TYPE="" +if [ -f "$1" ]; then + KERNEL_INSTALL_IMAGE_TYPE="$(bootctl kernel-identify "$1" 2>/dev/null || echo "unknown")" +fi + +if [ "$layout" = "auto" ] || [ -z "$layout" ]; then # No layout configured by the administrator. Let's try to figure it out # automatically from metadata already contained in $BOOT_ROOT. - if [ -e "$BOOT_ROOT/loader/entries.srel" ]; then + if [ "$KERNEL_INSTALL_IMAGE_TYPE" = "uki" ]; then + layout="uki" + log_verbose "Kernel image is UKI, using layout=$layout" + elif [ -e "$BOOT_ROOT/loader/entries.srel" ]; then read -r ENTRIES_SREL <"$BOOT_ROOT/loader/entries.srel" if [ "$ENTRIES_SREL" = "type1" ]; then # The loader/entries.srel file clearly indicates that the installed |