Comment utiliser set et pipefail dans les scripts Bash sous Linux
Agence web » Actualités du digital » Comment réparer l’erreur de démarrage Linux dans le BIOS

Comment réparer l’erreur de démarrage Linux dans le BIOS

Les mises à jour GRUB sont connues pour entraîner le démarrage des ordinateurs Linux dans les paramètres BIOS ou UEFI. Le correctif pour cela tire parti d’une astuce de récupération système utile que vous devriez vraiment connaître.

Une étude de cas : GRUB 2:2.06.r322

Une mise à jour du système pour les distributions Linux basées sur Arch et Arch à l’été 2022 comprenait une nouvelle version de GRUB. GRUB signifie get tunifié bchargeur de démarrage.

Un chargeur de démarrage est une application qui lance le processus de démarrage lorsque votre ordinateur est allumé. Plusieurs outils logiciels et utilitaires doivent être lancés, à partir de la bonne partition et dans le bon ordre, pour finalement aboutir à un système d’exploitation opérationnel et accessible. GRUB lance cette cascade d’événements.

Si plusieurs systèmes d’exploitation sont installés sur votre ordinateur, GRUB propose un menu vous permettant de sélectionner le système d’exploitation à utiliser. L’un des changements de code apportés à GRUB 2: 2.06.r322 a ajouté la prise en charge d’une nouvelle option GRUB, --is-supported. L’option est utilisée pour indiquer si une capacité de démarrage à partir du micrologiciel est présente ou non. Si c’est le cas, GRUB ajoute une entrée au menu de démarrage pour vous permettre de démarrer dans vos paramètres EUFI.

La nouvelle option a été référencée dans un script appelé « 30_uefi-firmware.in ». Le diff pour ce fichier montre qu’un if déclaration a été supprimée et deux lignes ont été ajoutées.

L’une des nouvelles lignes était un remplacement if déclaration. L’autre nouvelle ligne contient fwsetup --is-supported . Le « fw » dans « fwsetup » signifie firmware. Mais parce que cette ligne est au dessus le nouveau if déclaration, il va toujours courir. Si c’était à l’intérieur du corps du if déclaration, il ne s’exécuterait que lorsque le test dans le if déclaration résolue à vrai.

Cela a causé des problèmes sur de nombreux ordinateurs UEFI, mais pas sur tous. Cela dépendait si la version de GRUB que vous aviez déjà installée prenait en charge cette commande. Les machines affectées feraient l’une des deux choses. Soit ils entraient dans une boucle de démarrage où le processus de démarrage n’était jamais terminé mais redémarré en permanence, soit l’ordinateur démarrait directement dans les paramètres du micrologiciel UEFI. Dans tous les cas, il n’y avait aucun moyen de forcer votre ordinateur à démarrer sous Linux.

Lorsque vous êtes confronté à des situations comme celle-ci, il y a toujours l’option nucléaire de faire une réinstallation complète. Cela fonctionnera, mais selon la façon dont votre disque dur a été partitionné, sans une sauvegarde récente, vous risquez de perdre des données.

La méthode à faible impact utilise chroot et un Live USB ou Live CD/DVD. C’est une bonne technique pour comprendre et préparer toutes sortes de pannes système lorsque vous ne pouvez pas démarrer ou vous connecter à votre ordinateur Linux.

La technique que nous utiliserons

Pour utiliser cette technique, vous devez disposer d’une clé USB ou d’un CD/DVD amorçable contenant une distribution Linux, qui démarre dans une instance Linux en direct. Généralement, ceux-ci sont appelés Live USB ou Live CD/DVD. Toutes les principales distributions prennent en charge cette fonction.

Nous n’allons rien installer, il n’est donc pas nécessaire que le média en direct soit la même distribution que celle que vous avez installée sur votre ordinateur. Vous pouvez utiliser une clé USB Ubuntu pour réparer un ordinateur EndeavourOS, par exemple. Si vous n’avez accès à aucun média en direct, vous devrez utiliser un autre ordinateur pour télécharger une image et l’écrire sur une clé USB ou sur un CD/DVD.

Lorsque vous démarrez à partir du support en direct, vous pourrez monter et accéder à votre système de fichiers existant. Votre système de fichiers installé apparaîtra dans le cadre du système de fichiers de Linux qui a été démarré à partir du support en direct. C’est génial. Si nous pouvons y accéder, nous avons une chance de le réparer. Mais cela soulève un problème.

