Existe alguma maneira de inicializar o Windows 7/8 usando o BIOS na GPT?

21

Gostaria de saber se existe um método para instalar o Windows 7 ou o Windows 8 Developer Preview em um disco GPT na minha configuração tradicional do IBM PC BIOS. O Windows 7, é claro, rejeita minha partição GPT, porque não tenho UEFI. Bem, o Debian e o Grub 2 parecem funcionar bem ... Então, eu quero saber se há uma maneira de forçar o Windows a funcionar também.

Eu prefiro a sério evitando híbrido MBR / GPT, porque é bastante frágil e sente hackish, mas faz o trabalho. Eu diria que o principal bloqueador é que a Microsoft simplesmente não está adicionando suporte no carregador de inicialização do BIOS para GPT, o que é compreensível, suponho. Existe algum recurso?

Do meu ponto de vista, existem algumas soluções em potencial:

  1. Ter um gerenciador de inicialização alternativo para o kernel do Windows. NÃO é um carregador de corrente. Tanto quanto eu sei, não existe. Isso é uma vergonha.
  2. Armazenando o mínimo possível em um disco alternativo baseado em MBR. Não gostando dessa idéia, mas é factível. Não tenho certeza se chamaria isso de solução para o problema, além de uma solução alternativa.
  3. Emulando a EFI o suficiente para que o gerenciador de inicialização EFI funcione ... Lembro-me de ouvir um pouco sobre um emulador UEFI no BIOS, mas não consigo encontrar nada sobre isso agora. Presumo que isso seja possível, mas provavelmente ainda não há muita demanda, e provavelmente não é nada divertido de configurar. O GRUB 2 parece capaz de inicializar um hackintosh com a emulação EFI necessária, mas acho que não há interesse / o UEFI 2 é mais difícil de abordar (e eu presumo que outros emuladores EFI usados ​​para o hackintosh estejam no mesmo barco).
  4. Coreboot com TainoCore. O Coreboot não funciona na minha placa-mãe (tanto quanto eu sei) e tenho certeza de que o último esforço para fazer isso durante o GSoC foi um fracasso. Eu absolutamente adoraria esta solução, se funcionasse.

Estou faltando alguma coisa?

John Chadwick
fonte
1
Nem tanto. Eu sei que ele pode ser executado no híbrido MBR / GPT e não tenho medo de usá-lo. Além disso, estou insatisfeito com essa solução e quero saber se existe outra maneira melhor. No entanto, ainda estou trabalhando nesse problema e posso encontrar minha própria solução.
John Chadwick
1
Tenho certeza de que essa pergunta é uma duplicata desta, dada a disparidade de dois anos. Além disso, realmente não há resposta para a pergunta lá, ou pelo menos não direta, enquanto essa pergunta tem uma resposta direta.
John Chadwick
Você checou minha resposta? É novo, e ninguém mais fez dessa maneira. Gostaria de alguns testes nele. Garantido não hacky.
precisa
No entanto, ele realmente não funciona em um laptop. Mais uma vez, acho muito estranho sinalizar esta pergunta como duplicada, depois que ela foi respondida o suficiente quase dois anos antes de a pergunta ser feita. Não acho que a execução de uma implementação UEFI seja burra; simplesmente estranho, mas tem a vantagem de não exigir unidades de disco adicionais.
John Chadwick
Existe uma implementação de disco único em andamento, será atualizada quando testada ... Além disso, é um hack no sentido de que você está mentindo para o Windows sobre o sistema: no MBR híbrido, mentindo sobre o tipo de partição, em DUET, mentindo sobre o firmware.
Milind R

Respostas:

8

Bem, as coisas mudaram desde que eu fiz essa pergunta. Por um lado, meu PC agora é baseado em UEFI, então não tenho mais esse problema. Bem, mais ou menos. Eu tinha interesse em criar uma configuração semelhante no meu laptop (partições GPT, etc.). Finalmente consegui obter uma configuração Tianocore UEFI DUET em funcionamento, e foi o mais simples possível!

Isso pressupõe que você deseja todas as novas e brilhantes configurações. Se você realmente deseja converter sua configuração antiga, boa sorte . Na verdade, boa sorte de qualquer maneira, pois esta é uma operação irregular em qualquer situação.

Uma palavra de advertência: Se você é um fã de tempos de inicialização rápida, você pode querer repensar essa decisão. Não que o UEFI DUET seja lento, mas adiciona outro estágio ao seu processo de inicialização; portanto, se o BIOS / POST não for rápido, talvez você não goste.

