2012-11-28 00:37:29 +0000 2012-11-28 00:37:29 +0000
32
32

Como utilizar o BCDEdit para instalações de duplo arranque Windows?

Quais são os comandos bcdedit necessários para configurar o duplo boot entre diferentes instalações do Windows?5

Background

I recentemente instalei o Windows 8 num disco rígido separado1. Agora que o Windows 8 está instalado, quero voltar ao Windows 7.

Tenho os meus dois2 discos rígidos:

C:\WINDOWS\system32>bcdedit

Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
description Windows Boot Manager
locale en-US
inherit {globalsettings}
integrityservices Enable
default {current}
resumeobject {ce153eb7-3786-11e2-87c0-e740e123299f}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30

Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \WINDOWS\system32\winload.exe
description Windows 8
locale en-US
inherit {bootloadersettings}
recoverysequence {ce153eb9-3786-11e2-87c0-e740e123299f}
integrityservices Enable
recoveryenabled Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {ce153eb7-3786-11e2-87c0-e740e123299f}
nx OptIn
bootmenupolicy Standard
hypervisorlaunchtype Auto

Assim podem ver que tenho os meus dois discos, com as partições que contêm o Windows:

  • Windows 7* : \PhysicalDisk0 (partição 03)
  • Janelas 8* : \PhysicalDisk2 (partição 1)

O que estou a tentar descobrir é como usar bcdedit para instruir o que arranca o Windows de que existe outra instalação do Windows por aí.

Correndo bcdedit agora, mostra a configuração actual:

>bcdedit /create /d "The old Windows 7" /application osloader

Não consigo encontrar qualquer documentação sobre a diferença entre Windows Boot Manager e Windows Boot Loader*.

Documentação

Existe alguma documentação sobre Bcdedit:

& - Technet: Command Line Reference - Bcdedit - Technet: Windows Automated Installation Kit - BCDEdit Opções de Linha de Comando - Whitepaper - BCDEdit Commands for Boot Environment (Word Document)

& Mas eles não explicam como editar os dados de configuração de arranque binário.

Se eu tivesse de adivinhar, pensaria que um Gerenciador de Boot do Windows instrui a BIOS que programa deve correr. Esse programa daria ao utilizador um conjunto de opções de arranque. Isso deixa Windows Boot Loader* ser uma escolha particular de arranque ** escolha** , que representa uma instalação particular do Windows.

Se for esse o caso, teria de criar uma nova entrada Windows Boot Loader*.

Isto significa que eu poderia querer usar o parâmetro /create:

/criar

& > Cria uma nova entrada de arranque:

bcdedit [/ store filename] / criar [id] / d descrição [/ aplicação apptype | / inherit [apptype] | / inherit DEVICE | / dispositivo ]

Por isso assumo uma sintaxe de:

Apptype Description
BOOTSECTOR The boot sector application
OSLOADER The Windows boot loader
RESUME A resume application

Onde application pode ser um dos seguintes tipos:

>bcdedit /create /D "Windows Vista" /device "The Quick Brown Fox"

Infelizmente, a única documentação sobre osloader é “O carregador de arranque do Windows”. Não vejo como isso pode diferenciar entre Windows 8* num disco rígido, e Windows 7* noutro.

O outro parâmetro possível quando /create um carregador de arranque é

Infelizmente falta a documentação para /device:

/dispositivo

Opcional. Se o id não estiver definido para um identificador bem conhecido, a opção que é utilizada para especificar a nova entrada de arranque como uma entrada adicional de opções de dispositivo.

Como não defini id para um identificador bem conhecido, devo definir /dispositivo* para “a opção que é utilizada para especificar a nova entrada de arranque como uma entrada adicional de opções de dispositivo”. Conheço todas essas palavras; são todas em inglês. Mas não faço ideia do que está a dizer; essas palavras nessa ordem parecem disparatadas.

Por isso, estou um pouco bloqueado. Não quero ser como Dan Stolts da Microsoft, que destruiu os seus discos rígidos tentando usar o BCDEdit :

