logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 04-11-2022 09:16:15

greg40
Membre
Distrib. : Debian 12
Noyau : Linux 5.10.0-22-amd64
(G)UI : Mate
Inscription : 23-09-2022

[Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

Bonjour à tous,

Mauvaise surprise ce matin sur une machine qui boot en EFI lors d'un apt upgrade...

The following packages will be upgraded:
grub-common grub-efi-amd64-bin grub-efi-amd64-signed grub-pc-bin grub2-common ...



Bon déjà à ce moment là, je croise les doigts mais évidement :

Setting up grub-common (2.06-3~deb11u2) ...
Setting up grub-efi-amd64-bin (2.06-3~deb11u2) ...
Setting up grub-efi-amd64-signed (1+2.06+3~deb11u2) ...
Setting up grub2-common (2.06-3~deb11u2) ...
Setting up grub-pc-bin (2.06-3~deb11u2) ...
[...]
Processing triggers for grub-cloud-amd64 (0.0.5) ...
Installing for i386-pc platform.
mdadm: /dev/md does not appear to be an md device
grub-install: error: ioctl RAID_VERSION error: Inappropriate ioctl for device.
dpkg: error processing package grub-cloud-amd64 (--configure):
installed grub-cloud-amd64 package post-installation script subprocess returned error exit status 1
[...]
Errors were encountered while processing:
grub-cloud-amd64
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)



Première fois que je vois ce paquet grub-cloud-amd64 scratchhead.gif

apt list --installed | grep grub

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

grub-cloud-amd64/stable,now 0.0.5 amd64 [installed]
grub-common/stable-updates,now 2.06-3~deb11u2 amd64 [installed,automatic]
grub-efi-amd64-bin/stable-updates,now 2.06-3~deb11u2 amd64 [installed,automatic]
grub-efi-amd64-signed/stable-updates,now 1+2.06+3~deb11u2 amd64 [installed,automatic]
grub-pc-bin/stable-updates,now 2.06-3~deb11u2 amd64 [installed,automatic]
grub2-common/stable-updates,now 2.06-3~deb11u2 amd64 [installed,automatic]



    lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    nvme0n1     259:0    0 476.9G  0 disk  
    ├─nvme0n1p1 259:1    0   511M  0 part  
    ├─nvme0n1p2 259:2    0 452.4G  0 part  
    │ └─md2       9:2    0 452.3G  0 raid1 /
    ├─nvme0n1p3 259:3    0    24G  0 part  [SWAP]
    └─nvme0n1p4 259:4    0     2M  0 part  
    nvme1n1     259:5    0 476.9G  0 disk  
    ├─nvme1n1p1 259:6    0   511M  0 part  /boot/efi
    ├─nvme1n1p2 259:7    0 452.4G  0 part  
    │ └─md2       9:2    0 452.3G  0 raid1 /
    └─nvme1n1p3 259:8    0    24G  0 part  [SWAP]



