web-dev-qa-db-fra.com

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

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, quand je suis revenu à mon ordinateur, cela m’a conduit à l’invite de sauvetage.

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

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

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

Après un rapide coup d'œil aux personnes qui ont rencontré l'invite de sauvetage de grub, j'ai saisi set et ai 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 telles que normal ne fonctionnait 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 -l dans 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 essentiellement "un espace disque" sous Ubuntu, et qu’il ne contenait aucun fichier de démarrage. J'ai assigné deux autres choses pour Linux, mais elles étaient de très petite taille (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.

71
LChaos2

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 que l'invite de la commande grub rescue. 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 normales GRUB _) n'était plus à l'endroit prévu par GRUB. 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 commande ls. Les miens étaient:

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

Essayez de savoir quelle partition est votre partition de démarrage. Il n'y a pas Tab l'achèvement, vous devez 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.

Ensuite, tapez set dans 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 modifier le paramètre prefix 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 également pu corriger le paramètre root 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 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 e pour modifier les options de démarrage pour Ubuntu. J'ai changé tous les (hd0,gpt6) en (hd0,gpt7) et Ubuntu a démarré.

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.

J'ai ensuite corrigé le fichier /boot/grub/grub.cfg dans lequel j'ai remplacé (hd0,gpt6) par (hd0,gpt7) et effectué:

Sudo grub-install

À ce stade, le seul problème restant était le cryptage. Le nombre de partitions racine Ubuntu ayant été augmenté de un (7 au lieu de 6), la partition de swap a subi un changement similaire. J'ai dû modifier le fichier /etc/crypttab pour qu'il pointe vers /dev/sda8 au lieu 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 coup d'œil à votre /etc/fstab. Si les partitions sont identifiées par UUID, il ne devrait y avoir aucun problème. Mais s'il existe des lignes /dev/..., le nombre doit être corrigé si ces partitions ont été renumérotées.

61
nobody

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!

13
Patrick

Avant de changer de partition, effectuez une sauvegarde et enregistrez-la sur un autre appareil. 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 souhaitez 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 là 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

10
oldfred

C'est un méchant bogue dans le partitionneur Windows, et non 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 /dev/sda3) découpée à la fin de la partition Windows principale sda2 si la partition de démarrage Windows sda1 est 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 est située 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 nouveau sda5, mais avaient des numéros de partition supérieurs à ceux de sda5 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 toutes les chances de toutes les trouver. Les sauvegardes partielles seront difficiles à utiliser car plusieurs partitions ont été supprimées dans votre cas.

Pour utiliser testdisk à partir de votre Ubuntu Live CD, dans un terminal, tapez Sudo apt-get install testdisk pour l’installer, et Sudo testdisk pour l’exécuter.

Une fois la table de partition réparée, la partition Linux contenant GRUB peut désormais porter un numéro différent de celui d’avant, vous pouvez donc vous retrouver à l’invite GRUB rescue. Si tel est le cas, Réparation du démarrage sera désormais en mesure de 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.

7
Martin Thornton

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

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

    Prise en charge de Legacy DISABLE

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

Le démarrage sécurisé est probablement activé. Vous obtenez donc l'erreur "fichier mal signé".

0
iacobus