UEFI та live ISO


Чисто для перевірки, що UEFI таки працює. Дещо інше.

sgdisk --zap-all /dev/sda
sgdisk --new=1:0:0 --typecode=1:ef00 /dev/sda
mkfs.vfat -F32 -n UBUNTU /dev/sda1

mount /dev/sda1 /mnt/flash
mkdir -p /mnt/flash/EFI/BOOT
cd /mnt/flash/EFI/BOOT

wget https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso

cat - > grub.cfg <<'CONFIG'
menuentry "Ubuntu 20.04 LTS" {
    set isofile="ubuntu-20.04.3-desktop-amd64.iso"
    loopback loop (hd0,gpt1)/EFI/BOOT/$isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/EFI/BOOT/$isofile noprompt noeject quiet splash
    initrd (loop)/casper/initrd
}
CONFIG

# А тепер якась дичина

grub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi \
    fat iso9660 part_gpt part_msdos \
    normal boot linux configfile loopback chain \
    efifwsetup efi_gop efi_uga \
    ls search search_label search_fs_uuid search_fs_file \
    gfxterm gfxterm_background gfxterm_menu test all_video loadenv \
    exfat ext2 ntfs btrfs hfsplus udf

Всього лише три файли на флешці:

  • EFI/BOOT/ubuntu-20.04.3-desktop-amd64.iso
  • EFI/BOOT/grub.cfg
  • EFI/BOOT/bootx64.efi

І воно працює. Ну, майже працює: GRUB показує меню, ядро та initrd завантажується, splash трохи крутиться. Десь я щось з параметрами ядра криво прописав, але то вже дрібниці. (Оновлення від 20 липня: виправив; путь імені файлу був кривий). Головне, що етап UEFI відпрацьовує нормально.

Чому ж не працює той Debian, який я ставлю через debootstrap?