Wie verwende ich eine echte Partition mit Windows 7 in einer Virtualbox VM?

37

Mein Ubuntu 12.04 ist auf /dev/sda5 und Windows 7 auf installiert /dev/sda1. Wenn ich Ubuntu ausführe, möchte ich Virtualbox verwenden, um Windows 7 in einer VM auszuführen. Die Windows 7-Partition ist 1 TB groß und halb voll, dh, ich möchte sie nicht auf eine virtuelle Festplatte kopieren.

Ich habe gelesen, dass es möglich ist, eine echte Festplatte für eine Virtualbox-VM zu verwenden, aber die verschiedenen Anweisungen, die ich gefunden habe, unterscheiden sich voneinander und ich scheine nicht in der Lage zu sein, sie zum Laufen zu bringen. Kennt jemand eine Möglichkeit, um es in Ubuntu 12.04 und Virtualbox 2.1.12_Ubuntu r77245 (das neueste Ubuntu installiert die Repos) arbeiten zu lassen?

Bitte posten Sie, wie es für Sie funktioniert, da ich jede Methode wiederholen möchte, die möglicherweise funktioniert.

Jazz
quelle
Warum ist Ihre MSWIN-Partition 1TiB? Obwohl dies keine vollständige Lösung ist: Verschieben Sie nach Möglichkeit alles, was nicht vorhanden sein muss (Daten ... Mediendateien?), Und ändern Sie dann die Größe der Partition, um die Vorgehensweise zu vereinfachen. Wenn Sie die Image-Route einschlagen möchten, haben Sie nach dem Löschen und Verkleinern dieser Partition genügend Speicherplatz, um ein vollständiges Image der kleineren, neuen Partition zu erstellen. :-)
Alastair

Antworten:

27

Der gewünschte Befehl lautet

VBoxManage internalcommands createrawvmdk -filename Win7.vmdk -rawdisk /dev/sda -partitions 1

Dadurch wird eine spezielle virtuelle VMDK-Festplattendatei (Win7.vmdk) erstellt, die eigentlich ein Zeiger auf die Hostfestplattenpartition ist /dev/sda1.

Theoretisch können Sie dies dann als Festplattendatei für eine VM verwenden, um direkt von der tatsächlichen Festplattenpartition ausgeführt zu werden.

  • (a) Ich habe das noch nie versucht, weiß also nicht, wie zuverlässig es ist
  • (b) Je nach Lizenzschlüssel können Probleme mit der Windows-Aktivierung auftreten und je nachdem, ob Windows feststellt, dass sich die erkannte "Hardware" erheblich geändert hat
StarNamer
quelle
Vielen Dank. Ich habe nicht einmal über das Aktivierungsproblem nachgedacht. Das wird meinen Plänen sicher ein Ende setzen.
Jazz
1
Selbst wenn es funktioniert hat (was ich bezweifle), können Sie Ihr Windows ernsthaft beschädigen, wenn Sie sowohl vom Start als auch von der VM aus starten.
Takkat
@ ubnewbie2: Ich würde dies wahrscheinlich nur als Experiment und / oder bei Verwendung eines Volumenlizenzschlüssels versuchen und es wahrscheinlich als Einbahnstraße betrachten. Das heißt, Sie würden mehr Schwierigkeiten haben, es rückgängig zu machen. Tatsächlich verwende ich Windows 7 und eine VirtualBox-VM mit Ubuntu, oft im Vollbildmodus, sodass der PC nur Linux zu verwenden scheint und sicherer wäre, Ubuntu von einer unformatierten Festplattenpartition auszuführen.
StarNamer
Zu Ihrer Information, ich habe es jetzt umgekehrt versucht. Ich musste einen Rechner, auf dem Ubuntu ausgeführt wird, auf Win 7 umstellen, um Speicherplatz freizugeben, indem ich die Größe der Partitionen veränderte und eine neue erstellte und Win 7 installierte. Dadurch wurde grub2 durch den Windows-Bootloader ersetzt, sodass ich dann VirtualBox installierte und eine neue VM mit erstellte Eine minimale virtuelle Festplatte, von der aus gebucht werden kann. Anschließend werden die vorhandenen "Raw" -Partitionen zum Ausführen verwendet. Es funktioniert in Ordnung, obwohl es aufgrund des reduzierten Speichers etwas träge ist und nur 1 CPU-Kern (statt 4) zu sehen ist.
StarNamer
-partitions am ende zeigt eine liste der partitionen, die virtual box "sehen" soll (nicht die partitionsnummer, die sie verwenden möchten), VBoxManage internalcommands --helpwas sie mit den internen befehlen tun können und was die optionen bedeuten.
Boatcoder
16

Ja, Sie können dies mit dem internen createrawvmdkBefehl tun , der kein vollständiges Festplatten-Image erstellt, sondern einen Zeiger auf die tatsächliche Hardware.

Dafür gibt es zwei Möglichkeiten

  • A. Vollständiges Disk-Image (von / dev / sdb)

    sudo VBoxManage internalcommands createrawvmdk -filename sdb.vmdk -rawdisk /dev/sdb
    
  • B. Partitionsabbild

    Wie @StarNamer gezeigt hat, können Sie nur eine oder wenige Partitionen verwenden.

    So erstellen Sie ein Image nur einer Partition (/ dev / sda1):

    sudo VBoxManage internalcommands createrawvmdk -filename sda1.vmdk -rawdisk /dev/sda -partitions 1
    

    So erstellen Sie eine benutzerdefinierte Partitionstabelle, in der / dev / sda2 und / dev / sda1 in dieser Reihenfolge zugeordnet werden:

    sudo VBoxManage internalcommands createrawvmdk -filename sda2_1.vmdk -rawdisk /dev/sda -partitions 2,1
    

Der auffälligste Unterschied ist, dass das vollständige Festplatten-Image den Bootloader und die Partitionstabelle genau so verwendet, wie sie sich auf Ihrer Festplatte befinden. Theoretisch (ich habe das zuvor nur in qemu getan) können Sie also das Betriebssystem von Ihrer virtuellen Maschine aus einrichten. Und aus meiner begrenzten Erfahrung kann ich sagen, dass das vollständige Disk-Image genauso funktioniert qemu -hda /dev/sdb.

Hinweis: Wenn Sie Benutzer für den Zugriff auf die Festplatte verwenden, müssen Sie sie zu diskund vboxusersGruppen hinzufügen , z

sudo usermod -aG disk,vboxusers ubuntu

Stellen Sie dann sicher, dass Sie sich erneut anmelden oder den Computer neu starten.

Weitere Lektüre:

JLarky
quelle
"Full Disk Image verwendet Bootloader und Partitionstabelle genau so, wie sie sich auf Ihrer Festplatte befinden" - unter welchem ​​Szenario das erste (/ dev / sdb) oder das zweite (mit angegebenen Partitionen)?
Naught101
1
Außerdem muss virtualbox als root ausgeführt werden, sonst bekommst du Permission problem accessing the file for the medium '/home/naught101/sda2_windows.vmdk'
naught101
3
Msgstr "Auch virtual-box muss als root ausgeführt werden". Nein, Sie müssen Mitglied der Gruppe disk sein. Viel sicherer als virtual-box als root auszuführen.
2
Folgendes funktionierte für mich mit Ubuntu 16.04 als Hostsystem und Windows 10 als Gast: Ich habe die .vmdk-Datei mit erstellt sudo VBoxManage internalcommands createrawvmdk -filename sda1_2_3.vmdk -rawdisk /dev/sda -partitions 1, 2, 3. Auf diese Weise habe ich sowohl die Windows-Partition als auch die EFI-Bootloader-Partition eingeschlossen. Ich folgte dann den Anweisungen von shilka auf virtualbox.org/ticket/7702 und fügte cloverefiboot hinzu. Klappt wunderbar!
Dzmanto
Sie können dem Befehl VirutalBox (und VBoxManage) auch das Präfix voranstellen, sudo -g diskum nur diesem den Zugriff auf virtualbox zu gewähren, aber nicht auf alle Ihre anderen Prozesse.
Jan Hudec
0

Es gibt eine Festplattenoption mit dem Namen "Unveränderlich". Wenn Sie diese Option für die vmdk-Verknüpfung zu Ihrer Raw-Festplatte auswählen, sollte sie theoretisch die ursprüngliche Partition nicht ändern.

