O Grub não mostra uma opção do Windows 8 após a inicialização dupla

25

Portanto, inicializei com êxito minha máquina Windows 8 com o Ubuntu 12.04. No entanto, ainda não tenho um método conveniente de escolher qual SO carregar no momento da inicialização.

Depois de instalar o Ubuntu, meu computador ainda carrega o Windows 8 diretamente. Eu então adicionei grubx64.efià lista branca do meu carregador de inicialização. Mas depois disso, minha máquina carrega o Ubuntu diretamente, sem sequer aparecer uma sombra do GRUB!

Usei o reparo de inicialização e recebi esta URL do paste.ubuntu : paste.ubuntu.com/1326074 . Depois de executar o reparo de inicialização (e redefinir a lista do grubx64.efiarquivo), o GRUB agora aparece, mas sem nenhuma opção do Windows 8!

Por fim, eu corri sudo fdisk -le isso me deu o seguinte:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x6396389f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  1465149167   732574583+  ee  GPT
Partition 1 does not start on physical sector boundary.

Acho que meu problema tem algo a ver com o aviso de fdiskcima, mas não sei o que fazer com ele. Como procedo agora?

Editar

Meu etc/default/grubé o seguinte:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Além disso, apenas para constar, foi o que eu segui na instalação do meu dual-boot. O tutorial (que usa o 11.10, devo observar), não menciona nada sobre esse problema. Existe algo que eu não deveria ter feito?

skytreader
fonte
Leia esta resposta, pode ajudá-lo: askubuntu.com/questions/84501/…
NickTux
Para obter informações: ubuntuforums.org/showpost.php?p=12342042&postcount=613
LovinBuntu

Respostas:

17

Primeiro, sua fdisk -lsaída não é um problema; que simplesmente identifica seu disco como usando o sistema de particionamento GUID Partition Table (GPT) . Para visualizar suas partições, você deve usar uma ferramenta habilitada para GPT, como gdiskou parted, em vez de fdisk, que não entende GPT.

Segundo, você pode conseguir que o GRUB carregue o Windows em cadeia adicionando uma entrada adequada /etc/grub.d/40_custome executando a sudo update-grub. Uma entrada pode ser algo como isto:

menuentry "Windows 8" {
    set root='(hd0,gpt1)'
    chainloader /EFI/microsoft/BOOT/bootmgfw.efi
}

Os detalhes podem depender da sua instalação, no entanto.

Terceiro, se você considera o rEFInd feio, sempre pode tentar outro tema do rEFInd ou criar seu próprio, conforme descrito na documentação do rEFInd. Alternativamente, se você preferir um carregador em modo texto boot, você pode definir a textonlyopção refind.conf. Você pode alcançar um fim semelhante mudando para gummiboot.

Quarto, se o rEFInd estiver reportando erros periodicamente, anote-os ou tire uma foto da tela com uma câmera digital e relate-os para mim. (Eu sou o mantenedor da rFIe.) Os erros não podem ser corrigidos se ninguém os denunciar; ou se não houver erros no rEFInd, as mensagens podem fornecer dicas sobre como resolver o problema.

Finalmente, é possível inicializar o Linux via rEFInd (ou gummiboot) sem usar o GRUB; você só precisa de um carregador de inicialização EFI diferente. Minha preferência pessoal é o stub loader EFI do kernel Linux . Porém, isso está disponível apenas nos kernels 3.3.0 e posterior. Como o Ubuntu 12.04 é fornecido com um kernel 3.2.0, você precisará encontrar um 3.3.0 pré-compilado para o Ubuntu 12.04 (já ouvi falar dessas coisas, mas não tenho links à mão) ou crie seu próprio do código fonte. (Você também pode instalar o Ubuntu 12.10, que é fornecido com um kernel adequado, mas provavelmente você quer uma versão LTS, portanto, isso pode não ser o ideal.) Consulte a página da documentação do rEFInd sobre como inicializar o Linuxpara detalhes adicionais sobre como configurar isso. Você também pode usar o ELILO ou o GRUB Legacy. Se você simplesmente se opuser ao atraso, poderá reduzir o valor do tempo limite do GRUB 2 e configurá-lo para não exibir o menu por padrão.

