Skip to content

Commit 4dba193

Browse files
installkernel: only install UKI in uki layout
and drop confusing -plain suffix Signed-off-by: Andrew Ammerlaan <[email protected]>
1 parent f64eabe commit 4dba193

File tree

3 files changed

+47
-73
lines changed

3 files changed

+47
-73
lines changed

hooks/systemd/90-compat.install

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,20 @@ elif [[ ${KERNEL_INSTALL_LAYOUT} == "efistub" ]]; then
2929
# Some vendors enforce that booted EFI executables have the .efi suffix.
3030
# We also want to be able to distinguish between an UKI and a regular
3131
# kernel image with an .efi suffix.
32-
SUFFIX="-plain.efi"
32+
SUFFIX=".efi"
3333
else
3434
exit 0
3535
fi
3636

3737
if [[ ${COMMAND} == add ]]; then
38-
UKI="${KERNEL_INSTALL_STAGING_AREA}/uki.efi"
3938
mkdir -p "${KERNEL_INSTALL_ROOT}" || exit 1
40-
if [[ -f ${UKI} ]]; then
41-
cp "${UKI}" "${KERNEL_INSTALL_ROOT}/kernel-${KERNEL_VERSION}.efi" || exit 1
42-
else
43-
cp "${KERNEL_IMAGE}" "${KERNEL_INSTALL_ROOT}/kernel-${KERNEL_VERSION}${SUFFIX}" || exit 1
44-
INITRD="${KERNEL_INSTALL_STAGING_AREA}/initrd"
45-
if [[ -f ${INITRD} ]]; then
46-
cp "${INITRD}" "${KERNEL_INSTALL_ROOT}/initramfs-${KERNEL_VERSION}.img" || exit 1
47-
fi
39+
cp "${KERNEL_IMAGE}" "${KERNEL_INSTALL_ROOT}/kernel-${KERNEL_VERSION}${SUFFIX}" || exit 1
40+
INITRD="${KERNEL_INSTALL_STAGING_AREA}/initrd"
41+
if [[ -f ${INITRD} ]]; then
42+
cp "${INITRD}" "${KERNEL_INSTALL_ROOT}/initramfs-${KERNEL_VERSION}.img" || exit 1
4843
fi
4944
elif [[ ${COMMAND} == remove ]]; then
5045
rm -f \
51-
"${KERNEL_INSTALL_ROOT}/kernel-${KERNEL_VERSION}.efi" \
5246
"${KERNEL_INSTALL_ROOT}/kernel-${KERNEL_VERSION}${SUFFIX}" \
53-
"${KERNEL_INSTALL_ROOT}/kernel-${KERNEL_VERSION}" \
5447
"${KERNEL_INSTALL_ROOT}/initramfs-${KERNEL_VERSION}.img" || exit 1
5548
fi

hooks/systemd/95-efistub-kernel-bootcfg.install

Lines changed: 37 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ else
1818
fi
1919

2020
if [[ ${KERNEL_INSTALL_LAYOUT} == "uki" ]]; then
21-
# UKI layout contains only UKIs
2221
UKI="${KERNEL_INSTALL_BOOT_ROOT}/EFI/Linux/${KERNEL_INSTALL_ENTRY_TOKEN}-${KERNEL_VERSION}.efi"
2322

2423
if [[ ${COMMAND} == add ]]; then
@@ -41,79 +40,61 @@ if [[ ${KERNEL_INSTALL_LAYOUT} == "uki" ]]; then
4140
kernel-bootcfg ${LOGLEVEL} --remove-uki "${UKI}" || exit 1
4241
fi
4342
elif [[ ${KERNEL_INSTALL_LAYOUT} == "efistub" ]]; then
44-
KERNEL_IMAGE="${KERNEL_INSTALL_BOOT_ROOT}/EFI/Gentoo/kernel-${KERNEL_VERSION}-plain.efi"
45-
UKI="${KERNEL_INSTALL_BOOT_ROOT}/EFI/Gentoo/kernel-${KERNEL_VERSION}.efi"
43+
KERNEL_IMAGE="${KERNEL_INSTALL_BOOT_ROOT}/EFI/Gentoo/kernel-${KERNEL_VERSION}.efi"
4644
INITRD="${KERNEL_INSTALL_BOOT_ROOT}/EFI/Gentoo/initramfs-${KERNEL_VERSION}.img"
4745

