J'ai un système multi-démarrage mis en place. Le système a trois lecteurs. Le démarrage multiple est configuré avec Windows XP, Windows 7 et Ubuntu - tous sur le premier lecteur. Il me restait beaucoup d'espace non partitionné sur le disque et je le réservais pour l'ajout d'autres systèmes d'exploitation et le stockage de fichiers à l'avenir.
Un jour, je suis allé de l'avant et j'ai téléchargé Partition Wizard. J'ai créé une partition logique NTFS à partir de Windows 7, un espace non partitionné restant. Tout a bien fonctionné, jusqu'à ce que je redémarre l'ordinateur quelques jours plus tard.
Maintenant j'obtiens:
error: unknown filesystem.
grub rescue>
Tout d'abord, j'ai été surpris de ne trouver aucune sorte d'aide à la commande en essayant:
help
, ?
, man
, --help
, -h
, bash
, cmd
, etc.
Maintenant, je suis coincé avec un système non-bootable. J'ai commencé à rechercher le problème et à constater que les utilisateurs recommandent généralement de démarrer sur un Live CD et de résoudre le problème à partir de cet emplacement. Existe-t-il un moyen de résoudre ce problème à partir de grub rescue sans recourir au Live CD?
UPDATE
En suivant les étapes à partir de commandes persistantes saisies à GRUB rescue , j'ai pu démarrer à l'invite initramfs. Mais pas n'importe où plus loin que ça.
Jusqu'ici, loin de lire le manuel sur grub rescue , j'ai pu voir mes lecteurs et partitions à l'aide de la commande ls
. Pour le premier disque dur, je vois ce qui suit:
(hd0) (hd0, msdos6) (hd0, msdos5) (hd0, msdos2) (hd0, msdos1)
Je sais maintenant que (hd0, msdos6) contient Linux, puisque ls (hd0,msdos6)/
répertorie les répertoires. D'autres donneront "erreur: système de fichiers inconnu."
UPDATE 2
Après les commandes suivantes, j'arrive maintenant au menu de démarrage et je peux démarrer sous Windows 7 et Ubuntu, mais au redémarrage, je dois répéter ces étapes.
ls
ls (hd0,msdos6)/
set root=(hd0,msdos6)
ls /
set prefix=(hd0,msdos6)/boot/grub
insmod /boot/grub/linux.mod
normal
UPDATE 3
Merci Shashank Singh, avec vos instructions, j’ai simplifié mes étapes comme suit. J'ai appris de vous que je peux remplacer msdos6 par un 6 et que je ne peux que faire insmod normal
au lieu de insmod /boot/grub/linux.mod
. Maintenant, je dois juste comprendre comment sauvegarder ces paramètres à partir de grub lui-même, sans démarrer sous aucun OS.
set root=(hd0,6)
set prefix=(hd0,6)/boot/grub
insmod normal
normal
UPDATE 4
Eh bien, il semble que le démarrage sous Linux soit obligatoire. Après avoir démarré sous Ubuntu, j’ai exécuté les étapes suivantes décrites dans le manuel :
Sudo update-grub
Sudo grub-install /dev/sda
Cela n'a pas résolu le problème. Je reçois toujours l'invite de sauvetage. Que dois-je faire pour le réparer définitivement?
J'ai aussi appris que les numéros de lecteur comme dans hd0 doivent être traduits en lettres de lecteur comme dans/dev/sda pour certaines commandes. HD1 serait SDB, HD2 serait SDC, et ainsi de suite. Les partitions listées dans grub en tant que (hd0, msdos6) seraient traduites en/dev/sda6.
UPDATE 5
Je ne pouvais pas comprendre pourquoi ce qui suit n'a pas résolu le problème:
Sudo update-grub
Sudo grub-install /dev/sda
J'ai donc téléchargé boot-repair sur la base d'une réponse de https://help.ubuntu.com/community/Boot-Repair post. Cela a semblé faire l'affaire après avoir choisi l'option "Réparation recommandée (répare les problèmes les plus fréquents)".
Je ne pouvais pas comprendre pourquoi ce qui suit n'a pas résolu le problème:
Sudo update-grub
Sudo grub-install /dev/sda
J'ai donc téléchargé boot-repair sur la base d'une réponse de commandes de persistance saisies sur GRUB rescue post. Cela a semblé faire l'affaire après avoir choisi l'option "Réparation recommandée (répare les problèmes les plus fréquents)".
J'ai également utilisé Grub Customizer pour personnaliser l'ordre des entrées de démarrage.
Il existe une autre cause à ce problème. Dans ce cas particulier, GRUB était en quelque sorte corrompu et devait être réparé ou réinstallé. Cependant, comme indiqué dans le sauvetage de Grub échoue avec "Réparation du démarrage" avec l'erreur "Système de fichiers inconnu" , il est également possible que la partition racine sur laquelle GRUB soit installé puisse être corrompue. Pour résoudre ce problème:
C'est une solution possible, mais il ne faut pas l'utiliser, de peur que votre partition racine ne soit davantage corrompue. En exécutant la commande fsck -t ext4 /dev/sda1
, ce programme tente de rechercher et de réparer les erreurs sur un système de fichiers corrompu. Remplacez sda1 par votre partition racine réelle. Remplacez ext4 par le système de fichiers actuel; vous devez connaître le système de fichiers sinon la partition sera plus corrompue. Voir Réparation d'un système de fichiers corromp pour plus d'informations.
Même si cette question a une réponse, il existe un autre moyen de résoudre le problème qui a fonctionné pour moi. Les étapes sont expliquées dans la vidéo douloureuse Grub Rescue - Guide du débutant . En bref, il faudra réinstaller GRUB 2 au lieu de le réparer.
Parce que cette vidéo est si pénible à regarder, je vais énumérer les étapes ci-dessous (comme je devrais le faire indépendamment de la pénibilité de regarder la vidéo)
mount
pour rechercher le nom de la partition.Sudo mkdir /media/ubuntu
. Ensuite, montez simplement votre partition dans ce dossier. Sudo mount /dev/sdxx /media/ubuntu
où xx
of sdxx
est déterminé à l'étape 3.Liez les répertoires suivants du répertoire racine de votre live CD/USB à celui de votre répertoire racine sur votre version d’Ubuntu. Les répertoires sont les suivants: dev
proc
and sys
. Faites-le avec les commandes suivantes:
Sudo mount --bind /dev /media/ubuntu/dev
Sudo mount --bind /sys /media/ubuntu/sys
Sudo mount --bind /proc /media/ubuntu/proc
Changez le répertoire racine en celui de votre partition Ubuntu. Sudo chroot /media/ubuntu/
Sudo grub-install /dev/sdx
Et voilà comment réparer GRUB en utilisant un live CD/USB. Cette méthode a été développée par l'utilisateur de YouTube, crazytechzone.
Utilisation:
set prefix=(hdX,Y)/boot/grub
. Utilisez les valeurs déterminées précédemment.set prefix=(hd0,5)/boot/grub
set root=(hdX,Y)
. Exemple: set root=(hd0,5)
insmod normal
. Essayez de charger le module normal.normal
name__Nous avons essentiellement besoin de GRUB pour savoir où se trouve le dossier /boot/grub
. Si cela ne fonctionne pas, je suppose que faire une installation de GRUB à partir d'un CD de démarrage est une bonne option.
C'est drôle, j'ai aussi eu le même problème il y a une heure!
En tout cas, c'est ce que j'ai fait.
Charger Ubuntu:
set root=(hd0,6)
set prefix=(hd0,6)/boot/grub
insmod normal
normal
puisque votre Ubuntu est installé dans 6 non?
terminal d'exécution:
Sudo -i *to access root*
grub-install --root-directory=/mnt/ /dev/sda
Sudo update-grub
Sudo grub-install /dev/sda
Une autre cause du problème est que le système de fichiers sur le lecteur de démarrage peut être bloqué dans de rares cas. Comme indiqué dans d’autres réponses, j’utilise d’abord la commande ls
pour répertorier tous les lecteurs/partitions de l’invite GRUB rescue, mais all signaler erreur de système de fichiers inconnue . J'ai finalement résolu le problème sur Ubuntu 16.04 (Xenial Xerus) en récupérant le système de fichiers comme suit:
Démarrez à partir d'une clé USB (essayez Ubuntu sans installer)
Recherchez le lecteur de démarrage (vérifiez la capacité du lecteur ou effectuez la procédure fsck
sur chaque partition):
Sudo fdisk -l
Récupérer le système de fichiers:
Sudo fsck /dev/sdb1
Une fois le système de fichiers réparé et nettoyé, redémarrez la machine à partir du lecteur de démarrage.