Come copiare i contenuti VDI di VirtualBox in una partizione e fare doppio avvio del sistema operativo da esso?


12

Sono un utente Linux ma tengo un ISO di Windows XP compresso con me su una pen drive per il caso in cui ho assolutamente bisogno di Windows per fare qualcosa. Questo funziona in VirtualBox il più delle volte.

Ma ora voglio giocare ad alcuni giochi, quindi vorrei eseguire l'immagine di Windows in modo nativo. Il mio computer non ha un lettore CD, quindi non posso semplicemente masterizzare ISO e fare un'installazione normale.

Quello che sto cercando di fare è spostare l'immagine di Windows installata in una partizione NTFS fisica sul mio HDD e impostare GRUB per consentirmi di avviarlo due volte.

Ho trovato molti tutorial che si occupano di creare VDI su unità fisica. Ma presumono che io voglia sovrascrivere il mio intero disco. Lo spostamento dell'immagine del disco grezzo ddnella partizione ha comportato una partizione danneggiata.

Ho anche provato il trucco VMDK per utilizzare quella partizione vuota e installare Windows su di essa. Anche se la fase in modalità testo dell'installazione termina senza problemi, la VM non funziona, si arresta in modo anomalo e continua a riavviarsi o si blocca immediatamente (a seconda di come ho creato VMDK, con -rawdisk /dev/sda3o -rawdisk /dev/sda -partition 3).

Risposte:


4

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 nbddriver e del qemu-nbdcomando. Su Ubuntu è nel qemu-kvmpacchetto.

Prima carica il driver nbd:

# modprobe nbd

Questo dovrebbe rendere alcuni nbddispositivi /dev.

Quindi montare il VDI:

# qemu-nbd -c /dev/nbd0 path_to.vdi

Questo dovrebbe rendere /dev/nbd0p1, /dev/nbd0p2, /dev/nbd0p3ecc per tutte le partizioni virtuali. Questi possono essere montati come tutti i normali dispositivi.

Migrazione della partizione

Utilizzare ddper 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 ddsilenzioso può richiedere diversi minuti, anche mezz'ora. Durante l'operazione è possibile aprire un terminale e utilizzare fdisk -lper 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 diskgruppo per farlo funzionare. Quindi aggiungere questo vmdk alla macchina virtuale come disco rigido secondario, quindi utilizzare un ISO di Linux live alla ddpartizione.

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 -ulcomando. Il startcampo 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 1Call'offset. Little endiean significa: 0xABCDEFGHlo 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/sdbecc. 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/systemvisualizzarlo chntpw. Questo può essere un problema se la tua lettera di unità di sistema non è C. Dato chntpwche 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


0

puoi provare a usare partimage e gdisk per farlo. Prendi gdisk o un altro programma di partizione e ridimensiona il tuo disco corrente / imposta una partizione su un disco da qualche parte. idealmente sarà una partizione primaria. Di solito mantengo la partizione 1 per Windows e 2+ per i dati di Linux.

una volta impostata una partizione è possibile utilizzare gdisk o un altro clone fantasma per creare file di backup o immagine diretta sull'altra unità. è possibile impostare una connessione di rete all'host se è necessario rilasciare il file in quel modo o è possibile creare file img quindi copiarlo dal file vmdk al sistema host ... quindi utilizzare il software di immagine per ripristinare la partizione nella posizione creata sul sistema host

configurare grub come necessario per aggiungere l'avvio a quella partizione ntfs.


probabilmente puoi anche moutnt il vmdk in un mannter che consentirebbe al software di immagine di leggerlo direttamente dall'host jsut dipende da come è il software di immagine.
Kendrick,

Ho trascorso tutto ieri con la ricerca e finalmente sono riuscito a fare l'avvio di Windows XP. Lo scriverò in dettaglio. Non è banale.
Calmarius,

è abbastanza ironico ma presto dovrò farlo. Ho un PC a cui non piace installare Solaris per qualche motivo, quindi devo estrarre i dati da un VM che ho sulla nuova macchina.
Kendrick,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.