Manca l'opzione di avvio di Windows dopo l'installazione di CentOS 7, come posso ripristinarla?


21

Di recente ho installato CentOS 7 su un computer che esegue Windows 7. Ho eseguito un'installazione a doppio avvio e installato CentOS in una partizione. Ma quando avvio la mia macchina, mi dà solo due opzioni CentOS. Non mi dà la possibilità di scegliere di avviare Windows 7. Come posso aggiungere Windows 7 alle opzioni di avvio?

NOTA: sto leggendo questo post dal titolo: CenTOS 7 dual boot con Windows , ma la mia /grubcartella sembra contenere solo un splash.xpm.gzfile senza altri file. Inoltre, sono nuovo di Linux e ho bisogno di qualcosa di più passo dopo passo.

EDIT # 1

Sto ottenendo i seguenti risultati dalla riga di 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

Inoltre, sto attualmente cercando la possibilità che questi comandi potrebbero non essere applicabili a CentOS. Ad esempio, in queste Domande e Risposte intitolate: " Equivalente di update-grub per sistemi RHEL / Fedora / CentOS? ", Così come questa Domande e risposte intitolata: " Installato Centos 7 dopo Windows e impossibile avviare CentOS " sembra implicare che I dovrebbe reinstallare grub2. Ma come posso farlo? Sto imparando solo Linux.

EDIT # 2

Il seguente comando funziona. Ecco l'output:

[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
+1 per il modo in cui hai provato prima di chiedere e anche documentato i tuoi tentativi nella domanda. Farai bene.
Olivier Dulac,

Risposte:


21

Questo di solito viene risolto eseguendo gli script per rilevare i sistemi operativi installati e generare il file di configurazione del boot loader ( grub2in questo caso). Su CentOS 7, dovrebbe essere grub2-mkconfig.

  1. Verificare che Windows sia rilevato. Esegui grub2-mkconfigma scarta il suo output:

    $ 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
    

    L'output sarà simile (ma non identico) a quanto mostrato sopra. Assicurarsi che sia elencato Windows.

  2. Se Windows era elencato nel passaggio precedente, andare avanti e salvare il nuovo file di configurazione. Prima fai un backup, per ogni evenienza.

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

Se tutto è andato bene, ora dovresti essere in grado di riavviare Windows.


Ho anche un problema con grub2. Mi piace la risposta, ma come posso scartare l'output? È questo il comando grub2-mkconfig > /dev/nullche dovrei usare? Inoltre, funzionerà anche dalla modalità di salvataggio, se Linux non si avvia?
Patrik,

@patrik sì, > /dev/nullscarta l'output. Questo passaggio serve solo a verificare se Windows viene rilevato. Non fa nulla. È sudo grub2-mkconfig -o /boot/grub2/grub.cfgquello che scrive il nuovo file di configurazione. Si noti inoltre che il comando sui sistemi basati su Debian è semplicemente sudo update-grub. L'esecuzione di questo da un sistema di salvataggio può funzionare, ma prima hai bisogno di altre cose. Dai un'occhiata alla mia risposta qui .
Terdon

@terdon Ho problemi a ricreare questi passaggi su una macchina Windows 8 che voglio trasformare in una macchina dual boot con CentOS 7. Sei disposto ad aiutarmi con esso? Ecco il link: unix.stackexchange.com/questions/210111/…
CodeMed

@CodeMed Posso provare ma non so molto su CentOS e meno su Windows.
terdon

Aggiunta di alcune informazioni: appena testato che questa soluzione funziona anche per Windows 10. Verrà generata una voce denominata Windows Recovery Environment (caricatore) che, nonostante il suo nome, non eseguirà alcun ripristino e verrà avviato direttamente su Windows 10.
dr01

15

Seguendo la risposta di @terdon - quando si esegue il test-step, e grub2-mkconfig non trova la partizione di Windows. Quindi, assicurati di avere installato il pacchetto "ntfs-3g", in modo che il tuo sistema Linux possa leggere le partizioni di Windows.

sudo yum install ntfs-3g

Dopo averlo installato, quando esegui

sudo grub2-mkconfig > /dev/null

... dovresti vedere l'avvio di Windows elencato. Se le altre voci sono OK, vai avanti e scrivilo.


1
Grazie e +1 per aver aggiunto informazioni su questa vecchia domanda.
CodeMed

1
potresti anche dover aggiungere --enablerepo epell'
opzione

8

Ho riscontrato questo problema durante l'installazione di CentOS 7.0. Windows inizialmente non era elencato nell'output di grub2-mkconfig.

Per installare ntfs-3g come suggerito in un'altra risposta, dovevo prima installare epel-release:

sudo yum install epel-release

Il semplice tentativo ha sudo yum --enablerepo epel install ntfs-3gportato a un messaggio di repository non trovato.

L'installazione di epel-release ha consentito l'installazione di ntfs-3g. Da lì, la partizione di Windows è stata elencata in grub2-mkconfig. I passaggi nelle risposte precedenti hanno quindi dato la possibilità di selezionare Windows all'avvio.


0

Riassumendo le risposte di @terdon @JosephK e @clk per formalizzare la procedura completa.

  1. Aggiungi il repository epel

    sudo yum install epel-release
    
  2. Installa il pacchetto ntfs-3g

    sudo yum install ntfs-3g
    
  3. Esegui il grub2-mkconfigcomando e controlla se viene rilevata la voce "Windows".

    sudo grub2-mkconfig > /dev/null 
    
  4. Aggiorna il grub.cfgfile.

    sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.old
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg   
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.