La Fibre

Télécom => Logiciels et systèmes d'exploitation => Linux Linux (usage serveur) => Discussion démarrée par: vivien le 06 avril 2019 à 22:20:43

Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: vivien le 06 avril 2019 à 22:20:43
Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu

Les menus des vieux serveurs Dell peuvent être assez déroutants par rapports aux serveurs récents avec interface graphique.

Mon premier conseil serait de ne pas installer un système d'exploitation en mode UEFI sur un vieux serveur, privilégiez le mode "legacy" du BIOS traditionnel.

Voici le bug auquel j'ai été confronté :
Ce matin, réveillé tôt, j'ai fait des mises à jour de sécurité qui nécessitent un reboot.
Dans le lot, busybox-initramfs et busybox-static ont été mis à jour, je pense que c'est lui le fautif.

Log started: 2019-04-04  06:31:40
(Lecture de la base de données...
Préparation du dépaquetage de .../busybox-initramfs_1%3a1.22.0-15ubuntu1.4_amd64.deb ...
Dépaquetage de busybox-initramfs (1:1.22.0-15ubuntu1.4) sur (1:1.22.0-15ubuntu1) ...
Préparation du dépaquetage de .../busybox-static_1%3a1.22.0-15ubuntu1.4_amd64.deb ...
Dépaquetage de busybox-static (1:1.22.0-15ubuntu1.4) sur (1:1.22.0-15ubuntu1) ...

Vers 6h35, j'ai redémarré le serveur, une opération qui entraîne une courte indisponibilité (c'est la raison pour laquelle je le fait tôt le matin)

Il n'a pas réussi à booter, l'UEFI Dell ne trouvant pas d'entrée UEFI pour démarrer (même GRUB ne se lance pas, mais le disque dur est bien visible dans l'UEFI et il dispose bien de tous les fichiers quand on boot sur une clé USB)

Ubuntu es installé en mode UEFI et non pas en mode Legacy, c'est juste une habitude que j'ai pris de toujours tout mettre en UEFI, mais sur un vieux serveur (c'est un Dell PowerEdge R210 II avec le BIOS en version 2.8.0 (c'est une des derniers versions, les versions suivantes ne réalisant que des mises à jour du microcode pour le processeur)

En mode UEFI, il y a une partition spécifique UEFI de 512 Mo (montée dans /boot/efi/ si vous souhaitez regarder la votre) qui contient dans un dossier /EFI/ubuntu 4 fichiers : grub.cfg, grubx64.efi, mmx64.efi et shimx64.efi
C'est shimx64.efi qui doit être lancé par l'UEFI.

Dell semble stocker l'information sur le disque dans un fichier /EFI/Dell/BootOptionCache/BootOptionCache.dat qui ce matin n'existait plus. (le dossier /EFI/Dell/BootOptionCache/ existe bien mais il est vide)

Le voici suite au rajout de l'entrée dans l'UEFI par Florian de Maxnod :
(https://lafibre.info/images/stats/201904_Dell_UEFI_BootOptionCache.png)

Il n'est pas forcèment facile de guider une personne qui interviens dans le datacenter pour corriger le bug, je vous fait donc des copie d'écran de chaque menu.

Au boot la configuration du système est accessible via un appui sur F2 :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_01.png)

Déception, il n'y a que peu d'options :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_02.png)

Le menu Boot Settings ne permet pas de rajouter une entrée UEFI, contrairement à ce que propose d'autres fabricants d'UEFI :

(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_03.png)
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: vivien le 06 avril 2019 à 22:24:02
Pour rajouter une entrée, il faut lancer le "Boot Manager" via un appui sur  F11 :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_01.png)

Quand l'UEFI oublie votre entrée, il affiche uniquement "Windows Boot Manager", une entrée qui est présent par défaut, même si le système n'a jamais vu de Windows.

Il faut aller dans "Boot Settings" :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_04.png)

Puis "Add Boot OPtion" :

(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_05.png)
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: vivien le 06 avril 2019 à 22:27:39
On sélectionne le disque dur :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_06.png)

On navigue alors dans la partition EFI (Une partition EFI de 100 à 600 Mo est indispensable pour installer un système en mode EFI) :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_07.png)

Le fichier à charger est dans /EFI/ubuntu/
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_08.png)

C'est "shimx64.efi" :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_09.png)
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: vivien le 06 avril 2019 à 22:29:46
On rajoute une description pour décrire l'entrée UEFI :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_10.png)

Ici je mets "ubuntu" mais vous pouvez mettre ce que vous souhaitez :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_11.png)

On sauvegarde :

(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_12.png)
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: vivien le 06 avril 2019 à 22:31:37
On place ensuite l'entrée en premier dans la liste : sélectionner "Set Boot Order" :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_13.png)

Sélectionner l'entrée crée et appuyer sur la touche +pour la faire monter tout en haut :
(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_14.png)

Enregistrer :

(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_15.png)
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: vivien le 06 avril 2019 à 22:32:23
C'est terminé, votre système va fonctionner !

(https://lafibre.info/images/materiel/201903_boot_uefi_dell_poweredge_r210ii_16.png)
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: alain_p le 06 avril 2019 à 22:51:16
Merci encore pour ces explications détaillées. Tu as un console distante type iDRAC pour faire ces copies d'écrans (je ne sais pas s'il y a une iDRAC Entreprise sur des R210) ?

