web-dev-qa-db-fra.com

GRUB2 montre un environnement de récupération Windows 7 ou Windows au lieu de Windows 10

Ceci est un Q & A que j'ai récemment découvert, alors j'ai posté la réponse ci-dessous.

Après avoir installé Windows 10, chaque fois que je reçois une mise à jour du noyau ou que je lance le update-grub2, il affiche toujours Windows 7 ou Windows Recovery Environment au lieu de Windows 10. Comment puis-je résoudre ce problème en permanence?

8
Terrance

Mise à jour: Je viens d'effectuer une nouvelle installation de Xubuntu 14.04 et les entrées du fichier répertorié ci-dessous étaient déjà présentes. On dirait que l'équipe GRUB a maintenant inclus la mise à jour. Je laisserai ceci ici à tous ceux qui pourraient tomber par hasard sans la mise à jour de leur système pour le moment.


Mise à jour n ° 2: Si vous créez un LiveUSB Ubuntu 14.04 avec au moins un fichier persistant de 1 Go, cet emplacement de fichier est identique et le fichier persistant permet de conserver les modifications apportées. Ce fichier ne doit être modifié qu'après avoir démarré le système sur le lecteur USB avec Try Ubuntu boot.


La raison pour laquelle il affiche toujours Windows 7 ou Windows Recovery Environment au lieu de Windows 10 est que le fichier /usr/lib/os-probes/mounted/20Microsoft ne contient pas le libellé de Windows 10. Ainsi, lors de la détection du système d'exploitation os-prober, il tombe à Windows 7 ou Windows Recovery Environment.

Pour corriger cela, vous devez apporter les modifications suivantes au fichier suivant (je vais mettre gedit comme éditeur, mais utilisez ce que vous voulez):

Sudo gedit /usr/lib/os-probes/mounted/20Microsoft

NOTE: Vous devriez toujours faire une sauvegarde d'un fichier avant de le modifier!

if item_in_dir -q bootmgr "$2"; then
        # there might be different boot directories in different case as:
        # boot Boot BOOT
        for boot in $(item_in_dir boot "$2"); do
                bcd=$(item_in_dir bcd "$2/$boot")
                if [ -n "$bcd" ]; then
                        if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; then
                                long="Windows 10 (loader)"
                        Elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then
                                long="Windows 8 (loader)"
                        Elif grep -qs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
                                long="Windows 7 (loader)"

les modifications ci-dessus modifient la ligne if grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then en Elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then, ajoutent if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; then et long="Windows 10 (loader)" au-dessus de cette ligne et l'enregistrent.

Une fois sauvegardé, lancer os-prober ressemble maintenant à ceci:

terrance@terrance-ubuntu:~$ Sudo os-prober
[Sudo] password for terrance: 
/dev/sdf1:Windows 10 (loader):Windows:chain

puis, en exécutant update-grub2, les mises à jour de votre /boot/grub/grub.cfg deviendront permanentes à chaque fois que vous obtiendrez une mise à jour du noyau afin d'afficher la version correcte de Windows (exemple ci-dessous):

terrance@terrance-ubuntu:~$ Sudo update-grub2
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.19.0-26-generic
Found initrd image: /boot/initrd.img-3.19.0-26-generic
Found linux image: /boot/vmlinuz-3.13.0-58-generic
Found initrd image: /boot/initrd.img-3.13.0-58-generic
Found linux image: /boot/vmlinuz-3.13.0-57-generic
Found initrd image: /boot/initrd.img-3.13.0-57-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 10 (loader) on /dev/sdf1
done

J'espère que cela t'aides!

10
Terrance