User Tools

Site Tools


wiki:os:linux:windowsgpttombr

Migrace Windows VM (GPT - MBR)

Migrace VM (Windows2012) z Hyper-V do oVirtu

1) Poznamenat si nastavení IP parametrů - VM po přesunu uvidí “jiné” síťovky (virtio), kterým je potřeba ručně znovu nastavit IP parametry. Proto je dobré si je předem poznamenat.

2) Zkopírujeme celý disk Clonezillou na cílový disk (lze metodou on the fly - podmínkou je společná síť)

3) gdisk konverze GPT do MBR - na cílovém disku samozřejmě

gdisk /dev/vda
	r
	g
	p - pro kontrolu
	w
	q, Yes

4) fdisk - spojit prvni tři partition do jedné, čtvrtou přečíslovat na druhou, oflagovat první partition jako bootable.

Stav před změnou:

fdisk /dev/vda
	p
 
Command (m for help): p
Disk /dev/vda: 127 GiB, 136365211648 bytes, 266338304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
 
Device     Boot   Start       End   Sectors   Size Id Type
/dev/vda1          2048    616447    614400   300M 27 Hidden NTFS WinRE
/dev/vda2        616448    819199    202752    99M ef EFI (FAT-12/16/32)
/dev/vda3        819200   1081343    262144   128M  c W95 FAT32 (LBA)
/dev/vda4       1081344 266336255 265254912 126.5G  7 HPFS/NTFS/exFAT
# Smažeme první tři parttion.
d 1     
d 2
d 3
 
# Vytvoříme novou první parttion od začátku disku 2048 až po začátek původně čtvrté partition.
n p 1 <enter (2048)> <konec 3.part. (1081343)>
 
Na nové partition, která je teď první, vytvoříme filesysytém NTFS.
t 1 7
p
 
Command (m for help): p
Disk /dev/vda: 127 GiB, 136365211648 bytes, 266338304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
 
Device     Boot   Start       End   Sectors   Size Id Type
/dev/vda1          2048   1081343   1079296   527M  7 HPFS/NTFS/exFAT
/dev/vda4       1081344 266336255 265254912 126.5G  7 HPFS/NTFS/exFAT
# Vda4 bychom chtěli jako vda2 - pro pořádek.
# Smažeme tedy čtvrtou partition. (Ke ztrátě dat nedojde, vytvoříme-li ji znovu se stejným začátkem a koncem.)
d 4
 
# Vytvoříme novou partition 2.
n p 2 <enter (1081344)> <konec puvodni 4. part (266336255)>
 
# Vytvoříme na ní filesysytém NTFS.
t 2 7
 
# Oflagujeme ji jako boot.
a 1
p
 
Command (m for help): p
Disk /dev/vda: 127 GiB, 136365211648 bytes, 266338304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
 
Device     Boot   Start       End   Sectors   Size Id Type
/dev/vda1  *       2048   1081343   1079296   527M  7 HPFS/NTFS/exFAT
/dev/vda2       1081344 266336255 265254912 126.5G  7 HPFS/NTFS/exFAT
 
# Zapíšeme změny na disk
w

5) dd

  • připravit si referenční čistou instalaci windows v oVirtu.
  • připojit referenční disk se vzorovou čistou instalací widlí
  • zkopírovat (dd) obsah první partition z referenční čisté instalace windows (připravený image by se hodil)
  • bacha, aby cílová nebyla menší než zdrojová (opak nevadí)
fdisk -l
Disk /dev/vda: 127 GiB, 136365211648 bytes, 266338304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
 
Device     Boot   Start       End   Sectors   Size Id Type
/dev/vda1  *       2048   1081343   1079296   527M  7 HPFS/NTFS/exFAT
/dev/vda2       1081344 266336255 265254912 126.5G  7 HPFS/NTFS/exFAT
 
 
Disk /dev/loop0: 138.8 MiB, 145498112 bytes, 284176 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/vdb: 130 GiB, 139586437120 bytes, 272629760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfe809e9f
 
Device     Boot  Start       End   Sectors   Size Id Type
/dev/vdb1  *      2048    718847    716800   350M  7 HPFS/NTFS/exFAT
/dev/vdb2       718848 272627711 271908864 129.7G  7 HPFS/NTFS/exFAT
dd if=/dev/vdb1 of=/dev/vda1 bs=512

6) opravit MBR za pomoci dd a hexdumpu

  • /dev/vdb = vzor (tento byl připojen za běhu)
  • /dev/vda = cil (s timto VM nastartoval)
  • Z blokového zařízení nelze pomocí dd číst po jednotlivých bytech (min. 512). Chceme-li tedy sloučit prvních 446 byte ze vzorového disku se zbytkem (partition table) z cílového disku, musíme použít jako prostředníka soubory - z nich již lze číst a a zapisovat do nich po jednom byte. Viz. postup níže…

Zkopírujeme prvních 512 byte do souboru ./vzor.

(pozn. od adresy 000001be zacina partition table)

dd if=/dev/vdb bs=512 count=1 > ./vzor
hexdump -C ./vzor

Z cílového disku si také zkopírujeme prvních 512 byte do souboru ./cil

dd if=/dev/vda bs=512 count=1 > ./cil
hexdump -C ./cil

Nyní zkopírujeme jen 446 prvních byte ze souboru ./vzor do souboru ./cil (conv=notrunc zajistí aby zbytek souboru ./cil zůstal nezměněn)

dd if=./vzor bs=1 count=446 conv=notrunc of=./cil
hexdump -C ./cil

Zkopírujeme obsah souboru ./cil na cílový disk.

dd if=./cil of=/dev/vda bs=512 count=1

Výpis prvních 512 byte cílového disku pro kontrolu.

dd if=/dev/vda bs=512 count=1 | hexdump -C
 
sync

Vypnout VM.

7) Oživení VM v oVirtu

  • Připojit systémový disk jako IDE k VM
  • Nastartovat VM, proběhnou nějaké opravy, ale systém by měl nakonec naskočit
  • Připojit dočasně druhý jakýkoliv (fake) disk jako virtio, klidně zaživa
  • Otevřít správce zařízení, instalace všech potřebných virtio driverů (síť, disk, atp.)
  • Vypnout VM
  • Odpojit fake disk
  • Změnit primární disk na virtio
  • Nastartovat VM
  • Nastavit síť dle poznámek - možná nepůjdou nové síťovky pojmenovat stejně jako ty původní. Je to tím, že ty původní tam stále jsou, ale nejsou vidět. Ve správci zařízení stačí dát něco jako “Zobrazit skrytá zařízení” a staré síťovky pak odstranit.
  • Zkontrolovat eventlog
wiki/os/linux/windowsgpttombr.txt · Last modified: 2018/01/22 09:58 by root