Rod Smith
fonte
1
Primeiro, uau, eu não sabia que você é o mantenedor do rEFInd. A seguir, sobre o menuentry do GRUB ... Eu tentei isso, mas ele não funciona. Entre outras cenas inusitadas, tentei configurar minha partição ESP, mas sem sucesso. Até tentei usar um desses editores gráficos do GRUB (esqueci o nome). Por fim, em relação ao rEFInd, os erros que está relatando não são críticos (editará minha postagem para observar isso) --- na inicialização, ele apenas me diz que não pode encontrar certos .efi. Não tenho ideia de onde eles vieram.
skytreader
Verifique a presença do arquivo especificado no ESP. Também não se esqueça que o caso do nome do arquivo está correto. (Não deve importar, mas eu sei de uma EFI de buggy onde ela funciona!) Se isso não ajudar, que mensagem de erro (se houver) o GRUB retornará quando você tentar iniciar o Windows por esta entrada?
Rod Smith
8

Inicialize no Ubuntu usando o CD,
escolha "Try Ubuntu",
conecte-se à Internet,
abra uma janela do terminal usando Ctrl- Alt- te execute:boot-repair

Se o reparo de inicialização não for encontrado, instale-o:

sudo add-apt-repository ppa:yannubuntu/boot-repair &&
sudo apt-get update &&
sudo apt-get install -y boot-repair &&
boot-repair

Clique em Reparo recomendado. Escreva em um papel a nova URL que aparecerá. Reinicie o PC, você deve obter um menu do GRUB com acesso ao Ubuntu e ao Windows. Se houver algum problema, indique o novo URL.

Scott Stensland
fonte
7

Ambas as respostas com /EFI/Microsoft/Boot/bootmgfw.efifariam. No entanto, eu hackei como o inferno para obter as configurações corretas set root='(hd0,gpt1)'. Se você sabe que é muito simples

Quando o GRUB iniciar: pressione c dar o comando lsno prompt.
Você obtém uma lista de partições em discos rígidos como (hd0, gpt1) etc.
Digite ls(hd0, gpt1) e tente as outras.
Olhe para o rótulo e, se ele indicar EFI, você sabe que foi atingido.

Aviso: pode haver mais partições rotuladas com EFI, dependendo de como você instalou o Ubuntu. Tente todos eles.

Jørgen
fonte
6

Tente correr sudo update-grub. Espero que isso reconheça o Windows 8 automaticamente e adicione-o ao GRUB e reconfigure o menu.

Se isso falhar, compartilhe seu /etc/default/grubarquivo aqui, veremos.

Tom Klino
fonte
1
Oi. sudo update-grubnão fez o truque. Eu editei minha pergunta para incluir o meu /etc/default/grub. Enquanto isso, estou estudando a resposta que NikTh vinculou.
#
3

Tente criar um arquivo chamado /etc/grub.d/30_windowsque contém este:

#! /bin/bash
cat << EOF
menuentry "Windows 8" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt1)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
EOF
Em seguida, execute sudo update-grube reinicie.

Tutorial completo

tradeJmark
fonte
1
  1. Faça o download do super Grub e siga as instruções. Eu nunca saio de casa sem ele. Muito útil quando o menu grub não aparece.

  2. Você precisará carregar um CD e inicializá-lo. Basta seguir as instruções que o acompanham.

  3. Também pode ser usado para consertar janelas. Como você só pode inicializar no Windows 8, você deseja escolher a correção do Linux.

Brinque com isso, mas leia as instruções. Você se sentirá um especialista depois de um tempo. RS

Raposa
fonte
0

Minha solução definitiva

(* Porque o Tom não funcionou e o link do NikTh é muito complicado. Mas, ei, obrigado por se preocupar!)

