Como o bootmgr do Windows Vista / 7/2008 funciona atrás da cena?

4

Sempre foi possível transferir uma instalação do Windows (NT / 2000 / XP / 2003) para uma nova mídia de inicialização por:

  • Recriando a tabela de partições e o MBR
  • Copiando as partições usando o ntfsclone
  • Parte complicada: a geometria do disco tinha que permanecer a mesma e a partição onde o ntldr residia tinha que começar no mesmo setor do LBA de antes

Isso ainda é possível com o Windows (Vista / 7/2008)? Esse procedimento funcionaria?

  • Copiar tabela de partições, com assinatura de disco (!) e MBR
  • Possivelmente redimensionar partições para caber no disco rígido
  • Ntfsclone "Partição reservada do sistema" e "Boot Parition".
  • Um ou ambos ainda precisam ser iniciados no mesmo setor no disco rígido antigo e no novo?

Você pode explicar como o bootmgr e o bcd realmente funcionam sob o capô, ao contrário de, por exemplo, grub ou ntldr? Existe um primeiro e segundo estágio? Mantém listas de bloqueio em algum lugar?

Atualização: Meu problema original acabou sendo relacionado a hardware. Pergunta reescrita para abordar a questão mais ampla.

    
por edgar.holleis 02.05.2014 / 02:24

1 resposta

3

O bootmgr não tem conhecimento de "letras de unidade", isso é algo que o Windows faz no final do processo de inicialização (e está configurado no registro, absolutamente nada a ver com a configuração do disco físico).

O uso do Linux para clonar um sistema não é suportado pela Microsoft. Em suma, a resposta oficial é Não faça isso . Você deve usar o Windows PE. O DISM pode criar e aplicar arquivos de imagem WIM, que é o formato preferido da Microsoft (o mesmo usado pela Instalação do Windows).

A clonagem de uma máquina geralmente segue:

  1. Configurar máquina de referência. Executar sysprep .
  2. Inicializar o WinPE. Use dism para capturar a unidade. Algo parecido com este arquivo em lotes:

    @ECHO OFF
    IF %1 == "" GOTO DIE:
    CHKDSK /X C:
    CHKDSK /X D:
    IF NOT ERRORLEVEL 0 GOTO DIE:
    DISM /Capture-Image /ImageFile:Z:\Path\To\Images\%1.wim /Name:Boot   /CaptureDir:C:\ /Compress:fast
    DISM /Append-Image  /ImageFile:Z:\Path\To\Images\%1.wim /Name:Windows /CaptureDir:D:\
    :DIE
    

    Isso pode precisar ser modificado se você tiver um layout de partição não padrão.

  3. Inicialize o computador de destino no WinPE. Use diskpart e dism para aplicar a imagem:

    Script padrão diskpart para configurar partições:

    SEL DISK 0
    CLEAN
    CREATE PART PRI SIZE=350
    ACT
    FORMAT QUICK
    ASSIGN LETTER=M
    CREATE PART PRI
    FORMAT QUICK
    ASSIGN LETTER=O
    EXIT
    

    Arquivo em lote padrão dism para gravar imagem:

    @ECHO OFF
    IF %1 == "" GOTO DIE:
    DISKPART /s Diskpart-Standard.script
    IF NOT ERRORLEVEL 0 GOTO DIE:
    DISM /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:M:\
    DISM /Apply-Image /ImageFile:%1 /Index:2 /ApplyDir:O:\
    IF NOT ERRORLEVEL 0 GOTO DIE:
    BCDEDIT -STORE M:\BOOT\BCD -set {bootmgr} device partition=M:
    BCDEDIT -STORE M:\BOOT\BCD -set {memdiag} device partition=M:
    BCDEDIT -STORE M:\BOOT\BCD -set {default} device partition=O:
    BCDEDIT -STORE M:\BOOT\BCD -set {default} osdevice partition=O:
    :DIE
    ECHO Script ended...
    

Seu processo pode funcionar, mas você provavelmente está perdendo as quatro últimas bcdedit linhas do script.

Observe que isso não configura o WinRE, mas você não deve precisar dele se tiver o WinPE, de qualquer maneira.

    
por 02.05.2014 / 15:22