web-dev-qa-db-fra.com

Grub2 détectant deux entrées Windows 7 (chargeur)

C'est la première question que je pose à la communauté Ubuntu.

Je suis assez nouveau sur Ubuntu, mais je comprends les bases et je sais comment naviguer dans le terminal. Je sais aussi comment rechercher les solutions existantes avant de demander de l'aide. J'ai parcouru Internet haut et bas et appris beaucoup de choses sur le fonctionnement de Grub2. Mais rien ne m'a aidé à résoudre mon problème.

Mon problème est le suivant: j'ai un ordinateur doté de trois disques durs. Auparavant, il disposait de Windows XP, mais j'ai mis à niveau vers Windows 7. J'ai également installé Ubuntu 12.04 LTS (Precise Pangolin).

Lors de l'installation de Windows 7, il y a eu un échec et j'ai dû redémarrer l'installation. Ensuite, j'ai installé Ubuntu. Après quelques problèmes pour supprimer toutes les traces du système d'exploitation XP (Ubuntu l'a détecté automatiquement, mais pas sous Windows 7), les deux systèmes d'exploitation ont parfaitement fonctionné. Ou presque.

Lors du démarrage, Grub2 affichait Ubuntu, Mode de récupération Ubuntu, Autres versions de Linux, memtest, suivi de Windows 7 (loader) on /dev/sda1 et Windows 7 (loader) on /dev/sdb1.

J'ai finalement supprimé le mode de récupération, les autres versions et Memtest. Maintenant, quand je cours:

Sudo update-grub

Je reçois cette impression:

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-26-generic
Found initrd image: /boot/initrd.img-3.2.0-26-generic
Found Windows 7 (loader) on /dev/sda1
Found Windows 7 (loader) on /dev/sdb1

Je souhaite supprimer "Windows 7 (chargeur) sur/dev/sda1", car il s'agit d'une entrée cassée qui ne devrait pas exister et qui doit avoir été installée lors de ma première tentative Windows 7.

Je ne parviens pas à trouver une entrée Windows 7 dans le dossier /etc/grub.d Et je ne sais pas où chercher.

Voici une mise en page de mes disques durs:

/dev/sda1/ (1.82 TiB), NTFS ("Media")

/dev/sdb1/ (100 Mib), NTFS ("System Reserved")
/dev/sdb2/ (149 GiB), NTFS ("Windows 7")
/dev/sdb3/ (149 GiB), Extended (" ")
    /dev/sdb4/ (145 GiB), ext4 (" ")
    /dev/sdb5/ (4 GiB), linux-swap (" ")

/dev/sdc1/ (488.28 GiB), NTFS ("Downloads")
/dev/sdc2/ (488.28 GiB), NTFS ("AltMedia") 
/dev/sdc3/ (886.45 GiB), NTFS ("Personal")
unallocated (2.09 MiB), unallocated

Ce que je pense est arrivé: Windows 7 s’est d'abord et mal installé. Je l'ai réinstallé. Premièrement, il y avait Windows XP pour indiquer où se trouvait le programme d'amorçage afin de le placer sur /dev/sdb1/. Mais, la deuxième fois, aucun guide de ce type n’existait et la machine mit un autre chargeur de démarrage sur /dev/sda1/. Sda1, par ailleurs, est la seule partition sur un lecteur de 2 To. Aucune partition d'enregistrement de démarrage ne semble exister selon gedit. Je ne sais pas d'où Grub2 obtient cette information. Mais voilà.

Y a-t-il quelque chose que quelqu'un puisse faire pour m'aider? Ou, y a-t-il d'autres informations que je devrais ajouter?

6
jwarner112

Une solution rapide si sda est un lecteur externe

Je ne sais pas si votre disque dur /dev/sda est un lecteur interne ou externe. S'il s'agit d'un lecteur externe, débranchez-le avant d'exécuter la commande update-grub2. Cela devrait aider rapidement.

Solution:

Montez le lecteur /dev/sda1. (je suppose que vous pouvez le faire très facilement). Ensuite, dans ce lecteur, recherchez un dossier nommé Boot et un fichier nommé bootmgr. Supprimez le dossier et le fichier. Ensuite, exécutez à nouveau la commande update-grub2.

Vous voudrez peut-être réinstaller grub2. Comme je vois que votre installation Ubuntu est à /dev/sdb, les commandes seront

Sudo grub-install /dev/sdb
Sudo update-grub 

Quelle était la cause du problème:

Grub2 recherche les fichiers de démarrage Windows pour détecter les entrées Windows. Bien que vous ayez supprimé Windows 7, les fichiers de démarrage de Windows 7 ne sont pas supprimés (le dossier "Boot" et le fichier "bootmgr"). Et comme les fichiers de démarrage de Windows 7 sont présents, grub2 suppose simplement qu’il existe également une installation de Windows 7. D'où la double entrée.

8
Anwar

Vous devriez trouver ce que vous cherchez dans /boot/grub/grub.cfg. Ce fichier est généré dynamiquement par update-grub2. Je suis à double démarrage Ubuntu 32bit et 64bit. Si je voulais en supprimer un, je supprimerais simplement sa section de ce fichier. Voici à quoi ressemble l'une de mes entrées-

menuentry 'Ubuntu, with Linux 3.2.0-23-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 94916094-afe9-4b74-9413-a3c54b39eb91
    linux   /boot/vmlinuz-3.2.0-23-generic root=UUID=94916094-afe9-4b74-9413-a3c54b39eb91 ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.2.0-23-generic
}

Les modifications doivent prendre effet immédiatement, alors faites une sauvegarde et soyez prudent. En outre, tout ce que vous modifiez dans ce fichier sera complètement écrasé si vous exécutez à nouveau update-grub2.

1
Sepero