efibootmgr -v
BootCurrent: 0005
Timeout: 1 seconds
BootOrder: 0005,0006,000A,000B,0000,0009,0007,0008
Boot0000  AMIFWUpdate VenMedia(5023b95c-db26-429b-a648-bd47664c8012)/FvFile(1de64b8e-138b-4258-b7dd-f2d8ec142a9e)
Boot0001  Hard Drive  BBS(HD,,0x0)/VenHw(5ce8128b-2cec-40f0-8372-80640e3dc858,0200)..GO..NO..........W.D.C. .C.L. .S.N.7.2.0. .S.D.A.Q.N.T.W.-.5.1.2.G.-.2.0.0.0...................\.,.@.r.d.=.X..........A............................D.I`'.........Gd-.;.A..MQ..L.2.0.2.7.1.6.8.0.0.7.5.8........BO..NO..........W.D.C. .C.L. .S.N.7.2.0. .S.D.A.Q.N.T.W.-.5.1.2.G.-.2.0.0.0...................\.,.@.r.d.=.X..........A............................D.I`..........Gd-.;.A..MQ..L.2.0.2.7.1.6.8.0.0.8.2.6........BO
Boot0002  UEFI: Built-in EFI Shell  VenMedia(5023b95c-db26-429b-a648-bd47664c8012)..BO
Boot0005* UEFI: PXE IP4 Intel(R) Ethernet Converged Network Adapter X550-T2 PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/MAC(a0423f46ee3a,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot0006* UEFI: PXE IP4 Intel(R) Ethernet Converged Network Adapter X550-T2 PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x1)/MAC(a0423f46ee3b,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot0007  Hard Drive  BBS(HD,,0x0)/VenHw(5ce8128b-2cec-40f0-8372-80640e3dc858,0200)..GO..NO..........W.D.C. .C.L. .S.N.7.2.0. .S.D.A.Q.N.T.W.-.5.1.2.G.-.2.0.0.0...................\.,.@.r.d.=.X..........A............................D.I`'
.........Gd-.;.A..MQ..L.2.0.2.7.1.6.8.0.0.7.5.8........BO..NO..........W.D.C. .C.L. .S.N.7.2.0. .S.D.A.Q.N.T.W.-.5.1.2.G.-.2.0.0.0...................\.,.@.r.d.=.X..........A............................D.I`..........Gd-.;.A..MQ..L.2.0.2.7.1.6.8.0.0.8.2.6........BO
Boot0008  USB BBS(USB,,0x0)/VenHw(5ce8128b-2cec-40f0-8372-80640e3dc858,0500)..GO..NO.........A.M.I. .V.i.r.t.u.a.l. .C.D.R.O.M.0. .1...0.0...................\.,.@.r.d.=.X..........A...................................0..Gd-.;.A..MQ..L.A.A.A.A.B.B.B.B.C.C.C.C.1........BO
Boot0009  UEFI: USB USB Network Card  PciRoot(0x0)/Pci(0x7,0x1)/Pci(0x0,0x3)/USB(1,0)/USB(1,1)/MAC(d6dd0a1f56e7,0)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot000A* debian  HD(1,GPT,e0526dc6-5c3b-4bc0-8b5b-72757a0b4581,0x800,0xff800)/File(\EFI\DEBIAN\GRUBX64.EFI)..BO
Boot000B* debian  HD(1,GPT,cc1a7e98-033b-48de-a211-bf6fd05da471,0x800,0xff800)/File(\EFI\DEBIAN\GRUBX64.EFI)..BO



Je suis paumé sad
Sans UFI j'aurai tenté un truc du genre :

grub-install --target=i386-pc /dev/nvme0n1p1
grub-install --target=i386-pc /dev/nvme1n1p1
update-grub
 



Mais j'ai un peu (beaucoup) peur de perdre l'accès à la machine (distante) lors du reboot.
Merci pour toute aide que vous pourriez m'apporter.

Dernière modification par greg40 (07-11-2022 10:13:52)

Hors ligne

#2 04-11-2022 10:16:26

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

greg40 a écrit :

Première fois que je vois ce paquet grub-cloud-amd64


Extrait de la description du paquet :

You don't want to use this package outside of cloud images.


C'est une image de cloud ?
Normalement on installe plutôt grub-efi-amd64 ou grub-pc selon le mode d'amorçage.

D'après efibootmgr, le système a été amorcé par le réseau (BootCurrent = Boot0005 = PXE) ?


Il vaut mieux montrer que raconter.

Hors ligne

#3 04-11-2022 11:04:43

greg40
Membre
Distrib. : Debian 12
Noyau : Linux 5.10.0-22-amd64
(G)UI : Mate
Inscription : 23-09-2022

Re : [Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

Bonjour Raleur,

C'est une image de cloud ?


Oui, C'est une machine OVH, le truc c'est qu'ils modifie leurs images d'installation régulièrement et en fonction de quand tu installes ton serveur tu te retrouve avec de petites variations.

D'après efibootmgr, le système a été amorcé par le réseau (BootCurrent = Boot0005 = PXE) ?


A priori non... Mais effectivement le BootCurrent: 0005 semble l'indiquer...

C'est très étrange cette histoire.
Sur l'interface OVH le boot est bien positionné sur disque dur. En plus ils ont abandonné cette fonctionnalité de boot sur réseaux, et du coup ce genre de problème Grub deviennent très embêtant sad

Dernière modification par greg40 (04-11-2022 11:09:46)

Hors ligne

#4 04-11-2022 11:11:57

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

Qu'affiche cette commande ?

debconf-show grub-cloud-amd64


Il vaut mieux montrer que raconter.

Hors ligne

#5 04-11-2022 11:13:28

greg40
Membre
Distrib. : Debian 12
Noyau : Linux 5.10.0-22-amd64
(G)UI : Mate
Inscription : 23-09-2022

Re : [Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

Rien

debconf-show grub-cloud-amd64
root@hamon:~#



J'ai une autre machine UFI chez OVH (debian 11 également) et elle n'a pas grub-cloud-amd64.
Et le efibootmgr -v dit également qu'elle a démarré sur le réseau scratchhead.gif

Dernière modification par greg40 (04-11-2022 11:16:15)

Hors ligne

#6 05-11-2022 09:26:21

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

J'ai examiné le contenu du paquet grub-cloud-amd64. Le fichier postinst contient la fonction suivante qui est exécutée à l'installation du paquet et lors de la mise à jour des paquets grub ou shim :

install_i386_pc() {
    local basedev=$(grub-probe -t device /boot/ | sed -Ee 's/[0-9]+$//' -e 's/([0-9])p$/\1/')
    grub-install --target=i386-pc "$basedev"
}


L'expression de sed a pour but d'éliminer le numéro de la partition qui contient /boot pour obtenir le nom du disque et y installer GRUB pour l'amorçage BIOS. Exemples :
/dev/sda2 -> /dev/sda
/dev/nvme0n1p2 -> /dev/nvme0n1

mais le résultat est erroné dans le cas d'un ensemble RAID (/dev/md2 ->/dev/md) d'où l'erreur lors de l'exécution de grub-install.
De toute façon, il me semble que l'installation de GRUB dans un ensemble RAID n'est pas possible, ce doit être dans un disque ou une partition de disque. D'après efibootmgr les SSD ont une table de partition au format GPT, donc pour pouvoir installer GRUB BIOS dans leur MBR il faudrait qu'il y ait une partition de type "BIOS boot" sur chacun d'eux. C'est peut-être la partition /dev/nvme0n1p4 sur l'un d'eux, mais il n'y en a pas sur l'autre.

Puisque visiblement l'amorçage est en mode EFI donc l'installation de GRUB pour l'amorçage BIOS ne servirait à rien, je propose de simplement commenter les appels à la fonction install_i386_pc dans /var/lib/dpkg/info/grub-cloud-amd64.postinst.

Accessoirement, j'ai deux autres critiques concernant cette installation :
- Les partitions de swap ne sont pas en RAID, donc risque de plantage en cas de défaillance d'un SSD.
- Il y a bien une partition EFI sur chaque SSD pour la redondance de l'amorçage EFI (en supposant que le chargeur d'amorçage soit installé dans les deux, ce qui est plausible puisque efibootmgr affiche deux variables de boot EFI "debian") mais une seule est montée sur /boot/efi, donc lors d'une mise à jour de grub ou shim le chargeur d'amorçage sera réinstallé seulement sur celle-ci.

Dernière modification par raleur (05-11-2022 09:32:37)


Il vaut mieux montrer que raconter.

Hors ligne

#7 05-11-2022 10:09:44

greg40
Membre
Distrib. : Debian 12
Noyau : Linux 5.10.0-22-amd64
(G)UI : Mate
Inscription : 23-09-2022

Re : [Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

J'ai examiné le contenu du paquet grub-cloud-amd64. Le fichier postinst contient la fonction suivante qui est exécutée à l'installation du paquet et lors de la mise à jour des paquets grub ou shim :


mais le résultat est erroné dans le cas d'un ensemble RAID (/dev/md2 ->/dev/md) d'où l'erreur lors de l'exécution de grub-install.


Ouah... smile
Et effectivement :


root@hamon:~# grub-probe -t device /boot/ | sed -Ee 's/[0-9]+$//' -e 's/([0-9])p$/\1/'
/dev/md



Puisque visiblement l'amorçage est en mode EFI donc l'installation de GRUB pour l'amorçage BIOS ne servirait à rien, je propose de simplement commenter les appels à la fonction install_i386_pc dans /var/lib/dpkg/info/grub-cloud-amd64.postinst.


C'est fait. Je tente un dpkg-reconfigure grub-cloud-amd64 ?
Je me demandais si je ne pouvais désinstaller ce paquet. Je pense que c'est un des errements des images OVH...

Accessoirement, j'ai deux autres critiques concernant cette installation :
- Les partitions de swap ne sont pas en RAID, donc risque de plantage en cas de défaillance d'un SSD.


Oui c'est clairement moche sad
Je pourrais swap off, recréer le raid à la main, et swap on. Bon après cette machine à beaucoup de RAM et le swap n'a tout simplement jamais été utilisé depuis l'installation...

Il y a bien une partition EFI sur chaque SSD pour la redondance de l'amorçage EFI (en supposant que le chargeur d'amorçage soit installé dans les deux, ce qui est plausible puisque efibootmgr affiche deux variables de boot EFI "debian") mais une seule est montée sur /boot/efi, donc lors d'une mise à jour de grub ou shim le chargeur d'amorçage sera réinstallé seulement sur celle-ci.


J'ai monté la partition nvme0n1p1 et il y a bien le chargeur d'amorçage.
Il n'y a pas eu de changement lors de cette mise à jour Grub

diff -r /boot/efi/ /mnt/


Mais c'est clairement un point à vérifier à chaque mise à jour de Grub. De toute façon, je ne crois pas qu'on puisse mettre ça en RAID.

Hors ligne

#8 05-11-2022 10:30:25

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

greg40 a écrit :

Je tente un dpkg-reconfigure grub-cloud-amd64 ?


A vrai dire l'exécution du script postinst de grub-cloud-amd64 est déclenchée par un trigger après la mises à jour des paquets grub*, donc je ne sais pas vraiment comment on relance ça.

greg40 a écrit :

Je me demandais si je ne pouvais désinstaller ce paquet.


Si tu désinstalles ce paquet, le chargeur d'amorçage ne sera plus mis à jour dans la partition EFI après la mise à jour des paquets grub*. Il faudrait le remplacer par grub-efi-amd64.
Mais grub-cloud-amd64 est intéressant car il installe le chargeur GRUB UEFI avec les options --no-nvram et --force-extra-removable qui font ce dernier ne pas dépendre des variables de boot EFI, peu fiables d'après mon expérience. On peut activer ces deux options dans la configuration du paquet grub-efi-amd64, mais ce n'est pas par défaut.

greg40 a écrit :

Il n'y a pas eu de changement lors de cette mise à jour Grub


Normal, l'erreur lors de l'installation de GRUB pour BIOS a interrompu le script postinst avant l'installation de GRUB pour EFI.

greg40 a écrit :

je ne crois pas qu'on puisse mettre ça en RAID


On peut, mais c'est un hack. Il faut créer un ensemble RAID1 (miroir) avec --metadata=1.0 (superbloc à la fin, très important), le formater en FAT et le monter sur /boot/efi. La création des variables de boot EFI par grub-install ne fonctionne pas dans cette configuration car /boot/efi n'est pas une partition simple donc il faut activer les deux options mentionnées plus haut, ou éventuellement créer les variables de boot EFI à la main avec efibootmgr.

L'alternative consiste à maintenir des partitions EFI indépendantes montées sur des répertoires différents et soit synchroniser leur contenu après chaque mise à jour de grub, soit installer le chargeur dans chaque partition additionnelle.


Il vaut mieux montrer que raconter.

Hors ligne

#9 07-11-2022 10:13:17

greg40
Membre
Distrib. : Debian 12
Noyau : Linux 5.10.0-22-amd64
(G)UI : Mate
Inscription : 23-09-2022

Re : [Résolu] grub-cloud-amd64 avec machine en UEFI lors d'un apt upgrade

Merci beaucoup @Raleur,

Grace à toi j'y vois un peu plus clair dans Grub2 smile
Je vais faire une migration préventive de l'application (au cas ou) et je tenterai un reboot.

Hors ligne

Pied de page des forums