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

¿Cómo utilizar BCDEdit para instalaciones de Windows de arranque dual?

¿Cuáles son los comandos bcdedit necesarios para configurar el arranque dual entre diferentes instalaciones de Windows?5

Antecedentes

Recientemente he instalado Windows 8 en un disco duro independiente1. Ahora que Windows 8 está instalado, quiero volver a tener un arranque dual con Windows 7.

Tengo mis dos2 discos duros:

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

Así que usted puede ver que tengo mis dos discos, con las particiones que contienen Windows:

  • Windows 7 : \PhysicalDisk0 (partición 03)
  • Windows 8 : \PhysicalDisk2 (partición 1)

Lo que estoy tratando de averiguar es cómo utilizar bcdedit para instruir a la cosa que arranca Windows que hay otra instalación de Windows por ahí.

Ejecutando bcdedit ahora, muestra la configuración actual:

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

No encuentro ninguna documentación sobre la diferencia entre Windows Boot Manager y Windows Boot Loader.

Documentación

Hay algo de documentación en Bcdedit:

Pero no explican cómo editar los datos de configuración del arranque binario.

Si tuviera que adivinar, pensaría que un Administrador de arranque de Windows instruye a la BIOS sobre qué programa debe ejecutar. Ese programa daría al usuario un conjunto de opciones de arranque. Eso deja a Windows Boot Loader ser una opción de arranque particular, que representa una instalación particular de Windows.

Si ese es el caso, necesitaría crear una nueva entrada Windows Boot Loader.

Esto significa que podría querer usar el parámetro /create:

/create

Crea una nueva entrada de arranque:

bcdedit [/ store filename] / create [id] / d description [/ application apptype | / inherit [apptype] | / inherit DEVICE | / device ]

Así que asumo una sintaxis de:

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

Donde application puede ser uno de los siguientes tipos:

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

Desafortunadamente, la única documentación sobre osloader es “El cargador de arranque de Windows”. No veo cómo eso puede diferenciar entre Windows 8 en un disco duro, y Windows 7 en otro.

El otro parámetro posible cuando /create un gestor de arranque es

Desgraciadamente la documentación está perdida para /device:

/device

Opcional. Si id no se establece como un identificador conocido, la opción que se utiliza para especificar la nueva entrada de arranque como una entrada adicional de opciones de dispositivo.

Como no he puesto id a un identificador conocido, debo poner /device a “la opción que se usa para especificar la nueva entrada de arranque como una entrada de opciones de dispositivo adicional”. Conozco todas esas palabras; están en inglés. Pero no tengo ni idea de lo que está diciendo; esas palabras en ese orden parecen no tener sentido.

Así que estoy algo desconcertado. No quiero ser como Dan Stolts de Microsoft, que destruyó sus discos duros tratando de usar BCDEdit :

No encontré ningún contenido que fuera particularmente útil cuando manoseé mi máquina jugando con BCDEdit. Este post hubiera estado bien si hubiera habido mucho más detalle especialmente en el comando /set OSDevice, etc. Así que una vez que conseguí arreglar mi máquina, documenté la solución y la información está aquí… .

Quiero decir, si un tipo de Microsoft no puede ni siquiera averiguar cómo usar BCDEdit para editar su BCD, entonces ¿qué oportunidad tengo yo?

Lectura adicional

Notas a pie de página

  • 1 Como el instalador de Windows 8 habría dañado mi instalación de Windows 7, decidí desconectar mi disco duro “principal” durante la instalación. Lo cual es una larga explicación de por qué el instalador de Windows 8 no detectó la instalación existente de Windows 7. Normalmente, el instalador habría creado automáticamente las entradas necesarias para el arranque dual. No es que la razón por la que hago la pregunta sea importante.
  • 2 Realmente hay tres discos, pero el tercero es sólo almacenamiento masivo. La existencia de un tercer disco duro es irrelevante para la pregunta. Sólo lo menciono por si alguien quiere saber por qué en la captura de pantalla hay 3 discos duros cuando yo sólo menciono dos.
  • 3 Empecé arbitrariamente a numerar las particiones en “cero”; no para dar a entender que las particiones se numeran empezando por cero. Sólo menciono las particiones porque no veo cómo un cargador de arranque podría hacer su trabajo sin saber en qué partición, y en qué carpeta, se encuentra una instalación de Windows.
  • 4 Pregunto por BCDEdit. He probado Visual BCD Editor. Parece ser un editor BCD visual. Es decir que es una GUI, pero sigue utilizando la misma terminología que BCDEdit, y requiere los mismos conocimientos que BCD no documenta.
  • 5 Para simplificar vamos a suponer que todas las instalaciones de Windows entre las que quiero hacer un arranque dual son Windows Vista o posteriores, lo que hace que todas sean compatibles con el BCDEdit y el cargador de arranque binario. La alternativa requeriría ahondar en los entresijos del viejo ntloader. Tampoco estoy preguntando sobre el arranque dual a Linux; o cómo arrancar a una imagen de disco duro virtual (vhd). Sólo versiones modernas de Windows en discos duros existentes en la misma máquina.

