[Résolu] GRUB rescue

Tags: #<Tag:0x00007f509f76c838> #<Tag:0x00007f509f76c630>

Bonjour à tous.

Il y a quelques semaines, j’ai installé un dual-boot Win10/Debian 8.8.0 quasiment sans aucun souci. “Quasiment”, car ma partition Windows n’apparait pas dans le GRUB, mais ce n’est pas un problème car je peux passer par mon BIOS pour choisir sur quoi booter.

J’ai pu travailler normalement sur chacun des OS jusqu’à maintenant, mais j’ai été confronté à un problème d’espace disque lors de l’installation de dépendances node. J’ai vu trop petit en partitionnant.
Bref, je me dis que je peux simplement redimensionner mes partitions, ce que je commence à faire (première erreur), via Partition Wizzard sous Windows (deuxième erreur, j’aurais dû le faire avec GParted, mais j’ai voulu gagner quelques inutiles secondes et ne pas reboot).
Je réduis ma partition Windows, redémarre pour que cela prenne effet, et me rends compte que la partition GRUB ne peut être déplacée, donc décide de restaurer ma partition Windows dans sa taille initiale.

Ce n’est qu’au moment de repasser sous Linux que je suis tombé sur le GRUB rescue.

error: file '/boot/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue> _

Je tente avec ma live USB que je n’ai pas encore formatée afin de faire in grub repair, et je tombe sur le même message alors que, d’après le bios, j’ai bien booté sur la clé.
Impossible de réparer quoi que ce soit automatiquement donc.
Du coup, je suis paumé, pour pas dire fichu.

Pour info, je joins les partitions que j’ai à l’heure actuelle.

Je sais que sous Linux, mes partitions sda3 et sda4 correspondent à mes partitions windows, je suppose que sda5 est le grub, sda6 mon système debian et sda 7 mon home (aucune certitude pour l’ordre des deux derniers).

Y a-t-il un moyen de récupérer mon accès linux sans trop de difficultés ? Si non, est-il possible de supprimer la partition GRUB et la réinstaller par la suite ?
Et dans le cas où je puisse récupérer un accès, est-il possible d’augmenter la taille de ma partition linux ou est-ce que c’est foutu ?

Merci d’avance,
Bjorge

C’est parce que Windows est installé en mode EFI et tu as installé Debian en mode BIOS/legacy. Les chargeurs d’amorçage BIOS et EFI ne sont pas compatibles.

Je suppose que ce que tu appelles la “partition GRUB” est la partition de 286 Mio sans format connu marquée “other”, qui doit être de type “BIOS boot”. Elle n’avait pas besoin d’être aussi grosse, 1 Mo suffisait largement. Et en effet si tu l’avais déplacée, GRUB aurait planté avant même de pouvoir lancer le shell de secours.

Si tu n’as rien fait d’autre que réduire une partition Windows, il n’y a pas de raison de tomber sur le shell GRUB rescue. Le fichier manquant se trouve dans la partition racine de Debian.

Mais si tu as réduit une partition, comment se fait-il qu’il n’y a aucun espace libre visible dans la capture d’écran ?

D’abord, il faut vérifier si le contenu de la partition racine est intact.

Petites vérifications rapides depuis le shell GRUB rescue :

set
ls
ls /

Oui, mais il vaut mieux le faire depuis le système Debian afin de pouvoir redémarrer ensuite.

Laquelle et de combien ? Elles ne sont pas bien grosses.

Il s’avère que ma clé a été corrompue. J’ai récupéré un ISO ubuntu pour faire tourner boot-repair, impossible d’effectuer l’auto-repair (j’ai collé à la fin du message les commandes utilisées) mais voici le log : https://pastebin.com/R0iDNkim

Pour répondre à tes questions :

En effet, mais j’ai laissé l’utilitaire sélectionner la taille nécessaire, n’étant pas sûr de moi sur ce dont il avait besoin.

Comme précisé dans le message initial, j’ai tout remis en l’état avant de switcher sous debian.

Je reboot et teste ça, je posterai le résultat dans un nouveau message.[quote=“PascalHambourg, post:2, topic:73853”]
Laquelle et de combien ? Elles ne sont pas bien grosses.
[/quote]

Les deux, d’environ 5Go. Pas besoin de plus, j’utilise Linux sur ce PC pour dev, et ma partition de fichiers est montée automatiquement. Si GParted est en mesure de
1- réduire ma partition windows proprement
2- déplacer Grub
3- augmenter mes partitions linux
je pense que ça serait nickel.

Concernant le boot repair, voici ce que j’ai fait :

ubuntu@ubuntu:~$ sudo chroot "/mnt/boot-sav/sda6" dpkg --configure -a
ubuntu@ubuntu:~$ sudo chroot "/mnt/boot-sav/sda6" apt-get install -fy
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cinnamon-common cinnamon-desktop-data gir1.2-cinnamondesktop-3.0
  gir1.2-meta-muffin-0.0 libcinnamon-desktop4 libmuffin0 muffin-common
  xscreensaver-data
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 39 not upgraded.
ubuntu@ubuntu:~$ sudo chroot "/mnt/boot-sav/sda6" apt-get purge -y --force-yes grub*-common grub-common:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'grub-common' for regex 'grub*-common'
E: Unable to locate package grub-common

Merci beaucoup @PascalHambourg !

Voici mes résultats du grub rescue.

D’abord la réparation, je répondrai à ton avant-dernier message plus tard.

Le contenu ressemble à celui de /home, pas de /.
Peut-être que ton super-outil a renuméroté les partitions. La numérotation ne correspond pas forcément à la disposition physique.
Il faut trouver la partition / (qui contient boot/, bin/…) en explorant chaque partition jusqu’à trouver la bonne (attention QWERTY) :

ls (hd0,gpt6)/
ls (hd0,gpt8)/

etc.
EDIT : d’après ton avant-dernier message, c’est la n° 6.

Quand tu l’auras trouvée, par exemple si c’est la n° 6 :

set root=hd0,gpt6
set prefix=(hd0,gpt6)/boot/grub
insmod normal
normal

Si le menu de GRUB s’affiche et le système démarre, il faudra réinstaller GRUB pour ne pas devoir refaire tout ça à chaque démarrage :

grub-install /dev/sda

(partition BIOS boot pour GRUB)

Quel utilitaire ? Je serais étonné que le partitionneur de l’installateur Debian choisisse une taille autre que 1 Mo pour cette partition. Ce n’est pas une partition système EFI ni une partition /boot.

  1. J’aurais plutôt tendance à confier le redimensionnement des partition de chaque système à l’outil de gestion des partitions de ce système. Autrement dit, réduire la partition Windows avec le gestionnaire de disques de Windows.

  2. Déplacer la partition GRUB n’a aucun intérêt puisqu’il faudra réinstaller GRUB de toute façon. Il est aussi simple de la supprimer et de la recréer. Vu sa petite taille, mon emplacement de prédilection pour cette partition est l’espace libre légèrement inférieur à 1 Mo situé entre la table de partition du début du disque et la première partition. Au moins elle ne gênera pas d’éventuels futurs redimensionnements. Certains outils peuvent renacler à créer une partition à cet endroit, arguant qu’elle ne sera pas alignée, mais c’est sans importance. D’autres n’afficheront même pas cet espace libre et seront donc impropres à cette opération.

  3. La difficulté va être qu’agrandir les partitions Linux se fera en les déplaçant vers la gauche où se situe l’espace libre. Or cela ne peut être fait que si les partitions ne sont pas montées. Dans le système lui-même, on peut se débrouiller pour ne pas monter /home, mais la partition racine est forcément montée. Conclusion : le déplacement/agradissement de la racine ne pourra pas être fait depuis le système Debian lui-même.
    A la limite tu pourrait déplacer les partitions ext4 (sans les redimensionner) avec ton super-outil sous Windows. Ensuite tu pourrais les agrandir par la droite depuis le système Debian puisque cette opération est faisable lorsqu’elles sont montées.

Je n’ai pas bien compris quel était le but de cette opération ?

En tout cas pas besoin de chercher la partition racine, c’est (hd0,gpt6).

J’ai pu récupérer grub, merci beaucoup @PascalHambourg !

