La mise à niveau de Windows 10 a conduit au sauvetage de grub


75

J'étais à double amorçage de Windows 7 et de Linux Ubuntu sur mon bureau, et c'est aujourd'hui qu'ils ont distribué des mises à niveau gratuites de Windows 10. C'est excitant! J'ai eu la mise à jour et elle était en cours d'installation, et je suis partie pour aller faire une sieste de 30 minutes. Cependant, lorsque je suis revenu sur mon ordinateur, cela m'a conduit à l'invite de secours.

error: no such partition.
Entering rescue mode...
grub rescue>

Je reçois ce qui suit quand je tape ls:

grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

Après un rapide coup d’œil des personnes ayant rencontré l’invite de sauvetage de grub, j’ai tapé setet obtenu ce qui suit:

grub rescue> set
cmdpath=(hd0)
prefix=(hd0,msdos6)/boot/grub
root=hd0,msdos6

J'étais toujours un peu perdu après avoir constaté que certaines commandes, par exemple normal, ne fonctionnaient pas, puis j'ai trouvé un tutoriel vidéo dans lequel vous démarrez à partir d'un cd d'image Linux et exécutez certaines commandes sur le terminal. Heureusement, j'avais mon CD avec moi et j'ai démarré à partir de là. Cependant, lorsque j'ai tapé sudo fdisk -ldans le terminal, voici ce que j'ai obtenu:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc03ede74

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848  1547022335   773407744    7  HPFS/NTFS/exFAT
/dev/sda3      1547022336  1547943935      460800   27  Hidden NTFS WinRE
/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Dit ici aucun de mes appareils n'a le système Linux en eux! Et je ne pouvais pas suivre le tutoriel vidéo, pas plus que ça ...

J'ai un peu taquiné mon cerveau et déterminé que sda2 contenait mon système Windows (puisque je me souviens que mon lecteur C: avait environ 700 Go d'espace disque). Après avoir réfléchi un peu plus, je me souviens d’avoir attribué environ 200 Go d’espace disque sur un disque lié à Ubuntu lors de l’installation d’Ubuntu. Je ne me souviens pas exactement lequel, mais je pense que c’était fondamentalement "l’espace disque dur" d’Ubuntu et qu’il ne contenait aucun fichier de démarrage. J'ai assigné deux autres choses pour Linux, mais elles étaient très petites (ne dépassant pas encore la barre des 1 Go).

Alors, est-ce que quelqu'un ici peut m'aider à remettre ma mise à niveau sur les rails? Cela ne me dérange pas que je finisse par devoir supprimer complètement les partitions contenant Linux.


1
Si la partition Linux est une partition logique, Windows ne réécrit pas la table de partition avec celle-ci. Utilisez testdisk. Certains ont utilisé testdisk pour le restaurer et ont réinstallé grub sur MBR et tout est revenu à la normale. Mais vous devez inclure toutes les partitions correctement en tant que principale et logique pour que cela fonctionne. cgsecurity.org/wiki/TestDisk_Step_By_Step
oldfred

Dans la présentation ci-dessus, il semble qu'il ne reste que 3505 secteurs à la fin du disque après la nouvelle partition /dev/sda5ou (hd0,msdos5)partition, ce qui ne représenterait que 1,7 Mo; la partition Linux pourrait donc difficilement s'y cacher. Ma meilleure hypothèse serait que l'entrée de la partition Linux se soit déplacée à cet endroit (n ° 5 au lieu de n ° 6) et que son type a été changé de manière inexplicable. La première chose à essayer serait ls (hd0,msdos5)/sur l'invite de secours de GRUB.
Josip Rodin

1
Une raison de plus de ne pas utiliser Windows, un OS aussi ignorant
Aydin K.

Réponses:


64

Windows 8 étant préinstallé sur mon ordinateur, j'ai donc réduit la partition Windows pour laisser de la place à Ubuntu. C'est comme ça que ça a marché pour la dernière année. Après le deuxième redémarrage dans la mise à niveau vers Windows 10, l’ordinateur n’a plus démarré. GRUB n'affichait qu'une grub rescueinvite de commande. J'ai découvert plus tard que le problème était dû au fait que Windows avait modifié le schéma de partition. La partition de démarrage (contenant les données GRUB normales) n’était plus à la hauteur de ses attentes. Je ne sais pas comment et pourquoi c'est arrivé.

