История изменений
Исправление 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