4846
if [[ ${COMMAND} == add ]]; then
47+
if [[ -f ${KERNEL_IMAGE} ]]; then
48+
echo "Kernel image not found, exiting"
49+
exit 1
50+
fi
51+
4952
KERNEL_BOOTCFG_ARGS=(
5053
${LOGLEVEL}
5154
--once
5255
)
5356

54-
if [[ -f ${UKI} ]]; then
55-
PARTLABEL="$(df ${UKI} --output=source | tail -1 | xargs -r lsblk --output=PARTLABEL --noheadings)"
56-
if [[ -n ${PARTLABEL} ]]; then
57-
TITLE="${KERNEL_VERSION} (UKI) on ${PARTLABEL}"
58-
else
59-
TITLE="${KERNEL_VERSION} (UKI)"
60-
fi
61-
62-
KERNEL_BOOTCFG_ARGS+=(
63-
--add-uki "${UKI}"
64-
--title "${TITLE}"
65-
)
66-
67-
[[ "${KERNEL_INSTALL_VERBOSE}" -gt 0 ]] && echo "Adding ${UKI} to UEFI boot entries"
68-
elif [[ -f ${KERNEL_IMAGE} ]]; then
69-
# From 90-loadentry.install
70-
if [[ -n "${KERNEL_INSTALL_CONF_ROOT}" ]]; then
71-
if [[ -f "${KERNEL_INSTALL_CONF_ROOT}/cmdline" ]]; then
72-
BOOT_OPTIONS="$(tr -s "${IFS}" ' ' <"${KERNEL_INSTALL_CONF_ROOT}/cmdline")"
73-
fi
74-
elif [[ -f /etc/kernel/cmdline ]]; then
75-
BOOT_OPTIONS="$(tr -s "${IFS}" ' ' </etc/kernel/cmdline)"
76-
elif [[ -f /usr/lib/kernel/cmdline ]]; then
77-
BOOT_OPTIONS="$(tr -s "${IFS}" ' ' </usr/lib/kernel/cmdline)"
78-
else
79-
BOOT_OPTIONS="$(tr -s "${IFS}" '\n' </proc/cmdline | grep -ve '^BOOT_IMAGE=' -e '^initrd=' | tr '\n' ' ')"
80-
fi
81-
82-
# Append initramfs to cmdline if it exists
83-
if [[ -f ${INITRD} ]]; then
84-
INITRD_EFI_PATH="${INITRD#${KERNEL_INSTALL_BOOT_ROOT}}"
85-
INITRD_EFI_PATH_DOS="${INITRD_EFI_PATH//\//\\}"
86-
BOOT_OPTIONS="${BOOT_OPTIONS} initrd=${INITRD_EFI_PATH_DOS}"
87-
fi
88-
89-
if [[ -n ${BOOT_OPTIONS} ]]; then
90-
KERNEL_BOOTCFG_ARGS+=( --cmdline "${BOOT_OPTIONS}" )
57+
# From 90-loadentry.install
58+
if [[ -n "${KERNEL_INSTALL_CONF_ROOT}" ]]; then
59+
if [[ -f "${KERNEL_INSTALL_CONF_ROOT}/cmdline" ]]; then
60+
BOOT_OPTIONS="$(tr -s "${IFS}" ' ' <"${KERNEL_INSTALL_CONF_ROOT}/cmdline")"
9161
fi
62+
elif [[ -f /etc/kernel/cmdline ]]; then
63+
BOOT_OPTIONS="$(tr -s "${IFS}" ' ' </etc/kernel/cmdline)"
64+
elif [[ -f /usr/lib/kernel/cmdline ]]; then
65+
BOOT_OPTIONS="$(tr -s "${IFS}" ' ' </usr/lib/kernel/cmdline)"
66+
else
67+
BOOT_OPTIONS="$(tr -s "${IFS}" '\n' </proc/cmdline | grep -ve '^BOOT_IMAGE=' -e '^initrd=' | tr '\n' ' ')"
68+
fi
9269

93-
PARTLABEL="$(df ${KERNEL_IMAGE} --output=source | tail -1 | xargs -r lsblk --output=PARTLABEL --noheadings)"
94-
if [[ -n ${PARTLABEL} ]]; then
95-
TITLE="${KERNEL_VERSION} (plain) on ${PARTLABEL}"
96-
else
97-
TITLE="${KERNEL_VERSION} (plain)"
98-
fi
70+
# Append initramfs to cmdline if it exists
71+
if [[ -f ${INITRD} ]]; then
72+
INITRD_EFI_PATH="${INITRD#${KERNEL_INSTALL_BOOT_ROOT}}"
73+
INITRD_EFI_PATH_DOS="${INITRD_EFI_PATH//\//\\}"
74+
BOOT_OPTIONS="${BOOT_OPTIONS} initrd=${INITRD_EFI_PATH_DOS}"
75+
fi
9976