Respuestas (7)

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

Esto no es una respuesta directa a la pregunta antes de “Antecedentes”, sino que apunta a una solución alternativa para crear entradas de cargador para arrancar dos (y más) sistemas operativos Windows Vista y posteriores. Por favor, vea también mi segunda respuesta más abajo sobre la crítica a la terminología utilizada en Visual BCD.

No hay guías, dispositivos, objetos, elementos y bla, bla, bla.

Mis antecedentes (salta si no te interesa y ve a la solución de abajo):

He implementado el Editor Visual BCD.

Durante el proceso de implementación tuve que leer todas las fuentes disponibles sobre bcdedit y la interfaz WMI BCD Provider (interfaz de programación, se puede utilizar con C++, C#). La documentación de Microsoft es realmente pobre.

En el BCD hay objetos (cargadores, configuraciones, elementos del dispositivo). No hay documentación sobre las conexiones entre los objetos a pesar de que hay dependencias.

Hay más de 140 (!) elementos (propiedades) de objetos BCD en Windows 7. No sé el significado de algunos elementos - simplemente no hay documentación.

En Windows 8 hay nuevos elementos - supongo que el número total ahora se acerca a 180 (!!). No hay documentación.

Por otro lado hay dos utilidades muy potentes para manipular el BCD: bcdboot y reagentc. ¡

bcdboot - crea/ajusta el cargador por defecto también el BCD y el entorno de arranque en su conjunto !

reagentc - instala/desinstala el entorno de recuperación (winre.wim)

Ambas herramientas tampoco están muy bien documentadas.

Solución alternativa:

Prácticamente no se necesita bcdedit, ya que con sólo bcdboot se pueden crear cargadores para Windows Vista y sistemas operativos Windows posteriores - se crea el cargador para el primer sistema operativo, luego para el último y voilá se ha creado el entorno de arranque para un sistema de arranque dual/múltiple:

Suponiendo que está en Windows 8:

1. bcdboot f:\windows (esto se asigna a Windows 7 como en la imagen en cuestión)

2. bcdboot c:\windows (esto se asigna a Windows 8)

¡Hecho!

Regla base de Microsoft para el proceso de arranque: El entorno de arranque (y BCD) debe estar siempre en [primer disco + partición activa]. (en la imagen - Disco 2 => ¡Primer disco en la secuencia de arranque de la BIOS!)

Por último, pero no menos importante, está la utilidad bootsect para escribir MBR y PBR (registro de arranque maestro y de partición) - ahora estándar en Windows 8 (antes sólo estaba disponible en WinRE).

Así que usando sólo bootsect y bcdboot se pueden crear/arreglar todas las entidades de arranque para un sistema de arranque dual.

Creo que el proceso de arranque para Vista y posteriores está muy bien descrito en muchos sitios de internet incluso en Microsoft.com.

Nota:

Uno de los mejores sitios sobre el BCD de Windows es el sitio de Geoff Chappell - hay información más detallada allí que en Microsoft.com. Los usuarios interesados podrían encontrar allí información bastante útil y algunas notas críticas sobre la documentación de bcdedit.

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

Cuando formateé mi unidad C: para reinstalar Windows, el registro de arranque maestro se borró y el instalador de Windows 7 no pudo restaurarlo. Podría utilizar una herramienta GUI bcdedit como la herramienta Visual BCD Edit, pero ¿por qué debería tener que instalar algo cuando debería haber un simple comando en bcdedit puede hacer el trabajo? Después de mucho buscar a través de los archivos de ayuda en línea me di por vencido con bcdedit y encontré la respuesta aquí enterrada en digresiones. Para crear una entrada de arranque para la segunda partición hay que usar bcdboot.

Suponiendo que estás en C:\Windows:

  1. bcdboot e:\windows
  2. bcdboot c:\windows
  3. bcdedit /set {current} description "Windows 7 (Partition 1)"
  4. bcdedit /default {current}
  5. bcdedit /displayorder {default} /addfirst
  6. bcdedit /dispalyorder {current} /addfirst
  7. bcdedit /set {current} description "Windows 7 (Partition 2)"
  8. bcdedit /export D:\Saved_BCD_Settings\SavedBCD
  9. bcdedit /import D:\Saved_BCD_Settings\SavedBCD Cuando reinicie se le presentará el menú de arranque de Windows con dos entradas para Windows 7. Si seleccionas la entrada que arranca en C:\Windows puedes renombrar la entrada para esta partición con:
  10. 0x6& Esto hace que el sistema operativo arrancado al inicio sea la entrada por defecto en el menú de arranque:
  11. 0x6& Esto hace que el SO arrancado al inicio sea la primera entrada en el menú de arranque:
  12. 0x6& O puede hacer que el SO al inicio sea el primer elemento del menú de arranque:
  13. 0x6& Ahora reinicie y seleccione el segundo elemento en el menú de arranque que debe ser etiquetado como “Windows 7”. Una vez que haya arrancado en E:\Windows, cambie el nombre del sistema operativo que arranca:
  14. 0x6& Compruebe que el menú de arranque funciona bien y guarde los datos bcd en una partición que no tenga un SO instalado:
  15. 0x6& Si luego te equivocas puedes restaurar el menú de arranque bcd con:
  16. 0x6&
5
5
5
2012-12-02 01:36:13 +0000

Algunas notas sobre la crítica en la pregunta original sobre el uso de la misma terminología en Visual BCD que Microsoft utiliza para bcdedit.

El concepto de BCD es desarrollado por Microsoft. Viene con su propia terminología. No creo que pueda cambiarlo. Sólo puedo ampliarlo.

Microsoft ha dado dos formas de acceder/editar BCD:

  1. usando bcdedit.exe - interfaz de línea de comandos
  2. Interfaz del proveedor WMI de BCD - interfaz programática

Ambas interfaces hablan de los objetos y elementos de BCD. Este es un concepto general que se utiliza tanto en la programación/informática como en otros ámbitos humanos. Podríamos ir incluso a la filosofía que utiliza la terminología de objetos, propiedades y relaciones para describir el mundo y el universo.

El acceso al proveedor WMI de BCD es más flexible, ya que ofrece al programador la posibilidad de acceder a todos los objetos y elementos de BCD y operar con ellos libremente.

Visual BCD hace un uso completo de la interfaz del proveedor WMI de BCD e implementa el acceso de la misma manera que estamos acostumbrados a acceder al registro de Windows utilizando regedit.exe. Además, la herramienta automatiza dos tareas principales - creación de cargadores y reparación de arranque dual. Ninguna otra herramienta ofrece tal funcionalidad automática con un solo clic. Yo diría que esto es una nueva terminología y un nuevo nivel de abstracción. Yo no cambiaría la base que ha creado Microsoft, sólo puedo construir sobre ella.

¡Los usuarios novatos sólo tienen que pulsar un botón y se realiza una operación compleja! No es necesario tener conocimientos previos. Ni siquiera tiene que saber cuántas versiones de Windows tiene instaladas - la herramienta trata de encontrarlas todas y luego crea cargadores para ellas si los cargadores correspondientes no están ya presentes en BCD - la terminología utilizada - “Crear cargadores de Windows que faltan ” - creo que todo el mundo que habla inglés podría entender/hacer clic/confirmar tal operación o ¿me equivoco?

La complejidad de los objetos y elementos en BCD es natural, ya que el concepto cubre el arranque de los sistemas operativos Windows más recientes y más antiguos, así como de los sistemas operativos extranjeros como Linux, Unix, etc. Además, es un concepto general para el arranque MBR y el arranque EFI en una variedad de dispositivos.

La parte más compleja de BCD es el concepto de dispositivo. Tienes un dispositivo de partición, un dispositivo de ramdisk, un dispositivo de archivo, un dispositivo de localización - tienes que pasar algún tiempo entendiéndolo y no creo que esto sea para el usuario normal de Windows. Los foros están llenos de preguntas sobre particiones de disco, que es un tema mucho menos complejo. Muchos usuarios de Windows ni siquiera saben la diferencia entre partición primaria y lógica, por ejemplo. Tienes que saber sobre particiones si quieres hacer un arranque dual/múltiple. Tienes que comprar un terreno si quieres construir una segunda casa.

El concepto de BCD es el mismo desde Vista - sólo se definen nuevos elementos en Windows 7/8.

Creo que la estructura del registro para el BCD se elige porque Windows ya implementa esta interfaz y es una interfaz transaccional fiable que ha demostrado funcionar a lo largo de los años. Si el concepto de registro de Windows en general es un concepto bueno o malo es otro tema.

Depende del programador/desarrollador crear una interfaz más amigable. Empecé dando la misma interfaz - un equivalente GUI de bcdedit - más tarde la interfaz puede ser abstraída en un nivel más alto basado en los patrones de uso. Una vista estructurada de BCD ya está implementada. Esta es la capa de abstracción base.

El siguiente nivel de abstracción sería concentrarse en las relaciones entre objetos ya que este tema no está cubierto por Microsoft. No es una tarea fácil. La abstracción conlleva una nueva terminología.

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

Aunque es antiguo, quiero añadir algo a las respuestas, porque varias de las respuestas anteriores contienen información incorrecta. Probablemente funcionen, pero ciertamente no se necesita un programa externo, ni siquiera bcdboot para hacerlo. Como referencia, la información correcta es la siguiente

Antecedentes rápidos de BCD si es nuevo en él

BCD es la configuración de arranque de Windows. Contiene numerosas secciones, cada una identificada por un nombre (llamado “descripción”) y un identificador que se parece un poco a esto: “{0743bb44-fda6-11e3-90c8-e3ee27f3aec6}”.

Hay varios “identificadores conocidos”, y bcdedit los usará en su lugar cuando pueda, (a menos que use la opción /v (verbose) con /enum). Se ven así: “{bootmgr}”, “{memdiag}”. Estos son sólo nombres abreviados para los identificadores completos, pero son más fáciles de trabajar. Puedes usar cualquiera de los dos.

Puede listar estas secciones con el siguiente comando (el “all” es opcional pero sin él no verá una lista completa): bcdedit /enum all.

Salida 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

Del mismo modo, para facilitar la identificación de los dispositivos, utilizará un formato como \Device\HarddiskVolume2, pero reconocerá la partición por su letra (“C:”) si se le asigna una.

La lista producida por /enum all comienza con una sección opcional del gestor de arranque del firmware (si su placa base tiene EFI). Su nombre abreviado es “{fwbootmgr}”. Controla la elección del arranque EFI inicial (si se utiliza el gestor de arranque habitual de Windows, o dispositivos específicos). Generalmente puede ignorar {fwbootmgr} si está presente.

Debajo está el “Administrador de arranque de Windows ” (identificador “{bootmgr}” ). Este es con el que trabajarás. Contiene la configuración para el menú básico o cualquier otra cosa que obtenga en el arranque (si el Administrador de Arranque de Windows está funcionando y puede encontrar el BCD en primer lugar).

Debajo de {bootmgr} hay cualquier número de secciones “Windows Boot Loader” y posiblemente otras secciones, cada una de las cuales controla una acción u opción de arranque.

Configurar el arranque dual usando bcdedit (no necesita nada más)

Para el arranque dual, le dice a bcdedit que /copy una entrada conocida del Cargador de arranque de Windows para su primer sistema operativo.

  • /copy para copiar una entrada existente
  • {current} es el identificador de la entrada que quiere copiar. Es un atajo para el elemento de arranque actual. Si ese no es el que quieres para el arranque dual, usa el identificador correcto para el que sí quieres. El texto de descripción de cada entrada te ayudará a encontrar la que quieres.
  • /d "Description for copied entry será la descripción del nuevo elemento

Hará una copia de esa entrada, le dará la descripción indicada y responderá con el nuevo identificador que le ha dado a la copia:

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

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

Eso crea una entrada independiente con el nombre correcto, ahora hay que decirle qué hacer. Como casi nada ha cambiado en los sistemas operativos recientes, puedes simplemente establecer el dispositivo y osdevice a tu partición de Win7, y probablemente funcionará. Si es necesario, mira la salida de /enum cuando arrancas en Win7 normalmente, y copia las entradas que parece esperar. Pero normalmente es suficiente con asignar una letra a tu 2º SO temporalmente, como “Q”, y entonces el comando es: bcdedit /set {NEW_IDENTIFIER} device partition=Q: o algo así, y lo mismo para osdevice. bcdedit ordenará las letras de unidad, ver más abajo. Puedes eliminar la letra de unidad temporal una vez que se haya utilizado en bcd.

A continuación, añada la letra a la lista de entradas en {bootmgr} usando bcdedit /displayorder {NEW_ID} /addlast, y - de manera crucial - dígale a bcd que muestre un menú de arranque usando bcdedit /set {bootmgr} displaybootmenu Yes.

Hecho.

Nota - es seguro usar letras de unidad “impares” o “erróneas” en BCD, y es seguro si la salida de /enum también las contiene.

Para que quede claro, no tienes que preocuparte de que tu nuevo dispositivo sea identificado como Q: (o lo que sea) cuando “debería ser C:”. bcdedit almacena el ID del disco duro, no la letra. Sólo acepta y muestra Q: para ser útil. Si un dispositivo tiene una letra, mostrará la letra por defecto en lugar del ID del dispositivo, para su facilidad. Puede ver esto eliminando o asignando la letra del 2º SO en DISKPART o DISKMGMT.MSCy la salida de /enum volverá inmediatamente a un \Device en su lugar. En realidad se ha guardado el ID correcto del disco duro, y cuando se utiliza para arrancar, Windows encontrará ese dispositivo - la letra es para facilitar y nunca se guarda realmente.

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

Necesitas un comando BCDEdit /set para configurar el volumen de arranque. A continuación, añada la entrada al menú del sistema operativo Windows Boot Manager llamando al comando BCDEdit /displayorder.

bcdedit /set {ntldr} device boot

Identificará la partición del otro SO o el siguiente comando también

bcdedit /set {ntldr} device partition=C:

La siguiente línea hace que la entrada sea de arranque añadiéndola al menú

bcdedit /displayorder {ntldr} /addlast

Puede verificar que la nueva entrada aparecerá en el menú de arranque ejecutando el comando bcdedit /enum ACTIVE y buscando la entrada Windows Legacy OS Loader.

Nota : *El comando /create se utiliza para añadir un sistema operativo que no sea de Microsoft a la entrada del cargador de arranque. *

Para más información sobre esto puede leer este artículo fuente

  • *

En cuanto a su pregunta sobre “ Diferencia entre el gestor de arranque de Windows y el gestor de arranque

De la wikipedia

El proceso de arranque de Windows NT se inicia cuando el ordenador encuentra un gestor de arranque de Windows, una parte del sistema operativo Windows responsable de encontrar Microsoft Windows y arrancarlo. En los sistemas IA-32 o x64, el gestor de arranque se llama Windows Boot Manager (BOOTMGR). Sin embargo, antes de Windows Vista, el gestor de arranque era NTLDR.

Ver también en technet .

Es la primera herramienta GUI que implementa la edición completa del almacén de datos de configuración de arranque (BCD) de Windows 7/Vista. Página de descarga para el editor visual de BCD.

Pruebe la opción de reparación de la herramienta.

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

En respuesta a la pregunta concreta del autor reiterada en los comentarios (aunque difiere de su pregunta inicial en cuanto a las secuencias bcdedit.exe para lograr lo mismo):

Tal vez casi algo tan simple como el msconfig, excepto que te permite buscar otra instalación de Windows y la agrega por ti. EasyBCD es exactamente lo que estás buscando (gratis para uso personal). Es una herramienta visual de gestión de arranque dual para Windows, y añadir una nueva entrada de Windows es con un apuntar y hacer clic, exactamente como lo has descrito .

Hay un montón de recursos sobre EasyBCD en línea, así que no voy a repetir todo aquí. Básicamente EasyBCD envuelve la complejidad de bcdedit.exe y la extiende con sus propios módulos de cargador de arranque para permitirte configurar arranques duales con otras versiones (más nuevas o más antiguas) de Windows, así como Linux, BSD, y más.

Información completa: soy el autor principal de EasyBCD.

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

Esto puede apuntar a un archivo como el archivo .vhd pero creado como una partición diskpart e inicializado y adjuntado, o montado sobre la marcha y reiniciado como un SO. El SO puede estar oculto dentro de otra partición. otra partición puede estar oculta dentro de otra partición y el SO dentro de ella. cuando se ejecuta bcdedit para que apunte a otro archivo .vhd no importa donde esté ubicado. Se carga. Mi instructor mostró esto en clase pero falló o se negó a dar otras explicaciones a bcdedit. Pero esto funciona para ocultar y operar un SO completamente funcional.

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