web-dev-qa-db-fra.com

Boot-Repair a créé trop d'entrées de menu grub pour Windows

J'ai récemment installé Ubuntu en mode double amorçage avec Windows 10 sur un ordinateur portable HP. Au départ, je ne pouvais pas démarrer Windows avec grub, car sélectionner les options de Windows ne ferait que revenir en boucle à grub.

Ensuite, j'ai effectué une réparation de démarrage, et toutes ces options supplémentaires sont apparues dans le menu grub.

Je suis capable d'ouvrir Windows en utilisant l'option "Windows UEFI bootmgfw.efi", mais en n'utilisant pas l'option standard de "Gestionnaire de démarrage Windows (sur/dev/sda1)".

Comment puis-je réduire ces entrées et pourquoi ne puis-je pas démarrer Windows avec cette dernière option?

Voici une image de la bouffe. La première option est Ubuntu:

grub - the 1st option is Ubuntu

9
Abhay

Windows est hors sujet ici,  mais la réponse est qu’il s’agit d’une technologie très ancienne et que le secteur de démarrage n’a que 512 octets; il n’est donc pas assez grand pour contenir tout ce que nous aimerions que ce soit.

Pour ajouter et supprimer facilement des entrées de grub vous-même, veuillez:

  1. Effectuez une sauvegarde système complète de tout votre ordinateur, y compris des autres systèmes d'exploitation, à l'aide de CloneZilla Live
  2. Non, je ne plaisantais pas! Prenez d’abord une sauvegarde complète du système ! : -)
  3. Chaque fois que quelqu'un vous dit de installer un PPA soyez très prudent, faites vos propres recherches si c'est ce que vous voulez vraiment et alors seulement continuez
  4. Installez grub-customizer en exécutant les commandes suivantes:

    Sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    Sudo apt update
    Sudo apt install grub-customizer
    
  5. Lancez grub-customizer et personnalisez-le: enter image description here

  6. Si vous rencontrez des problèmes graves, restaurez la sauvegarde de votre système.

4
Fabby

Chaque fois que j'ai exécuté boot-repair, il ajoute un 5 options de démarrage Windows supplémentaires à mon menu principal grubqui ne fonctionnent pas. Dans votre cas, il a ajouté 11 entrées supplémentaires!

grub.cfg montre le problème

Le secret peut être trouvé dans le fichier /etc/grub/grub.cfg:

### BEGIN /etc/grub.d/25_custom ###
    menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi
### END /etc/grub.d/25_custom ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p2)' --class windows --class os $menuentry_id_option 'osprober-efi-D656-F2A8' {
    savedefault
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  D656-F2A8
    else
      search --no-floppy --fs-uuid --set=root D656-F2A8
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-9478-B6E2' {
    savedefault
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  9478-B6E2
    else
      search --no-floppy --fs-uuid --set=root 9478-B6E2
    fi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

La section 30_os-prober contient les "bonnes" entrées de menu grubque vous souhaitez conserver. La section 25_custom contient les fausses entrées créées par boot-repair. Vous ne pouvez pas éditer le fichier de configuration grub car il sera simplement écrasé à la prochaine exécution de update-grub.


La section 25_custom a été créée par Boot Repair

Sur mon système:

$ locate 25_custom
/boot/efi/boot-repair/log/20171111_224241/nvme0n1p5/25_custom
/boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
/etc/grub.d/25_custom

Jetez un coup d'œil aux options Windows supplémentaires qui ont été configurées (et ne fonctionnent pas):

$ cat /boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
#!/bin/sh
exec tail -n +3 $0

menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi

Ce sont les entrées erronées boot-repair créées dans /etc/grub.d/25_custom qui ont ensuite été compilées dans \boot\grub\grub.cfg.


Modification de la réparation de démarrage inverse en 25_custom

Utilisez Sudo -H gedit /etc/grub.d/25_custom et supprimez tout sauf les trois premières lignes:

#!/bin/sh
exec tail -n +3 $0
  • Le fichier contient maintenant deux lignes avec du texte et une ligne vierge.
  • Enregistrez le fichier.
  • Exécutez Sudo update-grub.
  • Redémarrer.

Maintenant, votre menu n'est plus saturé avec cinq fausses entrées de menu Windows qui ne fonctionnent pas.

Vérifiez deux fois qu'il y a trois lignes dans 25_custom

Exécutez cette commande et vérifiez que 25_custom a trois lignes:

$ wc /etc/grub.d/25_custom
      3       6      30
#     ^       ^       ^
#     |       |       +--- Number of characters
#     |       +----------- Number of words
#     +------------------- Number of lines

J'ai ajouté les commentaires # pour déchiffrer la sortie de wc(nombre de mots).

8
WinEunuuchs2Unix