diff options
author | Sergey Shatunov | 2021-09-04 22:41:31 +0800 |
---|---|---|
committer | Sergey Shatunov | 2021-09-04 22:41:31 +0800 |
commit | 323a057c7edc9ce626b00d95bb86cadadfb502ab (patch) | |
tree | fe910be4f8266a1b449b465931e0d448d93750bc | |
parent | 288422f8b7fede1a001931abc947d03dff8febf7 (diff) | |
download | aur-323a057c7edc9ce626b00d95bb86cadadfb502ab.tar.gz |
Add option to patch os-release for pretty names in bootloader
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | PKGBUILD | 8 | ||||
-rw-r--r-- | dracut-uefi-hook.conf | 2 | ||||
-rw-r--r-- | dracut-uefi-install | 60 | ||||
-rw-r--r-- | dracut-uefi-remove | 2 |
5 files changed, 54 insertions, 26 deletions
@@ -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 @@ -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..." |