Requirements
sudo pacman -S binutils
------------------------------------------------------------------------------------------------------
cat build_kernel.sh
------------------------------------------------------------------------------------------------------
#!/bin/bash
cat /boot/intel-ucode.img /boot/booster-linux-hardened.img > /tmp/initrd.bin
osrel_offs=$(objdump -h "/usr/lib/systemd/boot/efi/linuxx64.efi.stub" | awk 'NF==7 {size=strtonum("0x"$3); offset=strtonum("0x"$4)} END {print size + offset}')
cmdline_offs=$((osrel_offs + $(stat -Lc%s "/usr/lib/os-release")))
splash_offs=$((cmdline_offs + $(stat -Lc%s "/boot/cmdline")))
linux_offs=$((splash_offs + $(stat -Lc%s "/usr/share/systemd/bootctl/splash-arch.bmp")))
initrd_offs=$((linux_offs + $(stat -Lc%s "/tmp/initrd.bin")))
echo "Generated unified kernel image..."
objcopy \
--add-section .osrel="/usr/lib/os-release" \
--change-section-vma .osrel=$(printf 0x%x $osrel_offs) \
--add-section .cmdline="/boot/cmdline" \
--change-section-vma .cmdline=$(printf 0x%x $cmdline_offs) \
--add-section .splash="/usr/share/systemd/bootctl/splash-arch.bmp" \
--change-section-vma .splash=$(printf 0x%x $splash_offs) \
--add-section .linux="/boot/vmlinuz-linux-hardened" \
--change-section-vma .linux=$(printf 0x%x $linux_offs) \
--add-section .initrd="/tmp/initrd.bin" \
--change-section-vma .initrd=$(printf 0x%x $initrd_offs) \
"/usr/lib/systemd/boot/efi/linuxx64.efi.stub" "/boot/archlinux.efi"
rm /tmp/initrd.bin
------------------------------------------------------------------------------------------------------
Generated archlinux.efi which can be directly loaded
cp archlinux.efi esp/EFI/Linux/ ##copy it to esp(efi system partition)
cat /boot/cmdline
for discoverable partition with partition uuid4f68bce3-e8cd-4db1-96e7-fbcaf984b709
SD_GPT_ROOT_X86_64
cfdisk /dev/nvme0n1p1 and change type to Linux root (x86-64)
rw quiet bgrt_disable
or
silent boot
rootfstype=ext4 systemd.show_status=0 rd,udev.log_priority=0 vt.global_cursor_default=0 i915.fastboot=1 quiet loglevel=0 rw root=UUID=xxx-xxx-xxx-xxx-xxx
bgrt_disable
References
https://wiki.archlinux.org/title/Unified_kernel_image
https://man.archlinux.org/man/objcopy.1
https://uapi-group.org/specifications/specs/discoverable_partitions_specification/
Comments
Post a Comment