Hogyan futtassuk dd-vel mentett rendszerünk VMware-ben?

A fenti problémával futottam össze, amikor felmerült az igény bennem, hogy egy régi számítógép rég tönkrement hdd-jéről mentett rendszeremet VMware-ben szeretném futtatni. Qemu-ban ugyan egyszerű a megoldás, ugyanis alapból támogatja a raw formátumot, de a VMware előnyeit is jó lenne kihasználni.

Először a Google-t használva arra jutottam, hogy qemu-img-dzsel át kell konvertálni az image-et vmdk formátumúra. Ez ugyan működik, de mégis unszimpatikus, hogy konvertálni kell.

Ezután eszembe jutott, hogy egyszer kipróbáltam a Mac OS X Tiger-t Qemuban. Ez egy VMware virtuális gép, de a tiger-x86-slim.img fájlról rémlett, hogy az gyakorlatilag egy raw image. Jobb ötlet híján letöltöttem az egészet újra. A tiger-x86.vmdk fájlról ki is derült hamar, hogy az egy text fájl. Egész pontosan így néz ki:


# Disk DescriptorFile
version=1
CID=76805586
parentCID=ffffffff
createType="monolithicFlat"

# Extent description
RW 12581856 FLAT "tiger-x86-flat.img" 0

# The Disk Data Base 
#DDB

ddb.adapterType = "ide"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "16"
ddb.geometry.cylinders = "9825"
ddb.virtualHWVersion = "4"
ddb.toolsVersion = "0"

Ez így már jobban tetszett, hisz csak néhány adatra van szükségem, és máris tudok vmdk-t generálni bármilyen raw image-hez.
IRC-n zaklattam egy kicsit a többieket, hátha lehet hdd méret után sector, head és cylinder értéket számolni. Aztán eszembe jutott, hogy ezt megcsinálja helyettem a VMware is.

Létrehoztam VMware-ben egy új virtuális gépet, és a hdd mérete megadásakor kiszámoltam, hogy mekkora méretű a hdd-m GB-ban, ezzel a képlettel: raw_image_size_in_bytes/1024/1024/1024. Továbbá bekapcsolva hagytam az "Allocate all disk space now" opciót. Így létrehozott egy virtuális_gép_neve.vmdk és egy virtuális_gép_neve-slim.vmdk filet. Ez utóbbit lecseréltem a saját raw image-emmel. Így az mbr-t már be tudta tölteni a virtuális gép, de a többi partícióval már gondok adódtak.

Ekkor megnéztem, hogy a lefoglalt terület pontosan 512 byte-tal kisebb lett, mint a raw image-em. Létrehoztam újra a virtuális merevlemezt, de ezúttal a méretét így számoltam: (raw_image_size_in_bytes+512)/1024/1024/1024. Újra lecseréltem a létrehozott virtuális_gép_neve-slim.vmdk fájlt a saját raw image-emre, és így sikerült bebootolnom ezt a lementett rendszert.

Szóval a lényeg röviden:

  1. a virtuális lemez legyen olyan típusú, amilyen a fizikai hdd volt (FIXME: nálam IDE volt)
  2. a virtuális lemez mérete legyen 512 byte-al nagyobb, mint a raw image (figyelem, GB-ban megadandó, használd a "(raw_image_size_in_bytes+512)/1073741824" képletet) (FIXME: sata esetében nem tudom, hozzá kell-e adni 512 byte-ot.)
  3. cseréld le a létrejövő virtuális_gép_neve-slim.vmdk fájlt a saját raw image-edre
  4. bootold be a virtuális gépet, és örülj :)

Remélem segítettem!

Ui: nem tudom, hogy Google-ben megtalálható-e ez a leírás, könnyen elképzelhető, hogy igen. Minden esetre én nem találtam, ezért is hoztam létre ezt a blogbejegyzést.

Szerk: VirtualBox 1.4.0 óta képes kezelni vmdk fileokat is, azaz ez a szoftver is kezelheti a raw image-eket. Én a 2.0-s verzióban teszteltem, tökéletesen működik. Sajnos ahogy elnézem, létrehozni nem tud vmdk-t, szóval akinek nincs "célszoftverje", annak kézzel kell létrehozni a vmdk-t, vagy az www.easyvmx.com-on is elkészítheti. (Ez utóbbi a szerkesztés időpontjában nem működött.)

Hozzászólások

Milyen hátránya van a kernelgyorsított qemu-nak a vmware-rel szemben ebben az esetben?

Én úgy szoktam, hogy vmware-ben bebootolok egy live cd-t, és onnan dd-zem be simán a virtális diszkre. Úgyis be kéne bootolni a legtöbb esetben live cd-re (ha lehet akkor olyanra ami közel áll az adott disztribúcióhoz) mkinitrd, stb céllal vagy csak simán elrendezni ezt-azt és így egy lépésben megvan.

En igy csinaltam:
legyen a ddvel lementett disk meret X, ekkor a

RW szam FLAT imagehelye

sorban a szam helyere X/1024 felfele kerekitett erteket kell irni.
majd ilyeneket:


ddb.geometry.cylinders = "1"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Stop! Ez milyen tipusu lemez volt? Splitted vagy nem splitted? Az uj merevlemez krealo reszben pontosan miket kattintgattal be? Ez fontos.

Amennyire tudom, a nem splitted image-kba bele szokja a vmware agyazni a konfig file-t. Ezek szerint akkor ez megvaltozott?
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
Disk size (GB): méret
[x]Allocate all disk space now
[ ]Split disk into 2GB files

Rosszul tudod. Akkor kerül egybe a 2, ha nem foglalod le a lemezterületet. Gyanítom, hogy ez mindig is így volt.

Ha splitteled, akkor is külön kerül a config és külön a tényleges adat, függetlenül attól, hogy előre lefoglalod a területet, vagy nem.

Tehát: csak akkor kerül egybe a kettő, ha nem splitteled és nem foglalod le a területet előre.

Az 512 byte valószínű az MBR-nek kell. Így mindig hozzá kell adni ezt az értéket, függetlenül az alatta lévő hardver-technológiától.

--
- Name ONE thing that your Linux computer can do that my MAC can't!
- Right click.