Mivel magam sem értem, miért használtam eddig VirtualBox-ot qemu-kvm helyett, úgy döntöttem, megy minden qemu-kvm alá. Lenne egy XP guest is, leáll 0x7B-vel, annyit kiderítettem, hogy azért, mert kell neki a pciide.sys. Találtam is leírást. Logikus, amit beszél, de elakadtam a Windows registry offline szerkesztésénél.
Miért kellene nekem a CurrentControlSet-et ControlSet001-re átírni? Vagy mi van? A leírásban a sed környékén, épp azt nem fejti ki, mennyit szerezzek meg a Windows registry-ből. Így sem indul a nyomorult, nem még akkor, ha offline szétbarmolom a registry-jét. Induljunk abból ki, hogy távol áll tőlem a Windows lelki világa, Linuxszal békében vagyok.
A kérdésem az, hogy mi a fenét csináljak a registry-vel offline, hogy boot-oljon ez az XP qemu alatt.
Volt ötletem a megoldásra, de nem kegyesek az égiek ma hozzám:
virt-win-reg --merge -c qemu:///system WinXP MergeIDE.reg
reg_import: parse error: at line 4 near
at /usr/bin/virt-win-reg line 360.C1-08002BE10318}"
Megoldás:
Úgy néz ki, mind a virt-win-reg, mind pedig a hivexregedit bugos, mindenesetre nem sikerült nekik a registry módosítása, mardt hát a manuális megoldás hivexsh-val. Először kimásoltam a hostra a registry-t a guest image-ből:
virt-copy-out -c qemu:///system -d WinXP /WINDOWS/system32/config/system .
Csináltam egy lokális biztonsági másolatot:
cp system system.orig
Ezt követően nekiláttam a manuális editálásnak:
hivexsh -w system
A -w paraméter feltétlenül szükséges, mert a commit parancs csak akkor ír vissza a file-ba! Manuálisan az egyes vendor és device id-khoz kézzel megadni, melyik driver való, valamint az egyes driver-ek hol találhatók, meglehetősen fáradságos művelet. Nyilván lehet scriptelni, de az sem triviális. Az értékeket, hogy mit kell editálni, egy registry file-ból néztem. Jelenleg épp elérhetetlen, mert karbantartják a szervert. Remélem, utána is meglesz még.
(Megcsináltam automatizáltan is, írtam egy nagyon dirty awk scriptet mindenféle hibaellenőrzés nélkül, borzalmas rossz szervezéssel. A cél csak az volt, hogy hamar eredményre jussak. Működik, de se nem szép, se nem általános. A hozzátartozó merge regedt file az alábbi: mergeide.reg
Így kell használni:
./regedith mergeide.reg system
A system
az image-ből kimásolt registry, a mergeide.reg
pedig a patch, ez utóbbi text file linuxos sorvégekkel, tehát CR (0x0d) nélkül. Működik, teszteltem. Annyit kell még róla tudni, hogy az adott ág végén valójában nem merge-et csinál, hanem felülírja a key=value párokat, ha más is volt ott, azok törlésre kerülnek.
Most látom, hogy a pastebin rosszul kezeli a tabokat, én meg nem cseréltem le megfelelő számú szóközökre, így különösen rondán néz ki. Bocsánat, ez most ilyen.)
Ezt követően visszamásoltam a guest-re a módosított registry-t:
virt-copy-in -c qemu:///system -d WinXP system /WINDOWS/system32/config/
A spice korrekt működéséhez kell a guest-re is egy driver, ezt letöltöttem:
wget 'http://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.100.exe'
Majd a guest asztalára tettem, hogy ott könnyedén tudjam telepíteni:
virt-copy-in -c qemu:///system -d WinXP spice-guest-tools-0.100.exe '/Documents and Settings/admin/Asztal/'
A driver-eket a driver cache-ből elhoztam a host-ra:
virt-copy-out -c qemu:///system -d WinXP /WINDOWS/Driver\ Cache/i386/driver.cab .
Kiszedtem a szükséges driver-eket:
cabextract -F pciide.sys driver.cab
cabextract -F Atapi.sys driver.cab
cabextract -F Intelide.sys driver.cab
cabextract -F Pciidex.sys driver.cab
Bemásoltam a guest image-be:
virt-copy-in -c qemu:///system -d WinXP pciidex.sys /WINDOWS/system32/drivers/
virt-copy-in -c qemu:///system -d WinXP pciide.sys /WINDOWS/system32/drivers/
virt-copy-in -c qemu:///system -d WinXP atapi.sys /WINDOWS/system32/drivers/
virt-copy-in -c qemu:///system -d WinXP intelide.sys /WINDOWS/system32/drivers/
Ezt követően boot-oltam a guest-et, végre elindult, majd az asztalon lévő spice-os guest-hez való driver-t telepítettem, a VirtualBox guest additions-t eltávolítottam, újraindítottam a virtuális XP-t, s minden jó.
Az image konvertálását - még a fentieket megelőzően - így végeztem:
qemu-img convert -f vdi -S 4k -O qcow2 WinXP.vdi WinXP.qcow2
Így másoltam a helyére:
cp --sparse=always WinXP.qcow2 /var/lib/libvirt/images/
sync
Remélem, trey nem törli. Kicsit blogszerű lett, de valóban kérdés volt, csak a megoldás dokumentálása vált ilyenné.
- 8326 megtekintés
Hozzászólások
Miért nem csinálod meg virtalbox alatt az XP-t felbootolva?
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy nem lesz más megoldás. Ha jól sejtem, registry-ben akkor is kell matatni, és ez nem tölt el jó érzéssel.
Van egy gyakorlati szempont. Röpke 30 GB másolását követően tudom kipróbálni, s ha nem megy elsőre, ez mindenképpen több idő, mint közvetlenül a qcow2 image-ben matatást követően próbálkozni. De végső esetben ezt fogom tenni, csak egy fél élet...
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Frissült a megoldás leírásával.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
hasznos, be tudod tenni wikibe?
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Még sohasem próbáltam. Most inkább írnék egy awk scriptet, amelyik generál egy hivexsh scriptet, amelyik előállítja a kívánt eredményt. A hivexsh-val az a baj, hogy nincs benne feltételes végrehajtás, nincs vizsgálat, ciklus sincs, így aztán nem is olyan egyszerű. Ötletem azért van rá, ha némi kompromisszum megengedett.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Közben írtam egy dirty awk scriptet, amelyik megbütyköli a registry-t. Csúnya, mert az input file-on nem végez hibaellenőrzést, nem is teljesen következetes, de működik, nem általános célra kellett.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
*
- A hozzászóláshoz be kell jelentkezni
Frissült az életet megkönnyítő, ám borzalmasan kinéző awk scripttel és a registry patch file-lal. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni