Forum Linux.général [RÉSOLU] boot EFISTUB

Posté par  . Licence CC By‑SA.
Étiquettes :
2
2
avr.
2023

Bonjour,

Je cherche à booter mon nouveau système (install archlinux) avec EFISTUB.
Cela permet de booter sans gestionnaire de boot (grub, syslinux …)
J'ai désactivé le « secure boot ».

J'ai suivi: https://wiki.archlinux.org/title/EFISTUB et https://wiki.archlinux.org/title/EFI_system_partition

Ma partition ESP est sur /dev/nvme0n1p1
Mon système ( / ) est sur /dev/nvme0n1p3

J'ai procédé ainsi:

Commencé par monter le contenu de {esp}/EFI/arch/ dans /boot.

Il faut procéder avec un « bind mount » qui se fait en deux temps.
Il faut déjà mounter la partition ESP sur un répertoire qui n'est PAS « /boot » :
# mount /dev/nvme0n1p1 /EFI # créer /EFI si il n'existe pas

Puis remounter ce répertoire vers « /boot » , avec le chemin qui deviendra la racine:
# mount --bind /EFI/EFI/arch /boot

« /boot » fait maintenant référence à mes noyaux et initrd , sans avoir besoin de préfixer avec « arch/ » dans la partie « root=… » des paramètres de boot.

Cela donne dans mon cas, pendant l'installation:

root@archiso / # mount  /dev/nvme0n1p1 /mnt/EFI
root@archiso / # mount --bind /mnt/EFI/EFI/arch /mnt/boot
root@archiso / # ls /mnt/boot
initramfs-linux.img  initramfs-linux-fallback.img  initramfs-linux-lts.img  initramfs-linux-lts-fallback.img  intel-ucode.img  vmlinuz-linux.efi  vmlinuz-linux-lts

Et les entrées /etc/fstab correspondantes pour les boots en situation réelle:

UUID=F856-5F4A   /EFI    vfat  rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro   0 2
/EFI/EFI/arch   /boot    none    defaults,bind  0 0

Ensuite il faut créer l'entrée EFI en suivant cette syntaxe:

# efibootmgr --create --disk /dev/sdX --part Y --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=block_device_identifier rw initrd=\initramfs-linux.img'

pour utiliser le « ESP » (partition windows) qui est sur /dev/nvme0n1p1 :
--disk /dev/nvme0n1 --part 1

Dans mon cas:
# efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "Arch_LTS" --loader \\EFI\\arch\\vmlinuz-linux-lts --unicode 'root=/dev/nvme0n1p3 rw initrd=intel-ucode.img,initramfs-linux-lts.img'

Cet ordre donne ceci:

Boot0005* Arch_LTS      HD(1,GPT,a7756a66-a10b-49b1-8ef8-1cf9d0c30967,0x800,0x1bd000)/File(\EFI\arch\vmlinuz-linux-lts)root=/dev/nvme0n1p3 rw initrd=intel-ucode.img,initramfs-linux-lts.img

Quand je reboote et sélectionne cette entrée, l'UEFI me répond avec l'erreur « no bootable
devices found ».

Mystère…

Merci de votre aide.

  • # résolu

    Posté par  . Évalué à 2.

    Résolu : je me suis débrouillé avec systemd-boot qui fonctionne beaucoup mieux.

    Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

    • [^] # Re: résolu

      Posté par  . Évalué à 3.

      Ah, je suis un peu déçu par cette solution ;).

      J'utilise systemd-boot depuis de longs mois sur Arch, et je te confirme que ça fonctionne très bien ! Il faut simplement penser à recopier le blob de microcode Intel dans la partition de boot de temps en temps (ou installer le hook correspondant).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.