Instale o rEFInd .


Aceito minha própria resposta até que alguém aponte uma possível falha e uma correção para ela ou resolva meus problemas (que, infelizmente, apenas fazem a pergunta "Como coloco o Windows 8 no GRUB facilmente ?").

( Edit 8/6/17: Eu finalmente usei o rEFInd para resolver esse problema (veja a resposta aceita acima).)

Longe de ser uma solução perfeita, o uso do rEFInd parece um trabalho muito complicado. Por um lado, parece feio (desculpe rEFInd) e me diz que o acesso foi negado em certos arquivos .efi ({ext2_x64, hfs_x64, iso9660_x64, reiserfs_x64} .efi) na inicialização - nada crítico, porém, e desaparece com um botão pressione*. E, finalmente, escolher o efi do Ubuntu ainda carrega o GRUB, que é uma etapa totalmente desnecessária, pelo menos desde que eu não vou me preocupar em manter várias versões do kernel por perto.

Em suma...

Prós: meu sistema agora funciona mais ou menos como minhas botas duplas pré-UEFI. Contras: parece feio mais um tempo de inicialização maior.

* Devo observar que este rEFInd foi instalado via install.shna minha partição Ubuntu. Experiências anteriores com o rEFInd (configuração através do Windows) não tiveram esse problema.

skytreader
fonte
Se uma instalação anterior do rEFInd via Windows não gera erros sobre arquivos que não puderam ser encontrados, mas sua instalação atual do Linux, então meu palpite é que uma das duas coisas está acontecendo: 1) Você tem uma placa-mãe com um erro de distinção entre maiúsculas e minúsculas; nesse caso, mexer com o caso de arquivos ou diretórios pode melhorar as coisas; ou 2) Há algo de estranho no seu ESP (FAT16 vs. FAT32 ou algum dano menor no sistema de arquivos, por exemplo). Algumas EFIs parecem ser muito exigentes com os sistemas de arquivos em seus ESPs. Os nomes de arquivos exatos podem ser úteis para restringir o problema.
Rod Smith
Está bem. Minha culpa. Não estava dizendo que não é possível encontrar certos efis, apenas que seu acesso foi negado em certos efis (então, acredito que os referidos efis estão lá, inacessíveis?). Anotei esses arquivos agora, embora ainda não tenha ideia de onde eles vieram.
skytreader
"Acesso negado" é um erro incomum no EFI, na minha experiência. AFAIK, EFI não suporta propriedade ou permissões como o Linux, por isso não faz sentido a menos que haja um erro de leitura do disco. Eu vi erros estranhos de gravação de disco no EFI que evaporaram na próxima reinicialização. Se esse problema persistir, você pode considerar executar um teste SMART no disco, caso haja uma falha de hardware, fazer backup e reescrever o ESP, caso haja algum dano estranho no sistema de arquivos que o dosfsck não consiga corrigir. Fora isso, relatar quais arquivos estão causando problemas pode ser útil.
Rod Smith
1
A mensagem "acesso negado" quase certamente se refere à inicialização segura. Essa mensagem ocorre se o rEFInd tentar carregar um binário EFI não assinado enquanto estiver no modo Inicialização segura. O que é intrigante é que você é capaz de iniciar o rEFInd, já que ele não é assinado por si mesmo. Meu palpite é que você tem algum tipo de configuração de inicialização segura com buggy meio ativada no seu firmware. A solução mais fácil no momento é desativar completamente a Inicialização segura, mas existem outras. Veja minha página da Web em rodsbooks.com/efi-bootloaders/secureboot.html para obter mais informações.
Rod Smith
No meu laptop hp, tenho que pressionar f9 e, em seguida, iniciar o grub, caso contrário, o Windows será carregado. Também há uma opção para inicializar o Windows a partir do grub, embora eu nunca o use. Se estou entediado no Windows, basta ativá-lo e aguardar o Windows. Se pretendo inicializar o ubuntu, pressione f9 assim que ligar.
Geoffmcc