Sem mais delongas:

  1. Você quer uma configuração do Linux. Eu usei o Fedora 16 em um pendrive (com UNetBootin) e recomendo isso porque ele praticamente funciona imediatamente. Você precisa de uma unidade USB de qualquer maneira, portanto, não planeje continuar sem uma.

  2. Pegue algumas compilações UEFI DUET. Sem dúvida, o melhor lugar para conseguir isso é aqui . Os tarballs de construção reais estão sob a ramificação principal do primeiro repositório, aqui . Dê o velho tar -xf.

  3. Configure suas partições. Você deve reservar 200 MB em algum lugar do disco (de preferência o início e a primeira partição). É possível formatá-lo com o FAT32, mas iremos reformatá-lo mais tarde. Apenas verifique se ele aparece como uma partição. Você deve usar o GPT aqui.

  4. Agora instale qualquer software adicional que você possa precisar. Na distribuição do Fedora Live, achei necessário yum install gdisk. Eu acho que foi isso.

  5. Agora vá para o diretório de compilações extraídas. chmod +x ./duet-installe ./duet-install -64 -F -m /dev/sda1(onde /dev/sda1está a partição do sistema EFI desejada).

  6. Cruze os dedos e reinicie. Com alguma sorte, você verá o logotipo da TianoCore em apenas alguns momentos. Se assim for, você provavelmente é bom! Você precisará configurar os arquivos de instalação do sistema operacional em uma unidade USB - o Tianocore não suporta unidades de CD-ROM / DVD-ROM prontas para uso (e eu não conheço nenhum driver para isso).

Você também pode desejar alguns binários de shell UEFI para jogar. Encontrei alguns aqui . Ainda não testou com o Tianocore.

De qualquer forma, obrigado por todos que tentaram ajudar.

John Chadwick
fonte
Isso funciona com instalações do Windows?
Moab
Eu estava usando-o com sucesso no Windows 8 em 2012. Não preciso mais dele porque tudo o que foi feito nos últimos anos usa UEFI, porque o Windows 8+ exige que os fabricantes de hardware o suportem. Provavelmente ainda funcionaria hoje, mas não sei se recomendo.
John Chadwick
2
O link UEFI DUET agora deve estar aqui , mas não é mais mantido; o site diz para usar o Clover EFI .
Kirbyfan64sos
1
e você pode instalar o trevo para o disco rígido para remover a necessidade de uma unidade separada
phuclv
6

Consegui inicializar o Windows 8.1 em um disco GPT em uma configuração do BIOS SEM um segundo disco MBR.

A história era: Meu laptop estava sob uma configuração de BIOS + GPT, com apenas o Arch Linux instalado. Recentemente, eu preciso realizar algumas tarefas no Windows (que as máquinas virtuais não podem), por isso estou com dificuldades para instalar o Windows na minha configuração de BIOS + GPT existente. De acordo com a resposta de Milind , eu consegui instalar os arquivos de inicialização do Windows (Boot, bootmgr, etc) em uma (pequena) unidade USB MBR. E sempre que ligo meu laptop com a unidade USB conectada, posso inicializar no Windows 8.1, após o que a unidade pode ser conectada com segurança.

A desvantagem é óbvia: preciso carregar uma unidade USB comigo para inicializar o Windows. Então, eu estava sempre tentando me livrar disso.

Depois de tentar com métodos diferentes, finalmente encontrei o módulo memdisk do projeto syslinux funcionado.

  • Você precisa desistir do gerenciador de inicialização do Windows.
  • Você não precisa instalar o syslinux. Somente o módulo memdisk (um arquivo de 26 kB) é necessário.
  • Você pode usar muitos gerenciadores de inicialização para carregar este módulo, no meu caso, meu gerenciador de inicialização GRUB favorito (versão 2).