La première chose que vous pouvez faire en mode de secours est de voir les partitions avec la lscommande. Les miens étaient:

  • (hd0, gpt1),
  • (hd0, gpt2),
  • etc.

Essayez de savoir quelle partition est votre partition de démarrage. Il n’ya pas d’ Tabachèvement, vous devez le taper complètement. J'ai essayé les commandes suivantes jusqu'à ce que j'ai trouvé la bonne partition:

ls (hd0,gpt1)/
ls (hd0,gpt1)/boot
ls (hd0,gpt2)/

etc.

Puis tapez setdans la même invite. Il affichera où GRUB cherche ses fichiers. Dans mon cas (hd0, gpt6) est passé à (hd0, gpt7). La commande set affichée:

prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6

Pour revenir à GRUB normal, commencez par changer le prefixparamètre pour qu'il pointe vers la bonne partition. Dans mon cas, la commande était la suivante:

set prefix=(hd0,gpt7)/boot/grub

Ensuite, vous pouvez passer du mode de secours au mode normal:

insmod normal
normal

On aurait aussi pu fixer le rootparamètre avec:

set root=(hd0,gpt7)

Mais ce n'est pas strictement nécessaire, car cela n'a pas d'importance pour les entrées de chargement en chaîne de Windows. Une fois dans le menu normal de GRUB, vous pouvez démarrer Windows et terminer la mise à niveau de Windows. Le problème est que vous devez informer Grub Rescue des bonnes partitions à chaque redémarrage. C'est comme ça que je l'ai fait. J'ai laissé le problème de GRUB pour plus tard, car je ne savais pas si Windows apporterait d'autres modifications aux partitions ou au démarrage.

Lorsque Windows a terminé, j'ai commencé à résoudre les problèmes de GRUB. Appuyez sur epour modifier les options de démarrage pour Ubuntu. J'ai changé tout (hd0,gpt6)à (hd0,gpt7)et Ubuntu démarrais.

Cependant, j'utilise une partition chiffrée et cryptswap. Au démarrage, Ubuntu m'a demandé la phrase secrète. Heureusement, je l'ai enregistré lors de l'installation d'Ubuntu et entré au démarrage. Ubuntu a démarré sans problèmes.

Je puis corrigé le /boot/grub/grub.cfgfichier dans lequel je l' ai remplacé (hd0,gpt6)avec (hd0,gpt7)et exécuté:

sudo grub-install

À ce stade, le seul problème restant était le cryptage. Le nombre de partitions root Ubuntu ayant été augmenté de un (7 au lieu de 6), la partition de swap a subi un changement similaire. J'ai dû changer le /etc/crypttabfichier à pointer au /dev/sda8lieu de /dev/sda7.

J'utilise seulement deux partitions pour Ubuntu (root et swap). Si d'autres systèmes d'exploitation coexistant avec Windows utilisent davantage de partitions, d'autres modifications peuvent être nécessaires. Surtout si les partitions sont montées en fonction de leurs numéros et non de leurs UUID. Jetez un oeil à votre /etc/fstab. Si les partitions sont identifiées par UUID, il ne devrait y avoir aucun problème. Mais s'il y a des /dev/...lignes, le nombre doit être corrigé si ces partitions ont été renumérotées.


2
C'était une excellente réponse pour moi. Je n'avais aucun disque d'Ubuntu et mettais à niveau mon Windows de 8.1 à 10 et j'ai eu le même problème. Donc, cette réponse a un crédit supplémentaire de ma part, car j'ai pu la saisir et continuer jusqu'à la mise à jour. Merci d'avoir sauvé mon bacon.
DIB