Öffnen Sie dazu "Virtual Media Manager" unter "Datei", wählen Sie Ihr Image aus und klicken Sie auf "Ändern" (Sie müssen sicherstellen, dass dieses Image keinem Computer zugeordnet ist, da sonst eine Fehlermeldung angezeigt wird). Jetzt können Sie den Medientyp auf "Unveränderlich" einstellen.

Das habe ich allerdings nicht getestet. Wenn jemand dies tut (natürlich mit einem Testaufbau), wäre es gut, hier Bericht zu erstatten.

Hat jemand Überlegungen, die gegen diese Idee sprechen?

Esokrates
quelle
0

Seit einigen Jahren starte ich Windows und Ubuntu mit Dual-Boot, und die Ubuntu-Partition bootet auch in Windows VirtualBox, um die Touchscreen-Funktionen zu nutzen, die Linux noch nicht beherrscht.

Ich richte es mit Anweisungen ähnlich wie unten ein;

Die neuen Maschinen können beide Betriebssysteme gleichzeitig besser handhaben als einzelne Systeme auf alten Maschinen.

Nachteil: Sie müssen die Anweisungen für das Setup speichern, falls ein Update die VirtualBox-Verbindung deaktiviert (mein aktuelles Problem).

Desprit
quelle
0

Nach vielen Versuchen kam ich zu einer sauberen und ordentlichen Lösung:

  1. Booten Sie die Windows-Partition, die Sie virtualisieren möchten
  2. Laden Sie das Dienstprogramm Disk2VHD von Sysinternals herunter
  3. Wenn Sie eine UEFI-Partition haben , befolgen Sie diese Anweisungen
  4. Erstellen Sie ein VHD- Image (nicht VHD X ) Ihrer C: -Partition, Wiederherstellung, UEFI (falls vorhanden) und was auch immer Sie möchten
  5. Kehren Sie zu Linux zurück, öffnen Sie VirtualBox und erstellen Sie eine VM entsprechend Ihren Windows-Betriebssystemspezifikationen
  6. Verbinden Sie die unter Punkt 4 erstellte VHD-Festplatte mit dieser VM
  7. Das ist es
  8. Profitieren

Fehlerbehebung bei UEFI:

  1. Aktivieren Sie in den VM-Einstellungen in VirtualBox die Option "EFI aktivieren" auf der Registerkarte "System"
  2. Wenn Sie bei der EFI-Shell hängen bleiben, führen Sie den folgenden Befehl aus:

    fs0:\EFI\Boot\bkpbootx64.efi
    
garlix
quelle
Ein Kommentar zur Ablehnung?
Garlix
Ich sehe, dass dies vor ein paar Tagen passiert ist, aber ich kann mich nicht erinnern, Ihnen Ablehnungen gegeben zu haben, zumindest nicht mit Absicht. Ich würde es gerne widersprechen, sorry.
userfuser
0

VirtualBox hat viele Nachteile. Ich verlasse es vor einigen Jahren. Jetzt verwende ich qemu-kvm und neben anderen feinen Funktionen kann es so konfiguriert werden, dass das Festplattengerät auf die gleiche Weise wie das Festplattenimage verwendet wird. Der Trick besteht darin, das virtuelle "-drive if = sd, id = sda, format = raw, file = / dev / sda" zu konfigurieren.

Aber! Sie müssen zuerst einige Änderungen vornehmen, während Sie den MSW auf dem Bare-Metal-System ausführen, bevor Sie versuchen, ihn zu virtualisieren: Suchen Sie im Ordner "Drivers" nach den richtigen Treibern und im "Registry" -Baum nach den Treibern, die aktiviert und aktiviert sind Laufen Sie vor dem Systemstart wie folgt:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\msahci] "Start"=dword:00000000

Sie müssen nach einem proprietären Treiber für die virtuelle Maschine suchen, wenn Sie den BSOD nicht anzeigen möchten.

Es ist schwer zu sagen, welche Treiber aktiviert werden sollen. Am besten installieren Sie zuerst ein Testsystem, suchen dann mit dem "Start" = dword: 00000000 im Register nach dem Registerschlüssel und setzen diesen Schlüssel dann auf die Bare-Metal-Maschine. Es wird auch empfohlen, die MAC-Adresse auf dem Bare Metal zu überprüfen, um sie in die QEMU-Konfiguration zu übernehmen. Sie können verhindern, dass das System nach einer neuen Aktivierung fragt.

schweik
quelle