Aqui está o resumo de instruções:

  • Particione seu disco GPT para atender às necessidades do GRUB, ou seja, uma pequena partição para incorporar o core.img. Link detalhado
  • Instale o GRUB nessa pequena partição.
  • Instale o Windows com imagex.E use bootsecte bcdbootpara instalar os arquivos de inicialização do Windows em um pequeno disco USB MBR..
  • Use ddou dd_rescuepara clonar seu pequeno disco USB em uma imagem de disco. (Seu disco USB terminou o trabalho.) A imagem pode ser muito grande para carregar o memdisk, você pode montá-la e encolher o sistema de arquivos / partição nela.
  • De acordo com o meu teste, você não precisa de um disco MBR físico para instalar os arquivos de inicialização do Windows. Você pode criar um arquivo vhd e tratá-lo como um disco físico.Depois de instalar os arquivos de inicialização do Windows no vhd, você pode convertê-lo em imagem de disco bruta (estilo dd) usando as ferramentas fornecidas pelo VirtualBox ou QEUM.Quando criado com type=fixed, o arquivo vhd é apenas uma imagem de disco bruto normal (estilo dd) com rodapé de 512 bytes. O rodapé será reconhecido como "espaço não particionado" e será ignorado, para que um type=fixedarquivo vhd possa ser alimentado diretamente no MEMDISK sem converter e, portanto, inicializar o Windows.
  • Configure o GRUB para usar o memdisk para carregar esta imagem de disco.
  • O Windows irá inicializar.

Um tutorial detalhado pode ser encontrado em minha resposta reboot.pro ao tópico de Milind.

Zhuoyun Wei
fonte
1
@wzboy Estou usando o Arch linux e consegui obter o ponto de instalar o Windows (com o wimlib-imagex). Agora não tenho certeza de como continuar. Você seria capaz de elaborar como criar o arquivo vhd a partir de uma distribuição linux?
Mihai Bişog
@ MihaiBişog Você precisa de um Windows PE para criar esse vhd. Existem várias maneiras de inicializar no Windows PE. O GRUB e o syslinux podem inicializar em arquivos iso, por exemplo.
Zhuoyun Wei
Não é isso vai quebrar as atualizações do Windows? Quero dizer, se a Microsoft lançar a atualização, que deve modificar esses arquivos de boot / bootmgr que você coloca na imagem do disco virtual - eles não serão atualizados e você nunca perceberá isso. Suponho também que isso possa quebrar algumas operações de reparo do Windows. Existem outras desvantagens?
Powerman 12/09
De fato, o BCD / Bootmgr nunca será encontrado pelo Windows, pois reside em uma imagem de disquete / disco. Portanto, não há questão de atualizá-lo automaticamente. O reparo automático não funcionará. Qualquer coisa relacionada às ferramentas da Microsoft relacionadas à sua inicialização provavelmente não funcionará.
precisa saber é o seguinte
1
Sim, qualquer coisa relacionada ao bootmgr não funcionará, pois "desapareceu" depois de ajudar o Windows a inicializar. De fato, quando você executa o "bcdedit" no cmd.exe, ele diz que não é possível encontrar os arquivos de inicialização. :-)
Zhuoyun Wei
5

Se você tiver uma pequena unidade sobressalente, poderá inicializar o Windows (32 ou 64 bits) a partir da GPT no BIOS. Um disquete serve.

Inicialize no disco de instalação / reparo do Windows.

Crie a unidade do sistema no disco pequeno / disquete e use bcdbootpara colocar seus arquivos de inicialização na unidade recém-criada no disco pequeno. Adicione um setor de inicialização com bootsect. Mude {bootmgr} devicepara boot. Inicialize a partir do disco pequeno.

Os passos são detalhados aqui .

Milind R
fonte
2
Tentei isso e funcionou. Agora eu tenho um Windows 8.1 funcionando em um disco GPT em uma configuração do BIOS. Tudo o que tenho a fazer é inserir minha unidade flash USB para inicializá-la. Após o processo de inicialização, a unidade USB pode ser removida. Assim como nos velhos tempos, quero dizer MS-DOS disquete ...
Zhuoyun Wei
Ri muito. Estou trabalhando em uma solução que não requer outro disco. Você pode me dizer o quão lento / rápido é?
Milind R
1
Eu acho que colocar o bootmgr em outro disco não torna a inicialização do Windows mais longa, pelo menos eu não sinto isso.
Zhuoyun Wei
2
OHHHH SIM. Desculpas por estar muito animado. Passei uma tarde inteira e finalmente consegui inicializar o Windows 8.1 em um disco GPT em uma configuração da BIOS SEM um segundo (pequeno) disco MBR - usando o módulo syslinux memdisk que é capaz de carregar a imagem do disco rígido.
Zhuoyun Wei
1
Aqui está o meu post: reboot.pro/topic/…
Zhuoyun Wei
3

Muito obrigado a wzyboy.

Eu enfrentei esse problema ao tentar instalar o Windows 2012 no Dell PowerEdge 2950 com 6Tb RAID. Não possui UEFI.

