L'option de démarrage Windows est manquante après l'installation de CentOS 7, comment puis-je la récupérer?

21

J'ai récemment installé CentOS 7 sur une machine qui exécutait Windows 7. J'ai effectué une installation à double démarrage et installé CentOS dans une partition. Mais lorsque je démarre ma machine, cela ne me donne que deux options CentOS. Il ne me donne pas la possibilité de choisir de démarrer Windows 7. Comment puis-je ajouter Windows 7 aux options de démarrage?

REMARQUE: je lis ce post intitulé: CenTOS 7 dual boot avec windows , mais mon /grubdossier ne semble contenir qu'un splash.xpm.gzfichier sans aucun autre fichier. De plus, je suis nouveau sur Linux et j'ai besoin de quelque chose de plus étape par étape.

EDIT # 1

J'obtiens les résultats suivants sur la ligne de commande:

[root@localhost home]# sudo update-grub
sudo: update-grub: command not found
[root@localhost home]# sudo grub-mkconfig
sudo: grub-mkconfig: command not found

De plus, je recherche actuellement la possibilité que ces commandes ne s'appliquent pas à CentOS. Par exemple, dans cette Q&R U&L intitulée: " Equivalent de update-grub pour les systèmes RHEL / Fedora / CentOS? ", Ainsi que cette Q&R intitulée: " Centos 7 installé après Windows et ne peut pas démarrer dans CentOS " semble impliquer que je devrait réinstaller grub2. Mais comment je fais ça? J'apprends maintenant Linux.

EDIT # 2

La commande suivante fonctionne. Voici la sortie:

[root@localhost home]# sudo grub2-mkconfig 2>/dev/null
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

terminal_output console
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux, with Linux 3.10.0-123.el7.x86_64' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.el7.x86_64-advanced-77a053a9-a71b-43ce-a8d7-1a3418f5b0d9' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos 
    insmod xfs
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint- efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 --hint='hd0,msdos5'  589631f1-d5aa-4374-a069-7aae5ca289bc
    else
      search --no-floppy --fs-uuid --set=root 589631f1-d5aa-4374-a069-7aae5ca289bc
    fi
    linux16 /vmlinuz-3.10.0-123.el7.x86_64 root=UUID=77a053a9-a71b-43ce-a8d7-1a3418f5b0d9 ro rd.luks.uuid=luks-a45243be-2514-4a81-b7a1-7e4eff712d2d vconsole.font=latarcyrheb-sun16 crashkernel=auto  vconsole.keymap=us rd.luks.uuid=luks-5349515e-a082-4ff2-b035-54da7b8d4990 rhgb quiet 
    initrd16 /initramfs-3.10.0-123.el7.x86_64.img
}
menuentry 'CentOS Linux, with Linux 0-rescue-369d0c1b630b48cc8ef010ceb99bc668' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-369d0c1b630b48cc8ef010ceb99bc668-advanced-77a053a9-a71b-43ce-a8d7-1a3418f5b0d9' {
    load_video
    insmod gzio
    insmod part_msdos 
    insmod xfs
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 --hint='hd0,msdos5'  589631f1-d5aa-4374-a069-7aae5ca289bc
    else
      search --no-floppy --fs-uuid --set=root 589631f1-d5aa-4374-a069-7aae5ca289bc
    fi
    linux16 /vmlinuz-0-rescue-369d0c1b630b48cc8ef010ceb99bc668 root=UUID=77a053a9-a71b-43ce-a8d7-1a3418f5b0d9 ro rd.luks.uuid=luks-a45243be-2514-4a81-b7a1-7e4eff712d2d vconsole.font=latarcyrheb-sun16 crashkernel=auto  vconsole.keymap=us rd.luks.uuid=luks-5349515e-a082-4ff2-b035-54da7b8d4990 rhgb quiet 
    initrd16 /initramfs-0-rescue-369d0c1b630b48cc8ef010ceb99bc668.img
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-chain-386ED4266ED3DB28' {
    insmod part_msdos 
    insmod ntfs
    set root='hd0,msdos2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 --hint='hd0,msdos2'  386ED4266ED3DB28
    else
      search --no-floppy --fs-uuid --set=root 386ED4266ED3DB28
    fi
    chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
CodeMed
la source
2
+1 pour la façon dont vous avez essayé avant de demander, et également documenté vos essais dans la question. Vous ferez bien.
Olivier Dulac

Réponses:

21

