Ho trascorso tutto ieri con la ricerca e finalmente sono stato in grado di eseguire l'avvio di Windows XP. Dovrebbe essere in qualche modo simile anche per altri sistemi operativi. Ma l'operazione è tutto ma non banale.
Perché questa è un'operazione pericolosa, ti consiglio di eseguire il backup dei tuoi dati preziosi.
Ecco i passaggi:
Preparazione
Nel caso in cui Windows XP sia necessario dimenticare la lettera corrente del disco e le impostazioni della partizione, quindi è necessario cancellare tutti i valori dalla chiave HKEY_LOCAL_MACHINE / MountedDevices sulla macchina virtuale prima della migrazione. Il kernel lo ricostruirà al prossimo riavvio. Su macchine virtuali Linux, questo significa correggere fstab dopo la migrazione.
Montaggio dell'immagine VDI
Non puoi semplicemente copiare l'intero VDI in una partizione, perché contiene anche un MBR. Devi copiare solo la partizione virtuale, quindi prima devi trovare un modo per montare il VDI.
Hai bisogno del nbd
driver e del qemu-nbd
comando. Su Ubuntu è nel qemu-kvm
pacchetto.
Prima carica il driver nbd:
# modprobe nbd
Questo dovrebbe rendere alcuni nbd
dispositivi /dev
.
Quindi montare il VDI:
# qemu-nbd -c /dev/nbd0 path_to.vdi
Questo dovrebbe rendere /dev/nbd0p1
, /dev/nbd0p2
, /dev/nbd0p3
ecc per tutte le partizioni virtuali. Questi possono essere montati come tutti i normali dispositivi.
Migrazione della partizione
Utilizzare dd
per questo, smontare entrambe le partizioni prima dell'operazione:
# dd -if=<nbd_device> -of=<real_partition>
per esempio.:
# dd -if=/dev/nbd0p3 -of=/dev/sda4
Il funzionamento del dd
silenzioso può richiedere diversi minuti, anche mezz'ora. Durante l'operazione è possibile aprire un terminale e utilizzare fdisk -l
per vedere tutto sta andando bene.
AGGIORNARE:
Apparentemente nbd non è una soluzione infallibile. Potrebbe causare errori I / O e far fallire dd. Inoltre il prossimo tentativo fallisce immediatamente. Puoi anche provare a creare un disco rigido VMDK con questo comando (sotto linux):
$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda
Devi essere nel disk
gruppo per farlo funzionare. Quindi aggiungere questo vmdk alla macchina virtuale come disco rigido secondario, quindi utilizzare un ISO di Linux live alla dd
partizione.
Correzione del settore di avvio della partizione NTFS
Questa è la parte hackish.
Siamo quasi pronti, ma Windows XP non si avvia, perché è necessario impostare il numero di settori nascosti del filesystem sull'offset 0x1C
. Fondamentalmente questo è un numero di settori prima della partizione NTFS. Possiamo ottenere questo numero dal fdisk -ul
comando. Il start
campo dell'output indica da quale settore inizia la partizione data, che è sostanzialmente il numero di settori prima della partizione. Quindi prendi il numero da lì, convertilo in esadecimale usando gcalctool per esempio.
Apri la partizione con hexedit
, in questo modo:
# hexedit /dev/sda4
Quindi scrivere il numero di settori nascosti in ordine little endian 1C
all'offset. Little endiean significa: 0xABCDEFGH
lo sarà GH EF CD AB
. Se il numero hexa è più corto di 8 cifre, precederlo con zero.
Al termine, salvarlo ed uscire (Ctrl + X).
Configurare GRUB
Devi dire a GRUB di avviare direttamente quella partizione, per GRUB aggiungi la seguente voce di menu:
title Microsoft Windows XP Professional
root (hd0,3)
savedefault
makeactive
chainloader +1
Dove (hdX, Y)
identifica la partizione. X è 0 per il disco rigido predefinito, 1 per /dev/sda
, 2 per /dev/sdb
ecc. Y è il numero di partizione. 0 per /dev/sda1
, 1 per /dev/sda2
, ecc.
Questo dovrebbe essere simile anche per GRUB2, ma utilizza una sintassi leggermente diversa per le voci di menu.
Tocchi finali
La nuova partizione NTFS è pronta per l'avvio. Ma hai ancora bisogno di hacking per raggiungere il desktop di Windows XP. Altri sistemi potrebbero aver bisogno di hack diversi. Innanzitutto il file boot.ini deve essere corretto.
[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
Impostare il numero di partizione di conseguenza. L'ho installato su / dev / sda4. Quindi il numero di partizione dovrebbe essere 3.
Potrebbe essere necessario correggere la voce MountedDevices nel registro se Windows si blocca subito prima della schermata di accesso.
Il registro è disponibile per <path to windows>/system32/config/system
visualizzarlo chntpw
. Questo può essere un problema se la tua lettera di unità di sistema non è C. Dato chntpw
che le capacità di scrittura del registro sono piuttosto limitate, devi eseguire il fallback e usare un hexeditor, come ghex2 per risolverlo. Nel mio caso devi trovare \DosDevices\C:
e sostituire la C con una lettera di unità diversa F
.
Successivamente, dovresti essere in grado di raggiungere il desktop, ora devi cercare tutti i driver, ma questo non rientra nell'ambito di questo tutorial.
fonti
Spostamento di Windows XP in un'altra partizione
Montare un VDI su Linux