2
Cette solution a parfaitement fonctionné pour moi lorsque Win 10 a décidé de se mettre à niveau et de gâcher les enregistrements de démarrage (ma mise à niveau de 7 à 10 s'est déroulée sans accroc)
pedorro

9
J'ai essayé le ls (hd0,msdos1)/ ls (hd0,msdos1)/boot ls (hd0,msdos2)/ etc.pour toutes les entrées de la lscommande, et à chaque fois qu'il arrive avec error: unkown filesystem.
Jacques MALAPRADE le

2
Merci, cela a aidé. Une chose qui n’était pas claire pour moi (parce que je connais à la fois Ubuntu et Grub) est que l’édition de la configuration de grub doit être effectuée après le démarrage dans Ubuntu (et non dans le mini Emacs, qui ne prend pas en charge la sauvegarde des fichiers). fichier apparemment.) Alors j’ai démarré, puis modifié la config sudo nano /boot/grub/grub.cfgpuis exécuté sudo grub-install /dev/sda(pour une raison quelconque, l’appel sans le paramètre a échoué pour moi). Et alors seulement, les changements permanents ont fonctionné.
Nikita G.

1
J'ai essayé ls (hdo, msdos1), etc. pour toutes les entrées. Obtenir une erreur système de fichiers inconnu
Ashley G

13

L'installation de Windows (ou sa mise à niveau) aux côtés de Linux peut être problématique.

Essayez ceci: https://help.ubuntu.com/community/Boot-Repair



