[EFI Stub] Limitation (discussion)

Reconnaissance et configuration du matériel / kernel linux
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

[EFI Stub] Limitation (discussion)

Message par avi3000 »

benjarobin a écrit : mer. 29 nov. 2017, 13:51 Quel chargeur de démarrage utilises tu ? C'est de l'EFI Stub ? Car si c'est le cas tu ne peux rien faire, c'est une des nombreuses limitations de cette méthode.
Bonjour,

peux-tu développer ? Quelles sont ces limitations ?

Merci
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

[EFI Stub] Limitation (discussion)

Message par benjarobin »

Que je sache tu ne peux avoir qu'un seul jeu de paramètre par application EFI (kernel est vu comme une application EFI), sachant que l'initramfs compte comme un paramètre. Donc que je sache tu ne peux pas avoir une entrée normal, une entrée fallback et une entrée plus verbeuse pour du debug, ...
Après cela dépend des firmware UEFI (BIOS), mais tu ne peux pas simplement éditer l'entrée sur certaines carte mère sans avoir à recours à un Linux démarré en EFI.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [EFI Stub] Limitation (discussion)

Message par avi3000 »

benjarobin a écrit : mer. 29 nov. 2017, 19:48 Que je sache tu ne peux avoir qu'un seul jeu de paramètre par application EFI (kernel est vu comme une application EFI), sachant que l'initramfs compte comme un paramètre. Donc que je sache tu ne peux pas avoir une entrée normal, une entrée fallback et une entrée plus verbeuse pour du debug, ...
faux : tu peux créer 3 entrées efi différentes pour un mème dossier de ta partition ESP, contenant les différents initramfs. Chaque entrée aura ses propres paramètres kernel.
benjarobin a écrit : mer. 29 nov. 2017, 19:48 Après cela dépend des firmware UEFI (BIOS), mais tu ne peux pas simplement éditer l'entrée sur certaines carte mère sans avoir à recours à un Linux démarré en EFI.
en partie vrai : le shell efi ne permet effectivement pas d'éditer les entrées, mais tu peux utiliser le shell efi et les scripts .nsh pour lancer en efistub et faire des tests.

Depuis le support de l'efistub par le kernel linux ( v3.7 me semble-t-il), je n'utilise plus grub, sauf sur des vieux clous, des tables de partition MBR ou des vm.
En UEFI, je peux faire avec efibootmgr tout ce que je fais avec grub. Les menus des options de boot des cartes mères asus, sont peut-être moins jolis que les menus grub, mais ils fonctionnent
parfaitement.

On peut développer dans un autre sujet si tu le souhaites.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [EFI Stub] Limitation (discussion)

Message par benjarobin »

Je me trompe sûrement, mais j'étais persuadé que l'on ne pouvais avoir qu'une seule entrée par application EFI.
Tu parles dans ton message d'un dossier commun (je parles bien d'une même application EFI, tu peux en effet avoir plusieurs kernel dans un même ESP)
3 entrées efi différentes pour un mème dossier de ta partition ESP
Ces 3 entrées utilisent elle le même kernel ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [EFI Stub] Limitation (discussion)

Message par avi3000 »

Je ferai des tests demain pour vérifier ce que je raconte.
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [EFI Stub] Limitation (discussion)

Message par avi3000 »

Résultats des tests et vérifications
Création de 3 entrées avec efibootmgr

Code : Tout sélectionner

efibootmgr -c -d /dev/sda -p 2 -L archxx64a  -l "\EFI\archxx64\vmlinuz-linux" -u "root=UUID=b35da0b3-c6c4-4961-b4ef-0bd47ad828dd initrd=\EFI\archxx64\initramfs-linux.img quiet rw"
efibootmgr -c -d /dev/sda -p 2 -L archxx64b  -l "\EFI\archxx64\vmlinuz-linux" -u "root=UUID=b35da0b3-c6c4-4961-b4ef-0bd47ad828dd initrd=\EFI\archxx64\autres-initramfs-linux.img quiet rw"
efibootmgr -c -d /dev/sda -p 2 -L archxx64c  -l "\EFI\archxx64\vmlinuz-linux2" -u "root=UUID=b35da0b3-c6c4-4961-b4ef-0bd47ad828dd initrd=\EFI\archxx64\autres-initramfs-linux.img rw"