Não encontrei nenhum conteúdo que tenha sido particularmente útil quando mangueei a minha máquina ao brincar com o BCDEdit. Este post teria sido bom se houvesse muito mais detalhe especialmente no comando /set OSDevice, etc. Assim que arranjei a minha máquina, documentei a solução e a informação é aqui… .

Quero dizer, se um tipo da Microsoft nem consegue perceber como usar o BCDEdit para editar o seu BCD, então que hipóteses tenho eu?

Leitura Bónus

Notas de rodapé

  • 1 Uma vez que o instalador do Windows 8 teria danificado a instalação do meu Windows 7, Decidi desligar a ficha do meu “principal” disco rígido durante a instalação. O que é uma longa explicação de porque o instalador do Windows 8 não detectou a instalação do Windows 7 existente. Normalmente, o instalador teria criado automaticamente as entradas necessárias para o dual-boot. Não é que a raça que estou a fazer a pergunta seja importante.
  • 2 Realmente existem três unidades, mas a terceira é apenas armazenamento a granel. A existência de um terceiro disco rígido é irrelevante para a pergunta. Só o menciono no caso de alguém querer saber porque é que a imagem de ecrã tem 3 discos rígidos, quando menciono apenas dois.
  • 3 Eu comecei arbitrariamente a numerar as partições em “zero”; não querendo implicar que as partições sejam numeradas a partir de zero. Só menciono partições porque não vejo como é que qualquer carregador de arranque poderia fazer o seu trabalho sem saber em que partição, e em que pasta, se encontra uma instalação do Windows.
  • 4 Estou a perguntar sobre o BCDEdit. Tentei Visual BCD Editor*. Parece ser um visual editor de BCD. Isto quer dizer que é uma GUI, mas ainda usa a mesma terminologia do BCDEdit, e requer o mesmo conhecimento que o BCD não documenta.
  • 5 Por uma questão de simplicidade, vamos assumir que toda a instalação do Windows que eu quero fazer dual-boot entre o Windows Vista ou posterior, tornando-os todos compatíveis com o BCDEdit e o carregador de arranque binário. A alternativa exigiria aprofundar os meandros do antigo ntloader. Também não estou a perguntar sobre inicialização dupla para Linux; ou como arrancar para uma imagem de disco rígido virtual (vhd). Apenas versões modernas do Windows em discos rígidos existentes na mesma máquina.

Respostas (7)

16
16
16
2012-11-28 10:16:25 +0000

Isto não é uma resposta directa à pergunta antes de “Background”, mas aponta para uma solução alternativa para a criação de entradas de carregadores para o arranque de dois (e mais) sistemas operativos Windows Vista e posteriores. Veja também a minha segunda resposta abaixo sobre a crítica à terminologia utilizada no Visual BCD.

Sem guias, dispositivos, objectos, elementos e blá, blá, blá, blá.

O meu fundo (saltar se não estiver interessado e ir para a solução abaixo):

Eu implementei o Visual BCD Editor.