Eu realizei algumas experiências. Primeiro, criei o HDD virtual de 32Mb, como disse o wzyboy, e simplesmente copiei todas as coisas da partição reservada da Microsoft. O Windows foi iniciado normalmente. Mas com esta solução, o serviço Hyper-V não pôde ser iniciado.

Como diz o wiki do memdisk, ele decide automaticamente pelo tamanho da imagem, que tipo de mídia deve imitar. Então, criei um disquete virtual de 720K no ambiente WMware e copiei o bootmgr, o BCD e o bootstat.dat (por precaução, excluí o submenu memtest da loja BCD). Tamanho do disquete, escolhi o menor possível, para que ele seja maior ou até menor, não tentei.

Agora ele inicializa a partir da unidade GPT e o Hyper-V funciona bem.

PS pode ser de ajuda de software de terceiros. Alguém usou algo assim? https://www.terabyteunlimited.com/bootit-bare-metal.htm

Nikolai Vakulenko
fonte
Ultimamente, depois de passar muitas horas em truques de imagem, encontrei o controlador RAID Perc5-i capaz de cortar uma matriz menor que a capacidade física do disco rígido. Portanto, no hardware profissional, a inicialização por GPT não é problema.
Nikolai Vakulenko
Você pode, por favor, narrar seu cenário e sua correção para esse tópico de desenvolvimento ? Estou tentando manter todos os detalhes juntos.
Milind R
2

O artigo A BIOS to UEFI Transformation descreve em detalhes como usar o TainoCore UEFI DUET.

Entendo que você teve problemas ao usar o TainoCore, mas talvez este artigo funcione para você.

O artigo diz:

Alguns computadores não funcionam com UEFI DUET. Mais importante ainda, é realmente útil apenas em computadores x86-64 de 64 bits, especialmente em formato binário. Na verdade, ele não inicia corretamente, mesmo em alguns computadores x86-64. Nos testes em cinco sistemas x86-64, consegui obter uma ou ambas as versões trabalhando em apenas três computadores - uma taxa de sucesso bastante sombria, na verdade. Pode ser apenas uma coincidência, mas os dois computadores que funcionaram melhor para mim usaram CPUs Intel, enquanto os dois que funcionaram pior e o que funcionou com a versão 2.1, mas não a versão 2.3, todos possuíam CPUs AMD.

Isso parece implicar que se deva experimentar várias versões do UEFI DUET antes de desistir.

Ajudaria a conhecer o modelo do seu computador.

harrymc
fonte
Desde a última atualização desta pergunta, na verdade, consegui que o UEFI DUET inicializasse com êxito no meu computador. Infelizmente, a falta de um driver de DVD-ROM me matou, pois eu não tinha nenhuma unidade USB para armazenar o Windows. Depois que meu disco rígido principal falhou aleatoriamente, decidi descansar e usar o particionamento do BIOS como reserva. No entanto, este artigo é definitivamente útil e ainda estou interessado em fazer isso funcionar por conta própria. Vou tentar lembrar de pegar um pen drive em breve.
John Chadwick
@JohnChadwick você pode usar Clover e instalá-lo para o disco rígido de modo que você não precisa de uma unidade de inicialização separado mais
phuclv
@phuclv: Você notou que o comentário de John Chadwick é de 2011 e que ele deu sua própria resposta a este post?
harrymc
@harrymc é claro que eu sei. Essa informação é para futuros leitores
phuclv
0

As pessoas precisam ter em mente que nem todo firmware do BIOS é capaz de lidar com uma unidade GPT. Eu tenho uma unidade USB Seagate de 4 TB que era GPT de fábrica e nenhum dos meus dois computadores inicializava com a unidade conectada à porta USB.

As máquinas congelam na tela do menu F2 Enter Setup F10 Boot e a única coisa que pode ser feita nesse momento é desligar a energia e ligá-la novamente.

Depois de converter a unidade para MBR, que ocupa cerca de 2 TB de espaço em disco, os dois sistemas serão iniciados e inicializados no sistema operacional normalmente com a unidade conectada.

Estou procurando um patch do BIOS para corrigir esse problema.

Scott Tovey
fonte
O BIOS não sabe nada sobre a unidade , seja GPT ou MBR, ou mesmo rótulo BSD ou APM ... Apenas carrega o primeiro setor (por exemplo, MBR) e o executa. Nesse ponto, o trabalho do BIOS pode ser considerado "concluído". Se a sua unidade não boot, isso significa apenas que não há nenhum setor de inicialização válido na unidade
phuclv