Vérification de ces entrées (tronquées à droite)

Code : Tout sélectionner

efibootmgr -v
BootCurrent: 0001
BootOrder: 0006,0005,0004,0001,0002,0000,0003
Boot0000* shell_v2      HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\shell_v2.efi)
Boot0001* arch64        HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\arch64\vmlinuz-linux)r.o.o.t.=.U.U.I.D.=.b.3.5.d.a.0.b.3.-.c.6.c.4.-.4.9.6.1.-.b.4.e.f.-.0.b.d.4.7.a.d.8.2.8.d.d. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.6.4.\.i.n.i.t.r.a.m.f.s.-.l.i
Boot0002* arch_2        HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\arch_2\vmlinuz-linux)r.o.o.t.=.U.U.I.D.=.c.f.7.3.a.0.3.a.-.4.f.0.b.-.4.6.e.6.-.a.d.5.3.-.2.6.b.5.b.d.9.f.0.9.a.5. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h._.2.\.i.n.i.t.r.a.m.f.s.-.l.i
Boot0003* Hard Drive    BBS(HD,,0x0)..GO..NO........o.M.i.c.r.o.n._.1.1.0.0._.M.T.F.D.D.A.V.5.1.2.T.B.N....................A...........................>..Gd-.;.A..MQ..L. . . . . . . . .7.1.6.0.5.1.3.B.F.D.2.B........BO
Boot0004* archxx64a     HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\archxx64\vmlinuz-linux)r.o.o.t.=.U.U.I.D.=.b.3.5.d.a.0.b.3.-.c.6.c.4.-.4.9.6.1.-.b.4.e.f.-.0.b.d.4.7.a.d.8.2.8.d.d. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.x.x.6.4.\.i.n.i.t.r.a.m.f.s
Boot0005* archxx64b     HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\archxx64\vmlinuz-linux)r.o.o.t.=.U.U.I.D.=.b.3.5.d.a.0.b.3.-.c.6.c.4.-.4.9.6.1.-.b.4.e.f.-.0.b.d.4.7.a.d.8.2.8.d.d. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.x.x.6.4.\.a.u.t.r.e.s.-.i.n
Boot0006* archxx64c     HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\archxx64\vmlinuz-linux2)r.o.o.t.=.U.U.I.D.=.b.3.5.d.a.0.b.3.-.c.6.c.4.-.4.9.6.1.-.b.4.e.f.-.0.b.d.4.7.a.d.8.2.8.d.d. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.x.x.6.4.\.a.u.t.r.e.s.-.i.

Redémarrage de l'ordi, puis vérification de entrées (tronquées à droite)

Code : Tout sélectionner