Durante o processo de implementação tive de ler todas as fontes disponíveis no bcdedit e na interface do WMI BCD Provider (interface de programação, pode ser usado com C++, C#). A documentação da Microsoft é realmente pobre.

No BCD existem objectos (carregadores, configurações, elementos de dispositivos). Não há documentação sobre as ligações entre objectos, apesar de existirem dependências.

Existem mais de 140 (!) elementos (propriedades) de objectos BCD no Windows 7. Não sei o significado de alguns elementos - simplesmente não há documentação.

No Windows 8 há novos elementos - acho que o número total aproxima-se agora dos 180 (!!). Não há documentação.

Por outro lado, existem dois utilitários muito poderosos para manipular o BCD: bcdboot e reagentc.

bcdboot - cria/corrige o carregador por defeito também o BCD e o ambiente de arranque como um todo!

reagentc - instala/desinstala ambiente de recuperação (winre.wim)

Ambas as ferramentas também não estão muito bem documentadas.

Solução alternativa:

Quase não há necessidade de bcdedit uma vez que usando apenas bcdboot pode criar carregadores para o Windows Vista e para os SO’s posteriores do Windows - cria carregadores para os SO mais antigos, do que para os mais recentes e voilá criou o ambiente de arranque para um sistema de arranque duplo/multi:

Assumindo que está no Windows 8:

1. bcdboot f:\indows (este mapa para Windows 7 como na imagem em questão)

2. bcdboot c:\indows (este mapa para Windows 8)

Done !

Regra básica da Microsoft para o processo de arranque: O ambiente de arranque (e BCD) deve estar sempre em [primeiro disco + partição activa]. (na imagem - Disco 2 => Primeiro disco na sequência de arranque da BIOS !)

Por último, mas não menos importante, existe o utilitário bootsect para escrever MBR e PBR (master and partition boot record) - agora standard no Windows 8 (estava disponível apenas no WinRE anteriormente).

Assim, utilizando apenas bootsect e bcdboot, todas as entidades de arranque para um sistema de duplo arranque podem ser criadas/fixadas.

Penso que o processo de arranque para Vista e mais tarde é descrito muito bem em muitos sites da Internet, mesmo em Microsoft.com.

Nota:

Um dos melhores sites sobre o Windows BCD é site de Geoff Chappell - há aí informação mais detalhada do que em Microsoft.com. Os utilizadores interessados poderão encontrar aí informação bastante útil e algumas notas críticas sobre a documentação do bcdedit.

10
10
10
2013-03-07 10:54:28 +0000

Quando formatei a minha unidade C: para reinstalar o Windows, o registo de arranque principal foi apagado e o instalador do Windows 7 não o restaurou. Poderia usar uma ferramenta GUI bcdedit como a ferramenta Visual BCD Edit, mas porquê ter de instalar algo quando deveria haver um simples comando em bcdedit pode fazer o trabalho? Após muita pesquisa através dos ficheiros de ajuda online, desisti com bcdedit e encontrei a resposta aqui enterrada em digressões. Para criar uma entrada de arranque para a segunda partição, é preciso usar bcdboot.

Assumindo que está em C:\Windows:

  1. bcdboot e:\windows
  2. bcdboot c:\windows Quando reiniciar, ser-lhe-á apresentado o menu de arranque do Windows com duas entradas para Windows 7. Se seleccionar a entrada que arranca em C:\Windows, pode renomear a entrada para esta partição:
  3. bcdedit /set {current} description "Windows 7 (Partition 1)" Isto faz com que o SO arrancado ao arrancar seja a entrada por defeito no menu de arranque:
  4. bcdedit /default {current} Isto coloca o SO por defeito no arranque primeiro item no menu de arranque:
  5. bcdedit /displayorder {default} /addfirst Ou pode fazer do SO no arranque o primeiro item do menu de arranque:
  6. bcdedit /dispalyorder {current} /addfirst Agora reiniciar e seleccionar o segundo item no menu de arranque, que deve ser rotulado “Windows 7”. Uma vez inicializado em E:\Windows renomear o SO inicializado ao arrancar:
  7. bcdedit /set {current} description "Windows 7 (Partition 2)" Testar se o menu de arranque funciona bem e guardar os dados bcd numa partição que não tenha um SO instalado:
  8. bcdedit /export D:\Saved_BCD_Settings\SavedBCD Se fizer asneira mais tarde, pode restaurar o menu de arranque do bcd com:
  9. bcdedit /import D:\Saved_BCD_Settings\SavedBCD
5
5
5
2012-12-02 01:36:13 +0000

algumas notas sobre a crítica na pergunta original sobre a utilização da mesma terminologia em Visual BCD que a Microsoft utiliza para bcdedit.

O conceito BCD é desenvolvido pela Microsoft. Vem com a sua própria terminologia. Acho que não o posso alterar. Apenas o posso alargar.

A Microsoft deu duas formas de acesso/edição do BCD:

  1. usando bcdedit.exe - interface de linha de comando
  2. Interface BCD WMI Provider - interface programática

Ambas as interfaces falam de objectos e elementos BCD. Este é um conceito geral usado também na programação/computadores como em outras áreas humanas. Poderíamos ir até à filosofia que utiliza a terminologia dos objectos, propriedades e relações para descrever o mundo e o universo.

BCD O acesso do fornecedor BCD WMI é mais flexível, pois dá a um programador a possibilidade de aceder a todos os objectos e elementos do BCD e de operar livremente sobre eles.

Visual BCD faz pleno uso do BCD WMI Provider Interface e implementa o acesso da mesma forma que nós somos usados para aceder ao registo do Windows usando regedit.exe. Além disso, a ferramenta automatiza duas tarefas principais - criação de carregadores e reparação de dual-boot. * Nenhuma outra ferramenta oferece tal funcionalidade automática com um clique. Diria que esta é *nova terminologia e novo nível de abstracção. Eu não mudaria a base que a Microsoft criou, só posso construir sobre ela.

Utilizadores principiantes basta clicar num botão e uma operação complexa é levada a cabo! Não é necessário nenhum fundo ! Você nem precisa saber quantas versões do Windows tem instaladas - a ferramenta tenta encontrá-las todas e depois criar carregadores para elas se os carregadores correspondentes ainda não estiverem presentes no BCD - a terminologia utilizada - “Criar carregadores Windows em falta ” - Penso que todos os que falam inglês poderiam compreender/clicar/confirmar tal operação ou estou errado ?

A complexidade dos objectos e elementos no BCD é natural, uma vez que o conceito abrange o arranque de sistemas operativos Windows mais recentes e mais antigos, bem como de sistemas operativos estrangeiros como Linux, Unix, etc. Além disso, é um conceito geral para inicialização do MBR e EFI em vários dispositivos.

A parte mais complexa do BCD é o conceito de dispositivo*. Tem dispositivo de partição, dispositivo de ramdisk, dispositivo de ficheiro, dispositivo de localização - tem de se passar algum tempo a compreendê-lo e não creio que isto seja para o utilizador normal do Windows. Os fóruns estão cheios de perguntas sobre partições de disco, o que é um tópico muito menos complexo. Muitos utilizadores de Windows nem sequer sabem a diferença entre partição primária e lógica, por exemplo. É preciso saber acerca de partições se se quiser arrancar em dupla/múltipla partição. É preciso comprar um terreno se se quiser construir uma segunda casa.

O conceito de BCD é o mesmo desde Vista - apenas novos elementos são definidos no Windows 7/8.

Penso que a estrutura de registo para o BCD é escolhida porque o Windows já implementa esta interface e é uma interface transaccional fiável que provou funcionar ao longo dos anos. Se o conceito de registo do Windows em geral é um bom ou um mau conceito é outro tópico.

Cabe ao programador/desenvolvedor criar uma interface mais amigável para o utilizador. Comecei por dar a mesma interface - um equivalente GUI de bcdedit - mais tarde a interface pode ser abstraída a um nível superior com base nos padrões de utilização. Já está implementada uma visão estruturada do BCD. Esta é a camada de abstracção base.

O próximo nível de abstracção seria concentrar-se nas relações entre objectos, uma vez que este tópico não é coberto pela Microsoft. Não é uma tarefa fácil. A nova terminologia vem com a abstracção.

3
3
3
2017-12-19 10:14:27 +0000

Embora antigo, quero acrescentar às respostas, porque várias das respostas acima contêm informações incorrectas. Provavelmente funcionam, mas certamente não é necessário um programa externo, ou mesmo bcdboot para o fazer. Para referência, a informação correcta é a seguinte:

Quick BCD background if new to it

BCD é a configuração de arranque do Windows. Contém numerosas secções, cada uma identificada por um nome (chamado “descrição”) e um identificador que se assemelha um pouco a este: “{0743bb44-fda6-11e3-90c8-e3ee27f3aec6}”.

Existem vários “identificadores bem conhecidos”, e bcdedit irá utilizá-los onde puder, (a menos que utilize a opção /v (verbose) com /enum). Têm este aspecto: “{bootmgr}”, “{memdiag}”. Estes são apenas nomes curtos para identificadores completos, mas são mais fáceis de trabalhar. Pode usar qualquer um dos dois.

Pode listar estas secções com o seguinte comando (o “todos” é opcional mas sem ele não verá uma lista completa): bcdedit /enum all.

Saída típica:

C:\Windows\system32>bcdedit /enum all

Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume1
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {92b1a1b0-c023-11e3-b3f1-ec4d94108574}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30

Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {bootloadersettings}
recoverysequence {92b1a1b2-c023-11e3-b3f1-ec4d94108574}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {92b1a1b0-c023-11e3-b3f1-ec4d94108574}
nx OptIn

Da mesma forma, para facilitar quando identifica dispositivos, utilizará um formato como \Device\HarddiskVolume2, mas reconhecerá a partição pela sua letra (“C:”) se lhe for atribuído um.

A lista produzida por /enum all começa com uma secção opcional de gestor de arranque de firmware (se a sua placa-mãe tiver EFI). O seu nome abreviado é “{fwbootmgr}”. Controla a escolha inicial de arranque EFI (quer para utilizar o habitual gestor de arranque do Windows, quer para dispositivos específicos). Geralmente pode ignorar {fwbootmgr} se estiver presente.

Abaixo disso está o “Windows Boot Manager ” (identificador “{bootmgr}” ). Este é um com o qual irá trabalhar. Contém a configuração para o menu básico ou qualquer outra coisa que se obtenha no arranque (se o Gestor de Arranque do Windows estiver a funcionar e puder encontrar o BCD em primeiro lugar).

Abaixo de {bootmgr} há qualquer número de secções “Windows Boot Loader” e possivelmente outras secções, cada uma das quais controla uma acção ou opção de arranque.

Configurar boot duplo usando bcdedit (não precisa de mais nada)

Para boot duplo, diz bcdedit a /copy um bem conhecido já existente Windows Boot Loader entrada para o seu primeiro SO.

  • /copy para copiar uma entrada já existente
  • {current} é o identificador da entrada que deseja copiar. É um atalho para o item de arranque actual. Se este não for o que pretende para o duplo boot, utilize o identificador correcto para o que pretende. O texto de descrição para cada entrada ajudará a encontrar a que deseja.
  • /d "Description for copied entry será a descrição do novo item

fará uma cópia dessa entrada, dar-lhe-á a descrição declarada, e responderá com o novo identificador que deu a cópia:

bcdedit /copy {current} /d "Copy of my current Windows Boot Loader"

The entry was successfully copied to {5599a3fc-e4ee-11e7-a5f3-c86000d0b92a}.

Isso cria uma entrada independente com o nome correcto, agora é preciso dizer-lhe o que fazer. Como quase nada mudou nos sistemas operativos recentes, pode simplesmente configurar o dispositivo e osdevice para a sua partição Win7, e provavelmente irá funcionar. Se necessário, olhe para a saída de /enum quando arrancar normalmente em Win7, e copie as entradas que parece esperar. Mas normalmente é suficiente atribuir uma letra ao seu 2º SO temporariamente, como “Q”, e depois o comando é: bcdedit /set {NEW_IDENTIFIER} device partition=Q: ou algo assim, e o mesmo para osdevice. bcdedit irá ordenar as letras da unidade, ver abaixo. Pode apagar a letra de unidade temporária uma vez que tenha sido utilizada em bcd.

Em seguida adicione-a à lista de entradas em {bootmgr} usando bcdedit /displayorder {NEW_ID} /addlast, e - crucialmente - diga ao bcd para exibir um menu de arranque usando bcdedit /set {bootmgr} displaybootmenu Yes.

Feito.

Nota - é seguro usar letras “estranhas” ou “erradas” no BCD, e é seguro se a saída do /enum as contiver também.

Para ser claro, não precisa de se preocupar se o seu novo dispositivo for identificado como Q: (ou o que quer que seja) quando “deve ser C:”. bcdedit armazena a identificação do disco rígido, não a letra. É simplesmente aceitar e exibir Q: para ser útil. Se um dispositivo tiver uma letra, mostrará por defeito a letra em vez da ID do dispositivo, para sua facilidade. Pode ver isto removendo ou atribuindo a letra do 2º SO em DISKPART ou DISKMGMT.MSC e a saída de /enum reverterá imediatamente para um \Device em vez disso. É realmente guardado o ID correcto do disco rígido, e quando é utilizado para arrancar, o Windows encontrará esse dispositivo - a letra é para facilitar e nunca é realmente guardada.

3
3
3
2012-11-28 02:57:24 +0000

É necessário um comando BCDEdit /set para configurar o volume da bagageira. Depois adicionar a entrada ao menu do sistema operativo Windows Boot Manager, chamando o comando BCDEdit /displayorder.

bcdedit /set {ntldr} device boot

& Identificará também a partição do outro SO ou o seguinte comando

& > bcdedit /set {ntldr} device partition=C:

A seguinte linha torna a entrada inicializável, adicionando-a ao menu

bcdedit /displayorder {ntldr} /addlast

Pode verificar que a nova entrada irá aparecer no menu de arranque executando o comando bcdedit /enum ACTIVE e procurando a entrada do Windows Legacy OS Loader.

Nota : */create o comando é utilizado para adicionar a entrada não-Microsoft OS ao carregador de arranque. *

Para mais informações sobre isto pode ler este artigo fonte


& Em relação à sua pergunta sobre “ Diferença entre o carregador de arranque do Windows e o gestor de arranque

A partir de wikipedia

O processo de arranque do Windows NT inicia-se quando o computador encontra um carregador de arranque do Windows, uma parte do sistema operativo Windows responsável por encontrar o Microsoft Windows e iniciá-lo. Nos sistemas IA-32 ou x64, o carregador de arranque chama-se Windows Boot Manager (BOOTMGR). Antes do Windows Vista, porém, o gestor de arranque era NTLDR.

Ver também em technet .


Visual BCD Editor é uma versão GUI avançada do utilitário bcdedit do Windows.

& > É a primeira ferramenta GUI a implementar a edição completa da loja de dados de configuração de arranque (BCD) do Windows 7/Vista. Descarregar página para editor BCD visual.

Dar uma opção de reparação na ferramenta.

2
2
2
2013-09-29 04:16:20 +0000

Em resposta à pergunta específica do autor, tal como reiterada nos comentários (embora seja diferente da sua pergunta inicial sobre as sequências bcdedit.exe para realizar o mesmo):

Talvez algo quase tão simples como o msconfig, excepto que lhe permite navegar para outra instalação do Windows e adicioná-lo-á para si. EasyBCD é exactamente o que procura (gratuito para uso pessoal). É uma ferramenta de gestão visual de duplo boot para Windows, e adicionar uma nova entrada do Windows é com um ponto-e-clique, exactamente como o descreveu .

Há muitos recursos no EasyBCD online, por isso não vou repetir tudo aqui. Basicamente, o EasyBCD envolve a complexidade do bcdedit.exe e alarga-o com os seus próprios módulos de bootloader para lhe permitir configurar dual-boots com outras versões (mais recentes ou mais antigas) do Windows, bem como Linux, BSD, e muito mais.

Divulgação completa: sou o autor principal do EasyBCD.

-1
-1
-1
2017-11-17 00:12:31 +0000
bcdedit
bcdboot
bcdedit /create

Isto pode ser apontado para um ficheiro como o ficheiro .vhd mas criado como uma parte de disco de partição e inicializado e anexado, ou montado na mosca e reiniciado como um SO. O SO pode ser escondido dentro de outra partição. outra partição pode ser escondida dentro de outra partição e o SO dentro dela. quando se executa bcdedit para ser apontado para outro ficheiro .vhd, independentemente da sua localização. Carrega-se. O meu instrutor mostrou isto na aula mas falhou ou recusou-se a dar outras explicações ao bcdedit. Mas isto funciona para esconder e operar um SO totalmente funcional.

  1. bcdboot e:\windows
  2. bcdboot c:\windows