LINUX.ORG.RU

История изменений

Исправление caro, (текущая версия) :

У меня так сделано. Не уверен насчет гайда, установка обычная, только раздел efi монтируется в /efi и хук pacmanа пересобирает туда ядро после апдейтов для efistub. grub не использую, лишняя сущность. можно дополнительно подписать для secure boot

/dev/sdb1     2048   1050623   1048576   512M EFI
/dev/sdb2  1050624 468860927 467810304 223,1G Файловая система Linux
[Trigger]
Type = Package
Operation = Upgrade
Operation = Install
Target = linux*
Target = amd-ucode

[Action]
Description = Updating EFI kernel images
When = PostTransaction
Exec = /bin/bash /usr/local/bin/build_kernel.sh

#!/bin/bash

TARGET=/efi
BOOTDIR=/boot
UCODE=$BOOTDIR/amd-ucode.img
EFISTUB=/usr/lib/systemd/boot/efi/linuxx64.efi.stub

echo "Updating EFI kernels..."

for k in $BOOTDIR/vmlinuz*; do
        NAME=$(basename $k|sed 's/vmlinuz-//')
        echo "  Building $NAME"
        INITRD="$BOOTDIR/initramfs-$NAME.img"

        if [ -f "$UCODE" ]; then
                cat "$UCODE" "$INITRD" > /tmp/initrd.bin
                INITRDFILE=/tmp/initrd.bin
        else
                # Do not fail on AMD systems
                echo "    Intel microcode not found. Skipping."
                INITRDFILE="$INITRD"
        fi

        # Check for custom command line for the kernel.
        CMDLINE="$BOOTDIR/cmdline-$NAME.txt"
        if [ -f "$CMDLINE" ]; then
                echo "    Using custom command line $CMDLINE"
        else
                CMDLINE="$BOOTDIR/cmdline.txt"
                if [ ! -f "$CMDLINE" ]; then
                        echo "CMDLINE missing. Extracting from running kernel..."
                        cat /proc/cmdline |sed 's/BOOT_IMAGE=[^ ]* \?//' > "$CMDLINE"
                fi
        fi

        objcopy \
            --add-section .osrel="/usr/lib/os-release" --change-section-vma .osrel=0x20000 \
            --add-section .cmdline="$CMDLINE" --change-section-vma .cmdline=0x30000 \
            --add-section .linux="$k" --change-section-vma .linux=0x40000 \
            --add-section .initrd="$INITRDFILE" --change-section-vma .initrd=0x3000000 \
            "$EFISTUB" "$TARGET/$NAME.efi"
done

Исходная версия caro, :

У меня так сделано. Не уверен насчет гайда, установка обычная, только раздел efi монтируется в /efi и хук pacmanа пересобирает туда ядро после апдейтов для efistub. grub не использую, лишняя сущность.

/dev/sdb1     2048   1050623   1048576   512M EFI
/dev/sdb2  1050624 468860927 467810304 223,1G Файловая система Linux
[Trigger]
Type = Package
Operation = Upgrade
Operation = Install
Target = linux*
Target = amd-ucode

[Action]
Description = Updating EFI kernel images
When = PostTransaction
Exec = /bin/bash /usr/local/bin/build_kernel.sh

#!/bin/bash

TARGET=/efi
BOOTDIR=/boot
UCODE=$BOOTDIR/amd-ucode.img
EFISTUB=/usr/lib/systemd/boot/efi/linuxx64.efi.stub

echo "Updating EFI kernels..."

for k in $BOOTDIR/vmlinuz*; do
        NAME=$(basename $k|sed 's/vmlinuz-//')
        echo "  Building $NAME"
        INITRD="$BOOTDIR/initramfs-$NAME.img"

        if [ -f "$UCODE" ]; then
                cat "$UCODE" "$INITRD" > /tmp/initrd.bin
                INITRDFILE=/tmp/initrd.bin
        else
                # Do not fail on AMD systems
                echo "    Intel microcode not found. Skipping."
                INITRDFILE="$INITRD"
        fi

        # Check for custom command line for the kernel.
        CMDLINE="$BOOTDIR/cmdline-$NAME.txt"
        if [ -f "$CMDLINE" ]; then
                echo "    Using custom command line $CMDLINE"
        else
                CMDLINE="$BOOTDIR/cmdline.txt"
                if [ ! -f "$CMDLINE" ]; then
                        echo "CMDLINE missing. Extracting from running kernel..."
                        cat /proc/cmdline |sed 's/BOOT_IMAGE=[^ ]* \?//' > "$CMDLINE"
                fi
        fi

        objcopy \
            --add-section .osrel="/usr/lib/os-release" --change-section-vma .osrel=0x20000 \
            --add-section .cmdline="$CMDLINE" --change-section-vma .cmdline=0x30000 \
            --add-section .linux="$k" --change-section-vma .linux=0x40000 \
            --add-section .initrd="$INITRDFILE" --change-section-vma .initrd=0x3000000 \
            "$EFISTUB" "$TARGET/$NAME.efi"
done