efibootmgr -v
BootCurrent: 0006
BootOrder: 0006,0005,0001,0002,0000,0003
Boot0000* shell_v2      HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\shell_v2.efi)
Boot0001* arch64        HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\arch64\vmlinuz-linux)r.o.o.t.=.U.U.I.D.=.b.3.5.d.a.0.b.3.-.c.6.c.4.-.4.9.6.1.-.b.4.e.f.-.0.b.d.4.7.a.d.8.2.8.d.d. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.6.4.\.i.n.i.t.r.a.m.f.s.-.l.i
Boot0002* arch_2        HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\arch_2\vmlinuz-linux)r.o.o.t.=.U.U.I.D.=.c.f.7.3.a.0.3.a.-.4.f.0.b.-.4.6.e.6.-.a.d.5.3.-.2.6.b.5.b.d.9.f.0.9.a.5. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h._.2.\.i.n.i.t.r.a.m.f.s.-.l.i
Boot0003* Hard Drive    BBS(HD,,0x0)..GO..NO........o.M.i.c.r.o.n._.1.1.0.0._.M.T.F.D.D.A.V.5.1.2.T.B.N....................A...........................>..Gd-.;.A..MQ..L. . . . . . . . .7.1.6.0.5.1.3.B.F.D.2.B........BO
Boot0005* archxx64b     HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\archxx64\vmlinuz-linux)r.o.o.t.=.U.U.I.D.=.b.3.5.d.a.0.b.3.-.c.6.c.4.-.4.9.6.1.-.b.4.e.f.-.0.b.d.4.7.a.d.8.2.8.d.d. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.x.x.6.4.\.a.u.t.r.e.s.-.i.n
Boot0006* archxx64c     HD(2,GPT,c555322e-dd65-43a1-be81-f5fe0e212102,0x3000,0x100000)/File(\EFI\archxx64\vmlinuz-linux2)r.o.o.t.=.U.U.I.D.=.b.3.5.d.a.0.b.3.-.c.6.c.4.-.4.9.6.1.-.b.4.e.f.-.0.b.d.4.7.a.d.8.2.8.d.d. .i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.x.x.6.4.\.a.u.t.r.e.s.-.i.

On peut voir que l'entrée Boot0004 archxx64a a été supprimée.
L'uefi Asus ne supporte qu'une entrée par loader et a conservé uniquement la dernière. Je suppose que c'est indentique sur d'autres uefi (à vérifier, car je n'en ai pas à ma disposition).

Vérification de la cmdline de l'entrée Boot0006 archxx64c

Code : Tout sélectionner

cat /proc/cmdline
root=UUID=b35da0b3-c6c4-4961-b4ef-0bd47ad828dd initrd=\EFI\archxx64\autres-initramfs-linux.img rw
Elle correspond bien à ce qui a été saisi.

Pour avoir une entrée normale, une entrée fallback et une entrée debug on peut utiliser le shell efi (voir message suivant)
ou procéder avec 3 entrées efi :
  • avec 3 dossiers différents, 1 par entrée. Chaque dossier contiendra une copie du kernel et au moins un initramfs.
  • avec un seul dossier pour les 3 entrées. Dans ce cas, le dossier devra contenir 3 copies du kernel et au moins un initramfs.
Dernière modification par avi3000 le ven. 01 déc. 2017, 18:20, modifié 1 fois.
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [EFI Stub] Limitation (discussion)

Message par avi3000 »

Exemple de lancement avec le shell efi :

start_arch64.nsh

Code : Tout sélectionner

EFI\arch64\vmlinuz-linux root=UUID=b35da0b3-c6c4-4961-b4ef-0bd47ad828dd rw quiet initrd=\EFI\arch64\initramfs-linux.img
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [EFI Stub] Limitation (discussion)

Message par benjarobin »

Merci pour la réalisation des tests, c'est super sympa. Donc tu me confirmes que tu es d'accord avec les limitations que j'avais avancées (j'avais un petit doute) ?

Alors oui on peut contourner le problème avec un shell efi et un script de lancement, mais ce n'est pas très user friendly...
Grub reste quand même plus puissant
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [EFI Stub] Limitation (discussion)

Message par avi3000 »

Je te confirme une appli efi (au sens dossier/kernel) = une entrée et une seule.
J'ai effectué les tests sur 2 ultrabooks Asus (UX31A et B9440UA) avec des versions uefi différentes. Les résultats sont identiques pour chaque version.

Grub plus puissant, je ne crois pas. Orienté utilisateur final, oui.
La seule chose que grub est seul à faire, c'est le le lancement de systèmes non UEFI.
La saisie d'une ligne dans un script nsh n'est pas plus compliquée, voir même un peu plus simple, que la saisie dans un custom.cfg.
J'utilise encore grub, en configuration manuelle, dans certains cas particuliers.
Répondre