Como posso escrever um arquivo .img do Windows (NTFS) em uma partição e adicioná-lo ao grub?

3

Estou tentando algumas coisas malucas aqui. Primeiro, eu tinha uma máquina VirtualBox com o Windows XP instalado, usando o formato .vdi. Em seguida, exportei a imagem para um OVA, extraí o .vmdk e o converti em um arquivo .img bruto. Então eu criei uma nova VM no KVM via virt-manager, carreguei essa imagem como um disco rígido e consegui executá-la.

Agora, estou tentando copiar essa imagem inteira para uma partição de disco, via dd , e inicializar a primeira partição NTFS dentro dessa imagem na inicialização, via grub . Até agora, eu já dd'ed a primeira partição dentro da imagem (a partição NTFS real) e foi reconhecido por gParted como NTFS e grub como uma instalação do Windows, mas não consigo inicializá-lo. Então eu tentei copiar a imagem inteira, incluindo a tabela de partição, setor de inicialização e outras coisas, para essa partição /dev/sda4 física. Agora a imagem está sendo inicializada via KVM, mas não consigo encontrar uma maneira de adicioná-la ao Grub. Eu estou tentando encontrar uma maneira de fazê-lo via montagem de loop, eu só não tenho idéia sobre como grub de configuração para montar / map / boot esta imagem e acessar a primeira partição (NTFS) dentro dele.

O que eu quero fazer:

- Turn my XP image into a valid physical installation to dual boot
- Keep the VM running from this disk partition

Dessa forma, se possível, usarei a VM no Ubuntu ou inicializarei no grub.

Para esclarecimento, os comandos que usei:

$ sudo su

# mounts the entire image
$ losetup /dev/loop0 /path/to/WindowsXP.img
$ fdisk -l /dev/loop0

> Device        Boot    Start   End         Blocks      Id  System
> /dev/loop0p1  *       63      31439204    15719571    7   HPFS/NTFS/exFAT

# mounts the first NTFS partition inside image (offset 63*512)
$ losetup /dev/loop1 -o 32256 /dev/loop0

Neste ponto, tenho a partição NTFS em /dev/loop1 e o disco completo (com MBR) em /dev/loop0 . Então:

# copied the entire image to /dev/sda4. This is not recognized by GRUB, 
# therefore it must be loopmounted before booted via grub config somehow
$ dd if=/dev/loop0 of=/dev/sda4 bs=10m

# copied the NTFS virtual partition to physical one
# GRUB should recognize and boot it, since is a valid XP install, however it misses the partition table,
# so the virtual machine won't be able to boot it.
$ dd if /dev/loop1 of=/dev/sda4 bs=10m

Como alternativa, pensei em uma segunda imagem de disco anexada à VM, apenas com o GRUB e informações mínimas para inicializar essa partição. Dessa forma, eu poderia manter a partição NTFS em /dev/sda4 para o grub como uma inicialização dupla e inicializar a partir de uma segunda imagem minúscula no KVM.

Idéias?

    
por Darlan Alves 20.09.2013 / 08:36

1 resposta

0

Disclaimer: isso é mais uma sugestão, não uma resposta bem informada.

Como você parece conseguir copiar a partição do Windows para uma partição física legítima ( /dev/sda4 ), por que você não inicializa apenas /dev/sda em uma máquina virtual? Você pode então inicializar na partição do Windows escolhendo a opção Windows no GRUB. Parece que esse tipo de configuração foi feito antes: link

    
por 22.09.2013 / 01:53