100-
KERNEL_BOOTCFG_ARGS+=(
101-
--add-uki "${KERNEL_IMAGE}"
102-
--title "${TITLE}"
103-
)
77+
if [[ -n ${BOOT_OPTIONS} ]]; then
78+
KERNEL_BOOTCFG_ARGS+=( --cmdline "${BOOT_OPTIONS}" )
79+
fi
10480

105-
[[ "${KERNEL_INSTALL_VERBOSE}" -gt 0 ]] && echo "Adding ${KERNEL_IMAGE} to UEFI boot entries with cmdline ${BOOT_OPTIONS}"
81+
PARTLABEL="$(df ${KERNEL_IMAGE} --output=source | tail -1 | xargs -r lsblk --output=PARTLABEL --noheadings)"
82+
if [[ -n ${PARTLABEL} ]]; then
83+
TITLE="${KERNEL_VERSION} (plain) on ${PARTLABEL}"
10684
else
107-
echo "No kernel image found, exiting"
108-
exit 1
85+
TITLE="${KERNEL_VERSION} (plain)"
10986
fi
11087

88+
KERNEL_BOOTCFG_ARGS+=(
89+
--add-uki "${KERNEL_IMAGE}"
90+
--title "${TITLE}"
91+
)
92+
93+
[[ "${KERNEL_INSTALL_VERBOSE}" -gt 0 ]] && echo "Adding ${KERNEL_IMAGE} to UEFI boot entries with cmdline ${BOOT_OPTIONS}"
11194
kernel-bootcfg "${KERNEL_BOOTCFG_ARGS[@]}" || exit 1
11295
elif [[ ${COMMAND} == remove ]]; then
113-
[[ "${KERNEL_INSTALL_VERBOSE}" -gt 0 ]] && echo "Removing ${UKI} from UEFI boot entries"
114-
kernel-bootcfg ${LOGLEVEL} --remove-uki "${UKI}"
11596
[[ "${KERNEL_INSTALL_VERBOSE}" -gt 0 ]] && echo "Removing ${KERNEL_IMAGE} from UEFI boot entries"
116-
kernel-bootcfg ${LOGLEVEL} --remove-uki "${KERNEL_IMAGE}"
97+
kernel-bootcfg ${LOGLEVEL} --remove-uki "${KERNEL_IMAGE}" || exit 1
11798
fi
11899
else
119100
exit 0

installkernel

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ if [ "${INSTALLKERNEL_LAYOUT}" = efistub ] && [ ${#} -le 3 ]; then
143143
for candidate in /boot/EFI /boot/efi /boot /efi; do
144144
if [ -d ${candidate}/EFI/Gentoo ]; then
145145
dir=${candidate}/EFI/Gentoo
146-
suffix=-plain.efi
146+
suffix=.efi
147147
else
148148
continue
149149
fi
@@ -187,9 +187,9 @@ else
187187
fi
188188

189189
# If we found a uki.efi, install it instead of kernel+initrd
190-
if [ -f "${uki}" ]; then
190+
if [ -f "${uki}" ] && [ "${INSTALLKERNEL_LAYOUT}" = uki ]; then
191191
suffix=.efi
192-
if [ "${INSTALLKERNEL_LAYOUT}" = uki ] && [ ${#} -le 3 ]; then
192+
if [ ${#} -le 3 ]; then
193193
# Relocate to ESP
194194
for candidate in /boot/EFI /boot/efi /boot /efi; do
195195
if [ -d ${candidate}/EFI/Linux ]; then
@@ -200,9 +200,9 @@ if [ -f "${uki}" ]; then
200200
fi
201201
done
202202
fi
203-
updatever ${img_dest} "${uki}" "${suffix}"
203+
updatever ${img_dest} "${uki}" ${suffix}
204204
else
205-
updatever ${img_dest} "${img}" "${suffix}"
205+
updatever ${img_dest} "${img}" ${suffix}
206206
if [ -f "${initrd}" ]; then
207207
updatever initramfs "${initrd}" .img
208208
fi

0 commit comments

Comments
 (0)