Je n'avais pas compris la manip par rapport à tes explications de la dernière fois où tu parlais 'BootOptionCache.dat' manquant. Mais je n'avais pas bien lu, c'est en fait, comme tu le dis, ce fichier qui lui indique de lancer le boot loader shimx64.efi.

Ce n'était pas évident à trouver, à mon avis. Il y avait un message d'erreur qui indiquait où chercher ? Je sais que l'on peut avoir des sueurs froides quand cela arrive, le temps de trouver où est la problème.

Merci donc pour les explications, cela peut servir...
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: thenico le 06 avril 2019 à 23:22:08
Normalement, la présence du fichier EFI/BOOT/BOOTX64.EFI provoque l'apparition automatique d'une entrée dans le Boot Manager.
Est-ce que le linux boot si tu choisi un des Embedded SATA Port A Disk ?
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: vivien le 07 avril 2019 à 08:34:59
A priori la seule entrée était "Windows Boot Manager" d’après de Florian de Maxnod, une entrée que Dell met par défault pour que Windows n'ait jamais de pb pour démarrer.

La présence du fichier EFI/BOOT/BOOTX64.EFI ne provoque pas l'apparition automatique d'une entrée dans le Boot Manager  >:(

Le pire c'est l'UEFI des serveurs IBM System X 3550 : Après l'installation d'Ubuntu il ne boot pas dessus, il faut rajouter manuellement l'entrée dans l'UEFI.
J'ai aussi eu des pb de boot suite à mise à jour d'Ubuntu sur un serveur IBM en UEFI.

Oui, les copie d'écran sont réalisées avec un iDrac Entreprise. J'ai bien galéré : iDrac demande soit ActiveX, soit Java et il force le HTTPS
J'ai tenté en premier ActiveX avec Internet Explorer 11 sous Windows 10 : il refuse de rajouter une exception et rajouter le certificat dans le magasin n'est pas la solution: comme le nom de domaine ne correspond pas, cela affiche le message d'erreur.
Bref la seule solution, une veille version de Firefox avec Java => Tutoriel pour activer Java dans Firefox (https://lafibre.info/navigateurs/java-firefox/)
Titre: Tutoriel pour corriger le boot UEFI d'un vieux serveur Dell qui a oublié Ubuntu
Posté par: vivien le 07 avril 2019 à 09:00:25
Une solution pour modifier l'UEFI depuis l'OS, c'est Efibootmgr (à lancer avec les droits root) mais cela ne fonctionnait pas avec mon serveur.

La doc => https://doc.ubuntu-fr.org/efibootmgr

Voici ce que donne l'info sur plusieurs serveurs :

Serveur de test :
# efibootmgr -v
BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0002,0005,0004,0000
Boot0000* ubuntu PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0,0,0)/HD(1,GPT,86cfd122-2e75-4209-ad84-8e077946e111,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* Harddisk:          WDC WD5003ABYX-18WERA0          BBS(HD,Harddisk:          WDC WD5003ABYX-18WERA0          ,0x500)................-...........A..........................................
Boot0002* ubuntu HD(1,GPT,86cfd122-2e75-4209-ad84-8e077946e111,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0003* BEV device:        Slot 1 NIC: IBA XE Slot 0100 v2202 BBS(128,BEV device:        Slot 1 NIC: IBA XE Slot 0100 v2202,0x0).......................................................................
Boot0004* EFI Fixed Disk Boot Device 1 PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0,0,0)/HD(1,GPT,86cfd122-2e75-4209-ad84-8e077946e111,0x800,0x100000)
Boot0005* Windows Boot Manager HD(1,GPT,61f605be-4825-44ed-b69b-87fcf1fdee81,0x800,0x100000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...a................

Serveur LaFibre.info :
# efibootmgr -v
BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0003,0002
Boot0000* Harddisk:          Samsung SSD 850 PRO 512GB        BBS(HD,Harddisk:          Samsung SSD 850 PRO 512GB       ,0x500)................-...........A..........................................
Boot0002* lafibre.info PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0,0,0)/HD(1,GPT,646928cf-2f89-4d13-983a-5e68a6ac153a,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0003  Windows Boot Manager HD(2,GPT,5e4900cd-957f-438d-a111-06ac2d9d1ed8,0xe1800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................

Serveur Dell PowerEdge R330 (serveur récent avec du RAID harware) :
# efibootmgr -v
BootCurrent: 0000
BootOrder: 0000
Boot0000* ubuntu HD(1,GPT,ef7f70c3-e783-4816-b9a9-b1c51a4990ad,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)

PC Desktop: Dell Inspiron 3847 :
# efibootmgr -v
BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0002,0006,000A,0000,0001
Boot0000* P0: SanDisk Ultra II 480GB    BBS(17,,0x0)
Boot0001* P4: TSSTcorp DVD+/-RW SH-216DB BBS(19,,0x0)
Boot0002* ubuntu HD(1,GPT,adb587bf-941a-496d-af54-2b4ae9002613,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0006* UEFI OS HD(1,GPT,adb587bf-941a-496d-af54-2b4ae9002613,0x800,0x100000)/File(\EFI\BOOT\BOOTX64.EFI)
Boot000A* ubuntu HD(1,GPT,adb587bf-941a-496d-af54-2b4ae9002613,0x800,0x100000)/File(\EFI\Ubuntu\grubx64.efi)