summaryrefslogtreecommitdiff
path: root/src/kernel-install
diff options
context:
space:
mode:
authorLuca Boccassi <bluca@debian.org>2023-03-08 21:25:25 +0000
committerGitHub <noreply@github.com>2023-03-08 21:25:25 +0000
commit25a45b0dd1a3d81a0b398ba112e298116179a86f (patch)
tree30910e443d5d96a3cf558b0e46c95c008b49ce8a /src/kernel-install
parent2ca6f09b30c343c0b55686d8f606025feb5b5a47 (diff)
parent3d5f0bfe4e72fdc4d8f8d65f96dc5501dfed8a64 (diff)
downloadsystemd-25a45b0dd1a3d81a0b398ba112e298116179a86f.tar.gz
Merge pull request #26119 from kraxel/uki.install
kernel-install: improve uki handling
Diffstat (limited to 'src/kernel-install')
-rwxr-xr-xsrc/kernel-install/90-uki-copy.install4
-rwxr-xr-xsrc/kernel-install/kernel-install.in12
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