Ceci est généralement résolu en exécutant les scripts détectant les systèmes d'exploitation installés et générant le fichier de configuration du chargeur de démarrage ( grub2dans ce cas). Sur CentOS 7, cela devrait l'être grub2-mkconfig.

  1. Vérifiez que Windows est détecté. Exécutez grub2-mkconfigmais jetez sa sortie:

    $ sudo grub2-mkconfig > /dev/null 
    Generating grub configuration file ...
    Found background image: /usr/share/images/desktop-base/desktop-grub.png
    Found linux image: /boot/vmlinuz-3.16.0-4-amd64
    Found initrd image: /boot/initrd.img-3.16.0-4-amd64
    Found memtest86+ image: /boot/memtest86+.bin
    Found memtest86+ multiboot image: /boot/memtest86+_multiboot.bin
    Found Windows 7 (loader) on /dev/sda2
    

    La sortie sera similaire (mais pas identique) à ce qui est illustré ci-dessus. Assurez-vous que Windows est répertorié.

  2. Si Windows était répertorié à l'étape précédente, continuez et enregistrez le nouveau fichier de configuration. Faites d'abord une sauvegarde, au cas où.

    sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.old
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg   
    

Si tout s'est bien passé, vous devriez maintenant pouvoir redémarrer sous Windows.

terdon
la source
J'ai également un problème avec grub2. J'aime la réponse, mais comment supprimer la sortie? Est-ce la commande grub2-mkconfig > /dev/nullque je dois utiliser? En outre, cela fonctionnera-t-il également à partir du mode de secours, si Linux ne démarre pas?
patrik
@patrik yes, le > /dev/nullsupprime la sortie. Cette étape consiste uniquement à vérifier si Windows est détecté. Ça ne fait rien. C'est sudo grub2-mkconfig -o /boot/grub2/grub.cfgcela qui écrit le nouveau fichier de configuration. Notez également que la commande sur les systèmes basés sur Debian est simple sudo update-grub. L'exécution à partir d'un système de sauvetage peut fonctionner, mais vous devez d'abord faire autre chose. Jetez un œil à ma réponse ici .
terdon
@terdon J'ai du mal à recréer ces étapes sur une machine Windows 8 que je veux transformer en une machine à double démarrage avec CentOS 7. Êtes-vous prêt à m'aider? Voici le lien: unix.stackexchange.com/questions/210111/…
CodeMed
@CodeMed Je peux essayer mais je ne sais pas grand-chose sur CentOS et moins sur WIndows.
terdon
Ajout d'informations: vient de tester que cette solution fonctionne également pour Windows 10. Elle générera une entrée appelée Windows Recovery Environment (chargeur) qui, malgré son nom, ne fera aucune récupération et démarrera directement sur Windows 10.
dr01
15

Suite à la réponse de @terdon - lorsque vous effectuez l'étape de test, et grub2-mkconfig ne trouve pas la partition Windows. Ensuite, assurez-vous que le package "ntfs-3g" est installé, afin que votre système Linux puisse lire la ou les partitions Windows.

sudo yum install ntfs-3g

Après avoir installé cela, lorsque vous exécutez

sudo grub2-mkconfig > /dev/null

... vous devriez voir le démarrage de Windows répertorié. Si les autres entrées sont correctes, continuez et écrivez-les.

JosephK
la source
1
Merci et +1 d'avoir ajouté un aperçu de cette ancienne question.
CodeMed
1
vous devrez peut-être également ajouter un --enablerepo epelcommutateur pour la première commande
gamliela
8

Je suis tombé sur ce problème lors de l'installation de CentOS 7.0. Windows n'était pas initialement répertorié dans la sortie de grub2-mkconfig.

Afin d'installer ntfs-3g comme suggéré dans une autre réponse, j'ai d'abord dû installer epel-release:

sudo yum install epel-release

Un simple essai a sudo yum --enablerepo epel install ntfs-3gabouti à un message de référentiel introuvable.

L'installation d'epel-release a permis l'installation de ntfs-3g. De là, la partition Windows a été répertoriée dans grub2-mkconfig. Les étapes des réponses précédentes ont ensuite donné la possibilité de sélectionner des fenêtres au démarrage.

clk
la source
0

Résumant les réponses par @terdon @JosephK et @clk pour formaliser la procédure complète.

  1. Ajouter le dépôt epel

    sudo yum install epel-release
    
  2. Installer le paquet ntfs-3g

    sudo yum install ntfs-3g
    
  3. Exécutez la grub2-mkconfigcommande et vérifiez si l'entrée «Windows» est détectée.

    sudo grub2-mkconfig > /dev/null 
    
  4. Mettez à jour le grub.cfgfichier.

    sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.old
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg   
    
Rohit
la source