summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Shatunov2021-09-04 22:41:31 +0800
committerSergey Shatunov2021-09-04 22:41:31 +0800
commit323a057c7edc9ce626b00d95bb86cadadfb502ab (patch)
treefe910be4f8266a1b449b465931e0d448d93750bc
parent288422f8b7fede1a001931abc947d03dff8febf7 (diff)
downloadaur-323a057c7edc9ce626b00d95bb86cadadfb502ab.tar.gz
Add option to patch os-release for pretty names in bootloader
-rw-r--r--.SRCINFO8
-rw-r--r--PKGBUILD8
-rw-r--r--dracut-uefi-hook.conf2
-rw-r--r--dracut-uefi-install60
-rw-r--r--dracut-uefi-remove2
5 files changed, 54 insertions, 26 deletions
diff --git a/.SRCINFO b/.SRCINFO
index e02616bd4d49..a57cc454cbda 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = dracut-uefi-hook
pkgdesc = Install/update/removal hooks for dracut unifed uefi image generation
pkgver = 2
- pkgrel = 1
+ pkgrel = 2
arch = any
license = MIT
depends = dracut
@@ -14,8 +14,8 @@ pkgbase = dracut-uefi-hook
source = dracut-uefi-hook.conf
sha256sums = 2429d3a7bd79fbb6f7a736f1beb88eaaa2a3a0585d9321fa18459c4f92085b15
sha256sums = 0fb3d028214ff7579386ca4b172a88fb7edb88b81286cfb7f82bd511d2f91832
- sha256sums = 0ca3c3763727b9630793eeb43b0d758587831ada83c609ba55c1c29704fb7bae
- sha256sums = 7029dba277981c1f66f514a003f423a4e65b847d25d749affa37056a2ab922d2
- sha256sums = 36de95c42cf6d64e352ebd559b0f06630d7d27d3b29ee7c9ac6ccddee6cb6826
+ sha256sums = 95844731cc3afc774eb99d558ab3d1f875016911017eaec06745394f622dce5a
+ sha256sums = 8af469ab5647cd15c9370b4c44af422df99887105aca30531c0d4c7b92889f9d
+ sha256sums = 86a65fe822bff87a51e7fece85159a62a77a8f71f015d6400f6693d44dba9464
pkgname = dracut-uefi-hook
diff --git a/PKGBUILD b/PKGBUILD
index d4835c561da7..23c25104240e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,7 +2,7 @@
pkgname=dracut-uefi-hook
pkgver=2
-pkgrel=1
+pkgrel=2
pkgdesc="Install/update/removal hooks for dracut unifed uefi image generation"
arch=(any)
license=('MIT')
@@ -14,9 +14,9 @@ source=('90-dracut-uefi-install.hook'
'dracut-uefi-hook.conf')
sha256sums=('2429d3a7bd79fbb6f7a736f1beb88eaaa2a3a0585d9321fa18459c4f92085b15'
'0fb3d028214ff7579386ca4b172a88fb7edb88b81286cfb7f82bd511d2f91832'
- '0ca3c3763727b9630793eeb43b0d758587831ada83c609ba55c1c29704fb7bae'
- '7029dba277981c1f66f514a003f423a4e65b847d25d749affa37056a2ab922d2'
- '36de95c42cf6d64e352ebd559b0f06630d7d27d3b29ee7c9ac6ccddee6cb6826')
+ '95844731cc3afc774eb99d558ab3d1f875016911017eaec06745394f622dce5a'
+ '8af469ab5647cd15c9370b4c44af422df99887105aca30531c0d4c7b92889f9d'
+ '86a65fe822bff87a51e7fece85159a62a77a8f71f015d6400f6693d44dba9464')
backup=(etc/dracut-uefi-hook.conf)
package() {
diff --git a/dracut-uefi-hook.conf b/dracut-uefi-hook.conf
index f8d12dac263c..7128acbd5e69 100644
--- a/dracut-uefi-hook.conf
+++ b/dracut-uefi-hook.conf
@@ -5,3 +5,5 @@
# 'bootctl set-default ENTRY_ID_FOR_LINUX' after each upgrade of corresponding package
#default_kernel_package='linux'
+# Hook /etc/os-release before each invocation of dracut to generate pretty names for entries
+hook_for_pretty_name=true
diff --git a/dracut-uefi-install b/dracut-uefi-install
index cfc54d960225..a8ea9d2d5b29 100644
--- a/dracut-uefi-install
+++ b/dracut-uefi-install
@@ -11,33 +11,59 @@ dracut_update=0
while read -r line; do
if [[ $line != 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
- dracut_update=1 # Dracut files have been updated
+ dracut_update=1 # Dracut files have been updated
continue
fi
read -r pkgbase < "/${line}"
- kernels+=("${pkgbase}")
+ kernels+=("${pkgbase}")
done
if (( dracut_update )); then
- kernels=()
- for file in /lib/modules/*/pkgbase; do
- if read -r pkgbase &> /dev/null < "$file"; then
- kernels+=("${pkgbase}")
- fi
- done
+ kernels=()
+ for file in /lib/modules/*/pkgbase; do
+ if read -r pkgbase &> /dev/null < "$file"; then
+ kernels+=("${pkgbase}")
+ fi
+ done
+fi
+
+os_release_mounted=0
+function unmount_os_release() {
+ if [ "$os_release_mounted" -ne 0 ]; then
+ umount /etc/os-release
+ os_release_mounted=0
+ fi
+}
+
+if [[ "$hook_for_pretty_name" == "true" ]]; then
+ trap unmount_os_release EXIT
fi
for kernel in "${kernels[@]}"; do
- path="$(grep -lE "^${kernel}\$" /usr/lib/modules/*/pkgbase)"
- version=$(basename "${path%/pkgbase}")
+ path="$(grep -lE "^${kernel}\$" /usr/lib/modules/*/pkgbase)"
+ version=$(basename "${path%/pkgbase}")
read -r pkgbase < "$path"
- echo "==> Building linux image $kernel ($version)"
- dracut -q -f --uefi --kver "${version}"
-
- if [[ "$pkgbase" == "$default_kernel_package" ]]; then
- echo "===> Mark linux image $kernel ($version) as default"
- bootctl set-default "linux-${version}-${MACHINE_ID}-${BUILD_ID}.efi"
- fi
+ echo "==> Building linux image $kernel ($version)"
+
+ if [[ "$hook_for_pretty_name" == "true" ]]; then
+ tmp_file=$(mktemp)
+ cat /etc/os-release > "$tmp_file"
+ echo "VERSION_ID=\"$pkgbase $version\"" >> "$tmp_file"
+ mount --bind "$tmp_file" /etc/os-release
+ os_release_mounted=1
+ rm "$tmp_file"
+ fi
+
+ dracut -q -f --uefi --kver "${version}"
+
+ if [[ "$hook_for_pretty_name" == "true" ]]; then
+ unmount_os_release
+ fi
+
+ if [[ "$pkgbase" == "$default_kernel_package" ]]; then
+ echo "===> Mark linux image $kernel ($version) as default"
+ bootctl set-default "linux-${version}-${MACHINE_ID}-${BUILD_ID}.efi"
+ fi
done
diff --git a/dracut-uefi-remove b/dracut-uefi-remove
index ff98be5862f1..def8722bb0e6 100644
--- a/dracut-uefi-remove
+++ b/dracut-uefi-remove
@@ -8,7 +8,7 @@ while read -r line; do
if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
read -r pkgbase < "/${line}"
path="$(grep -lE "^${pkgbase}\$" /usr/lib/modules/*/pkgbase)"
- version=$(basename "${path%/pkgbase}")
+ version=$(basename "${path%/pkgbase}")
IMAGE="${ESP_PATH}/EFI/Linux/linux-${version}-${MACHINE_ID}-${BUILD_ID}.efi"
if [ -f "$IMAGE" ]; then
echo "==> Removing $IMAGE..."