J’ai un peu recherché comment j’avais procédé entre-temps, et je suis retombé sur la démarche que j’ai utilisée : https://debian-facile.org/doc:install:dual-boot-debian-et-windows-sur-un-ordinateur-equipe-de-l-uefi
S’il n’est pas utile de laisser plus d’1Mo, je leur suggérerai la modification en effet.

Concernant la réinstall grub, il suffit que je supprime la partition de 286Mio et relance grub-install /dev/sda depuis debian ?
Et pour agrandir les partitions linux, je préfère ne pas prendre de risque et faire ça depuis un live-usb avec GParted.
Tout ça parce que j’ai eu la flemme de changer d’OS au moment de resize mes partitions. Malgré mes quelques années d’utilisation de Linux, je suis encore parfois surpris par mes mauvaises habitudes :slight_smile:

C’est l’utilitaire boot-repair qui m’a demandé d’effectuer cette étape, j’ai lu que l’auto-repair résolvait souvent ce genre de problèmes assez facilement, et comme il n’a pas fonctionné j’ai cru pertinent de le retranscrire. Le paste que j’ai fait n’était que la première étape d’une série à priori, mais l’utilitaire ne m’a pas laissé aller plus loin.

Cette page dédiée au multiboot UEFI ne parle à aucun moment de la création d’une partition d’amorçage BIOS (BIOS boot). Tu as confondu avec la partition système EFI.

Avant de réinstaller GRUB, il faut recréer une partition d’amorçage BIOS.

Désolé du délai de réponse, je n’ai pas eu le temps de terminer plus tôt mon restore.
J’ai réussi à tout remettre en ordre.

Voici mes partitions :

Pour être sûr de ne pas tout re-casser, peux-tu me confirmer qu’il s’agit bien de la bonne démarche ? Depuis une Live-USB :

  1. Suppression de /dev/sda5
  2. Création d’une nouvelle partition primaire en ext4 sans nom avec pour étiquette bios_grub de 1 Mio
  3. Déplacement et resize de /dev/sda5 et /dev/sda6 selon mes besoins
  4. Exécution de grub-install /dev/sda

Merci encore @PascalHambourg, sujet bientôt résolu !
Bonne journée,
Bjorge

Les opérations 1, 2 et 4 n’ont pas besoin d’être réalisées depuis un système live.

La partition bios_grub/BIOS boot n’est pas en ext4, elle n’a pas besoin d’être formatée. “bios_grub” n’est pas une étiquette (label) mais un “drapeau” (flag) ; en fait cela correspond à un type de partition, mais c’est de cette façon que (g)parted gère les types de partition GPT. Je ne sais pas si Gparted sait créer ce type de partition.

Réinstaller GRUB dans la nouvelle partition bios_grub/BIOS boot depuis le système live n’est pas si simple que juste exécuter grub-install /dev/sda. Il faut

  • soit ajouter l’option --boot-directory=/point_de_montage_racine/boot pour spécifier le répertoire /boot du système installé monté sur /point_de_montage et éventuellement --target=i386-pc pour spécifier la variante pour PC BIOS de GRUB (si le système live a démarré en mode EFI)
    , en supposant que grub-install soit disponible dans le système live

  • soit exécuter cette commande dans un chroot lancé sur la racine du système installé (et monter préalablement tout ce qui est nécessaire : /proc, /dev…)

Ce que je ferais, en deux temps :

  1. Depuis le système installé :
    1.1. Création de la nouvelle partition bios_grub/BIOS boot avec le programme que tu préfères (fdisk, gdisk, parted, Gparted… idéalement dans l’espace avant la partition système EFI.
    1.2. Suppression de l’ancienne partition bios_grub/BIOS boot.
    1.3. Réinstallation de GRUB avec grub-install /dev/sda
    1.4. Redémarrage pour vérifier que GRUB se lance bien. Pas besoin d’aller plus loin que le menu de GRUB.

  2. Depuis le système live, déplacement et redimensionnement des deux partitions ext4.

Tout est fonctionnel, merci beaucoup, sujet résolu !

Il y a une case à cocher pour indiquer que le sujet est résolu.