La racine de ce système de fichiers hybride est la racine du système de fichiers multimédia en direct, et non la racine de votre système de fichiers installé. Pour que les chemins de fichiers configurés dans votre système Linux référencent leurs emplacements cibles corrects – quelque part dans votre système de fichiers, et non quelque part par rapport à la racine du Linux en direct – nous devons utiliser chroot pour définir une nouvelle racine pointant vers la racine de votre installée système de fichiers. En d’autres termes, les chemins commençant par « / » utiliseront la racine de votre système de fichiers comme point de départ.

L’ordinateur de test que nous avons utilisé pour cela utilise le ext4 système de fichiers, mais vous pouvez également utiliser cette technique sur d’autres systèmes de fichiers. Il vous suffit d’identifier les partitions ou les volumes que vous devez monter et où les monter. Les principes sont les mêmes.

Mettre en pratique

Nous avons créé une clé USB amorçable et démarré notre ordinateur en panne à partir de celle-ci. La distribution que nous avons utilisée était EndeavourOS. Le média en direct EndeavourOS démarre dans l’environnement de bureau XFCE 4.

Le média en direct EndeavourOS démarré dans l'environnement de bureau XFCE

Pour identifier quelles partitions contiennent la racine de votre système de fichiers et quelle est la partition de démarrage, ouvrez une fenêtre de terminal et utilisez le fdisk commande. Nous utilisons le -l (liste des partitions). Vous devrez utiliser sudoaussi.

sudo fdisk -l

Utilisation de la commande sudo fdisk -l pour répertorier les partitions et les périphériques

Faites défiler la sortie jusqu’à ce que vous voyiez les entrées intitulées « Système EFI » et « Système de fichiers Linux ».

La sortie de la commande sudo fdisk -l avec les partitions de démarrage et racine en surbrillance

Sur cet ordinateur, ils sont tous les deux sur le sda disque dur. Ils sont dans les partitions un et deux, comme indiqué par les étiquettes de partition /dev/sda1 et /dev/sda2.

Sur votre ordinateur, ils peuvent se trouver sur des disques durs et des partitions différents. Prenez soin de noter les partitions sur lesquelles ils se trouvent, nous devrons les utiliser dans les prochaines commandes.

Nous devons monter les systèmes de fichiers sur ces partitions en les attachant au système de fichiers en direct. La mount commande le fera pour nous. N’oubliez pas que vos étiquettes de partition sont susceptibles d’être différentes, alors assurez-vous d’utiliser celles des résultats de votre fdisk commande.

sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi

Montage des systèmes de fichiers racine du système de démarrage et de fichiers

Pour que la racine effective du système de fichiers commence à la racine de votre système de fichiers installé, nous utiliserons chroot pour définir la racine comme point de montage « /mnt ». C’est là que la racine de votre système de fichiers installé est greffée sur le système de fichiers en direct.

sudo chroot /mnt

Utilisation de la commande chroot pour créer une nouvelle racine effective

Notez que l’invite de commande change pour indiquer que vous êtes maintenant effectivement connecté en tant que root et que vous vous trouvez dans le répertoire racine « / » du système de fichiers de votre ordinateur.

Nous pouvons facilement tester cela en accédant au répertoire « /home » et en vérifiant quels répertoires existent à l’intérieur.

cd /home
ls

Utilisation de ls pour répertorier les comptes d'utilisateurs

Vous devriez voir un répertoire pour chaque utilisateur configuré sur votre ordinateur, y compris un pour votre propre compte d’utilisateur. Cet ordinateur a un seul utilisateur, appelé « dave ». Si nous avions utilisé cd /home avant d’utiliser le chroot commande, nous aurions entré le répertoire « /home » du système de fichiers en direct.

Juste pour être clair, vous accédez maintenant votre vrai système de fichiers comme le racine utilisateur, alors soyez prudent.

Pour résoudre le problème avec GRUB 2:2.06.r322, tout ce que nous avions à faire était d’exécuter le grub-install commande.

grub-install

Exécution de la commande grub-install pour corriger l'erreur GRUB boot to BIOS

Fonctionnement grub-install aveuglément comme cela n’est généralement pas recommandé. Dans ce cas, c’est ce qu’il fallait.

Réparer ou remplacer

Si vous essayez de résoudre un problème différent, vous devrez consulter les forums de votre distribution pour trouver la solution appropriée à votre problème. S’il s’agit d’une plainte répandue, vous trouverez bientôt une solution.

À tout le moins, maintenant que vous pouvez accéder à votre système de fichiers, vous pouvez copier vos données sur un support amovible. Si vous décidez de faire une réinstallation complète, vous ne perdrez pas de données.

★★★★★