Je l'ai utilisé pour résoudre un problème après avoir installé l'aperçu technique de Windows 10, et cela a fonctionné. Fondamentalement, il réinstalle grub pour fonctionner avec tous les systèmes d'exploitation actuellement installés. Assurez-vous de lui dire d'installer grub sur votre partition Linux (sd #).

Bonne chance!


Salut! Merci d'avoir pris le temps de vous aider! En fait, je ne sais pas trop de quelle partition il s'agit! Mais je vais bidouiller un peu pour voir si cela fonctionne.
LChaos2

Aucun problème! Toujours heureux d'aider.
Patrick

Salut! J'ai donc démarré la disquette de réparation et utilisé la réparation recommandée. Je l’ai fait et j’ai redémarré mon ordinateur, mais il m’appartient au gestionnaire de démarrage Windows et me dit qu’une modification récente du matériel ou du logiciel a peut-être installé un fichier mal signé ou endommagé. Le fichier est \ Windows \ system32 \ winload.exe, statut 0xc0000428. En appuyant sur Entrée, le gestionnaire de démarrage choisit le système d'exploitation à démarrer, affichant uniquement Windows 7. En appuyant sur Entrée sous Windows 7, je reviens au même écran d'erreur, ce qui entraîne une boucle.
LChaos2

Après quelques recherches, il semble que le code d'erreur (0xc000428) soit associé au fait que winload.exe n'est pas vérifié par une signature numérique. Cela dit-il quelque chose à ce sujet?
Patrick

1
Une mise à jour sur la situation @ LChaos2?
hg8

10

Avant de changer de partition, effectuez une sauvegarde et enregistrez-la sur un autre périphérique. Si ce n'est pas le cas, changez le lecteur pour corriger. Ensuite, vous pouvez recommencer si vous restaurez un ensemble incorrect avec testdisk. Vous voulez simplement que tous les éléments logiques actuels et manquants soient restaurés lors d'une restauration avec testdisk.

sudo sfdisk -d /dev/sda > parts.txt

Votre partition manquante est ici ou entre le début de la partition étendue à 1547 ... et la première partition affichée à 19h15 ...:

/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Vous pouvez utiliser testdisk, mais il utilise CHS. Vous devez choisir toutes les partitions existantes et la partition manquante comme logiques. Il peut afficher plusieurs versions en fonction du nombre de fois où vous avez changé de partition. Choisissez donc la taille qui correspond à la taille manquante sans chevaucher d’autres partitions en cours. Certains qui ont correctement restauré ont juste pu démarrer, d'autres doivent réinstaller grub. Et certains ne pouvaient pas corriger la partition de restauration.

http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

Un autre outil de restauration est le sauvetage séparé. Il utilise des secteurs, mais la plage que vous donnez doit se situer juste en dehors de la partition manquante, sans chevauchement avec les partitions actuelles. Mieux si vous connaissez le début et la fin exacts. Voir l'homme séparé

http://www.gnu.org/software/parted/manual/html_node/rescue.html

Utilisateur ayant utilisé le sauvetage en partage:

http://ubuntuforums.org/showthread.php?t=1775331&p=10905969#post10905969


3
J'ai rencontré exactement le même problème et ai séparé montre "espace libre" où il y avait Linux. Lancez le sauvetage avec de / à de "l'espace libre" et ext4 est de retour!
speedogoo

3
Je veux juste dire quelque chose pour dire que gparted a montré un espace libre là où se trouvait ext4. A été séparé, défini sur des secteurs, des partitions d'impression, une sauvegarde avec le "/" de "l'espace libre" (n'oubliez pas d'ajouter un s pour les secteurs à vos valeurs) et ext4 était de retour, exactement comme @speedogoo. Pas besoin du tout de tripoter la bouffe.
Amédée Van Gasse

2
Etant donné que plus de personnes ont des partitions manquantes, que fait ***** Windows 10 avec la table de partitions? Dans mon cas, ext4 était dans une partition logique.
Amédée Van Gasse

Merci pour ce fil d'Ariane. J'ai pu récupérer la partition Linux perdue de ma femme en utilisant le secours partagé. Une installation plus tard, nous étions de retour en action.
Bheeshmar

7

C'est un méchant bug dans le partitionneur Windows, et pas spécifique à Linux. Il a ironiquement supprimé une partition NTFS dans mon cas.

Le programme d’installation de Windows 10 crée une nouvelle partition (votre partition /dev/sda3) découpée à la fin de la partition Windows principale sda2si la partition de démarrage Windows sda1est trop petite pour contenir l’environnement de récupération Windows 10.

Lorsqu'elle réécrit la table de partition à cette fin, pour chaque partition logique de la table de partition étendue sda4, si elle se trouve sur le disque avant le numéro de partition précédent, elle abandonne.

Dans votre cas, vos partitions Linux se trouvaient sur votre disque avant votre nouvelle sda5, mais avaient des numéros de partition plus élevés sda5qu'avant le repartitionnement.

Si vous parcourez les énormes journaux de mise à niveau de Windows 10, vous verrez un message du type "6 avant 5, rien à faire", ainsi que les anciennes et les nouvelles tables de partition.

Windows n'écrase pas le contenu des partitions qu'il supprime. Il est donc possible de les récupérer si vous pouvez trouver où ils se trouvent. Dans mon cas, j'avais des sauvegardes de la table de partition, mais utiliser testdisk comme expliqué dans la réponse de oldfred a d'excellentes chances de toutes les trouver. Le sauvetage en partie sera difficile à utiliser car plusieurs partitions ont été supprimées dans votre cas.

Pour utiliser testdisk à partir de votre Ubuntu Live CD, dans un type de terminal, sudo apt-get install testdiskinstallez-le et sudo testdisklancez-le.

Après avoir réparé la table de partition, la partition Linux contenant GRUB peut désormais porter un numéro différent de celui d’avant, de sorte que vous pourriez toujours vous retrouver à l’invite de secours GRUB. Si tel est le cas, Boot Repair pourra désormais réparer GRUB.

Encore une fois, en utilisant votre Ubuntu Live CD, tapez:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

installer et l'exécuter.

Maintenant, Windows peut terminer sa mise à niveau.


Merci pour l'explication claire de la nature du problème, cela m'a beaucoup aidé. J'étais dans la même situation que celle décrite dans la question. Cependant, testdisk n'a pas pu trouver la partition linux supprimée. Pour moi, les secours partagés ont fait l'affaire et j'ai pu poursuivre la mise à niveau de Windows 10 par la suite
jusqu'au

"Windows ne remplace pas le contenu des partitions supprimées" Comment cela peut-il être? La nouvelle partition créée pour moi (après avoir détruit mes partitions Linux) a occupé tout le disque. Donc, cela ne signifie-t-il pas que l'écriture peut aller n'importe où?
Greg Bell

Je ne peux pas exprimer à quel point je t'aime
aviggiano

1

Pour utiliser la réparation de démarrage, vous devez définir dans le BIOS:

  • Activer UEFI (dans mon BIOS c'est :)

    Support hérité DISABLE

  • Désactiver le démarrage sécurisé

Vous avez probablement activé le démarrage sécurisé, vous obtenez donc l'erreur "fichier mal signé".

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.