Falta la opción de arranque de Windows después de instalar CentOS 7, ¿cómo puedo recuperarlo?


21

Recientemente instalé CentOS 7 en una máquina que ejecutaba Windows 7. Hice una instalación de arranque dual e instalé CentOS en una partición. Pero cuando inicio mi máquina, solo me da dos opciones de CentOS. No me da la opción de elegir iniciar Windows 7. ¿Cómo puedo agregar Windows 7 a las opciones de inicio?

NOTA: Estoy leyendo esta publicación titulada: CenTOS 7 dual boot with windows , pero mi /grubcarpeta solo parece tener un splash.xpm.gzarchivo sin ningún otro archivo. Además, soy nuevo en Linux y necesito algo más paso a paso.

EDITAR # 1

Estoy obteniendo los siguientes resultados en la línea de comando:

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

Además, actualmente estoy investigando la posibilidad de que estos comandos no se apliquen a CentOS. Por ejemplo, en estas preguntas y respuestas de U&L tituladas: "¿ Equivalente de actualización-grub para sistemas RHEL / Fedora / CentOS? ", Así como en estas preguntas y respuestas tituladas: " Instalé Centos 7 después de Windows y no puedo arrancar en CentOS " parece implicar que yo debería reinstalar grub2. ¿Pero cómo hago eso? Ahora estoy aprendiendo Linux.

EDITAR # 2

El siguiente comando funciona. Aquí está la salida:

[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 ###

2
Haz +1 por la forma en que lo intentaste antes de preguntar y también documentaste tus intentos en la pregunta. Lo harás bien
Olivier Dulac

Respuestas:


21

Esto generalmente se soluciona ejecutando los scripts que detectan los sistemas operativos instalados y generan el archivo de configuración del cargador de arranque ( grub2en este caso). En CentOS 7, eso debería ser grub2-mkconfig.

  1. Verifique que se detecte Windows. Ejecutar grub2-mkconfigpero descartar su salida:

    $ 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 salida se verá similar (pero no idéntica) a lo que se muestra arriba. Asegúrese de que Windows esté en la lista.

  2. Si Windows figuraba en el paso anterior, continúe y guarde el nuevo archivo de configuración. Haga una copia de seguridad primero, por si acaso.

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

Si todo salió bien, ahora debería poder reiniciar en Windows.


También tengo un problema con grub2. Me gusta la respuesta, pero ¿cómo descarto la salida? ¿Es este el comando grub2-mkconfig > /dev/nullque debo usar? Además, ¿funcionará esto también desde el modo de rescate, si Linux no arranca?
patrik

@patrik sí, > /dev/nulldescarta la salida. Este paso es solo para verificar si se detecta Windows. No hace nada Es sudo grub2-mkconfig -o /boot/grub2/grub.cfgque escribe el nuevo archivo de configuración. También tenga en cuenta que el comando en los sistemas basados ​​en Debian es simplemente sudo update-grub. Ejecutar esto desde un sistema de rescate puede funcionar, pero primero necesita otras cosas. Echa un vistazo a mi respuesta aquí .
terdon

@terdon Tengo problemas para recrear estos pasos en una máquina con Windows 8 que quiero convertir en una máquina de arranque dual con CentOS 7. ¿Estás dispuesto a ayudarme? Aquí está el enlace: unix.stackexchange.com/questions/210111/…
CodeMed

@CodeMed Puedo probar pero no sé mucho sobre CentOS y menos sobre Windows.
terdon

Agregando alguna información: acabo de probar que esta solución también funciona para Windows 10. Generará una entrada llamada Entorno de recuperación de Windows (cargador) que, a pesar de su nombre, no se recuperará y se iniciará directamente en Windows 10.
dr01

15

Seguimiento de la respuesta de @terdon: cuando realiza el paso de prueba y grub2-mkconfig no encuentra la partición de Windows. Luego, asegúrese de tener instalado el paquete "ntfs-3g" para que su sistema Linux pueda leer las particiones de Windows.

sudo yum install ntfs-3g

Después de instalar eso, cuando corres

sudo grub2-mkconfig > /dev/null

... deberías ver el arranque de Windows en la lista. Si la otra entrada / entradas están bien, continúe y escríbala.


1
Gracias y +1 por agregar información sobre esta vieja pregunta.
CodeMed

1
También es posible que deba agregar un --enablerepo epelinterruptor para el primer comando
gamliela

8

Me encontré con este problema al instalar CentOS 7.0. Windows no figuraba inicialmente en la salida de grub2-mkconfig.

Para instalar ntfs-3g como se sugiere en otra respuesta, primero tuve que instalar epel-release:

sudo yum install epel-release

Simplemente intentarlo sudo yum --enablerepo epel install ntfs-3gresultó en un mensaje de repositorio no encontrado.

La instalación de epel-release permitió la instalación de ntfs-3g. A partir de ahí, la partición de Windows se enumeró en grub2-mkconfig. Los pasos en las respuestas anteriores dieron la opción de seleccionar ventanas en el arranque.


0

Resumiendo las respuestas de @terdon @JosephK y @clk para formalizar el procedimiento completo.

  1. Agregar el repositorio de epel

    sudo yum install epel-release
    
  2. Instalar el paquete ntfs-3g

    sudo yum install ntfs-3g
    
  3. Ejecute el grub2-mkconfigcomando y compruebe si se detecta la entrada 'Windows'.

    sudo grub2-mkconfig > /dev/null 
    
  4. Actualiza el grub.cfgarchivo.

    sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.old
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg   
    
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.