Arbeiten mit physischen Festplatten

Ich habe es schon unter VirtualBox am laufen und im Artikel “Ein echtes OS unter VirtualBox?” beschrieben. Mich hat es aber genervt, dass es unter qemu nicht funktionieren wollte. Also habe ich angefangen zu lesen und zu testen und siehe da, es bewegt sich doch! Tja, sogar teilweise viel einfacher, als unter VirtualBox, aber drauf kommen muss man da erst einmal!

Ich habe mit Absicht einen anderen Titel als in dem VirtualBox Artikel gewählt, da ich hier einfach noch ganz anderes Potential sehe! Aber dazu gleich mehr.

Nutzen

Ja, die Frage hinter so ziemlich allem. Warum soll man das eigentlich machen?

Ganz einfach. Wie schon in dem verlinkten Artikel geschrieben, ging es mir in erster Linie um das auf einer extern installierten Festplatte Windows 10. Ich benutze es ausschliesslich zum spielen und von daher, wenn ich da ein Spiel installiere, oder alleine Windows mal wieder ein Update machen will, musste ich erst Windows booten und dann war mein Rechner für das, was ich normalerweise so mache, blockiert. Das gefiel mit nicht!

Deshalb der Gedanke, warum denn nicht ein nativ installiertes OS in einer virtuellen Umgebung booten? Spielen funktioniert da zwar nicht so toll, aber die Updates und Installationen kann man doch machen, ohne den ganzen Rechner durch ein ansonsten für mich nutzloses OS zu blockieren!

Leider fand ich ja zuerst nur Informationen, wie man eine physische Festplatte unter VirtualBox betriebsbereit machen kann. Ich benutze aber in der Regel qemu, um etwas zu virtualisieren. Von daher wollte ich natürlich auch eine Lösung für qemu.

Gut, die habe ich ja nun gefunden und ich muss sagen, ich sehe da recht grosses Potential drin! Zum Beispiel kann man theoretisch (ich habe es noch nicht versucht!) eine leere Festplatte einbinden, ein OS drauf installieren und die Platte dann in einen anderen Rechner bauen. Das hätte den Vorteil, man könnte beispielsweise ein Gentoo, was ja ewig zum installieren braucht, da alles compiliert wird, auf einem schnellen Rechner installieren und dann in einen anderen Rechner einbauen. Klar, da müssten dann noch ein paar Anpassungen vorgenommen werden, aber wahrscheinlich geht es dennoch schneller.

Man kann es aber auch benutzen, um ein OS zu prüfen, würde ich mal sagen. Obwohl da die Frage ist, ob der Einsatz eines Live-OS nicht effizienter wäre. Eine Möglichkeit wäre es dennoch.

Aber alleine schon, dass man beide OS gleichzeitig benutzen kann, halte ich persönlich für einen grossen Vorteil!

Die richtigen Parameter

Wie immer bei qemu, kommt es schlussendlich nur auf die Wahl der richtigen Startparameter an. Ich nehme einfach meine Konfiguration als Beispiel. Da ist Windows auf einer externen Festplatte, welche bei mir unter

/dev/sdf

zu finden ist.

Nach einigen Experimenten habe ich die Lösung, wie man ein solches Laufwerk einbindet, quasi durch Zufall gefunden. Denn, unter Linux ist ja alles eine Datei, inklusive einer physischen Festplatte! Also, warum denn für -hda nicht /dev/sdf4 angeben?

Na, weil es nicht funktioniert! Ich dachte, als -hda gebe ich einfach sdf4 an, weil dort alles notwendige zum booten drauf ist und als -hdb dann sdf2, da dort Windows installiert ist und alles ist toll. Na, falsch gedacht! Korrekt ist tatsächlich so:

-hda /dev/sdf

Der Rest kriegt dann qemu geregelt.

Hier jetzt meine Konfiguration! Virtualisiert wird ein 64-Bit Rechner mit 4 Prozessoren, 4 GB Arbeitsspeicher und einer hda Soundkarte. Ich benutze immer VNC zum anzeigen, da ich dann auch von anderen Rechnern aus darauf zugreifen kann!

qemu-system-x86_64 -m 4096 -enable-kvm -smp 4 -net nic -net user,hostname=realwin10 -vga std -hda /dev/sdf -device virtio-serial -display vnc=:10 -usb -device usb-tablet -soundhw hda

So. Was passiert denn nun, wenn ich es starte? Da ich ein Skript dafür verwende, starte ich es so:

./startwin10.sh

Es passiert folgendes:

Ja, was ist denn da passiert? Ganz einfach! Der normale Benutzer des Systems darf nicht mal eben auf die Laufwerke zugreifen! Wäre ja noch schöner. Ergo:

sudo ./startwin10.sh

Dann sieht das so aus:

Ach ja, UEFI. Ich habe es nie gebraucht, aber jetzt ist es da und irgendwie will Windows nichts mehr anderes! Unter VirtualBox war das ja noch leicht zu regeln, da muss man einfach nur ein Hacken setzen. Bei qemu ist es ein wenig komplizierter!

OVMF

Man muss, wenn man es nicht schon getan hat, OVMF installieren. Wie das für die jeweilige Distribution geht weiss ich nicht, da müsst ihr euch belesen. Sollte ja aber nicht zu schwierig sein.

Nach der Installation besitzt man folgende Datei:

/usr/share/ovmf/x64/OVMF.fd

oder auch

/usr/share/ovmf/OVMF.fd

Das ist ein BIOS, mit der qemu auch UEFI laden kann. In einigen Foren habe ich zwar gelesen, man müsse nur

-boot uefi

beim starten mit angeben, funktioniert hat es bei mir aber nicht. Nur mit OVMF!

Der richtige Parameter für qemu lautet:

-bios /usr/share/ovmf/x64/OVMF.fd

qemu mit UEFI

So. Nachdem das soweit geklärt ist, kann man ja mal alles zusammenbauen und dann erneut testen!

qemu-system-x86_64 -m 4096 -enable-kvm -smp 4 -net nic -net user,hostname=realwin10 -vga std -bios /usr/share/ovmf/x64/OVMF.fd -hda /dev/sdf -device virtio-serial -display vnc=:10 -usb -device usb-tablet -soundhw hda

Ja! Von der Theorie her könnt ihr das so kopieren, in einem Terminal einfügen, sudo davor schreiben und das Laufwerk anpassen und schon läuft die Kiste. Wenn denn der Pfad zu OVMF passt!


Tada! Läuft!

Es fällt aber direkt etwas auf, besonders wenn man es vergleicht!

Links Windows unter qemu, Rechts unter VirtualBox. Die Auflösung ist unter qemu niedriger! Gerade einmal 800×600!

Es lässt sich aber auch nicht ändern! Unter VirtualBox übrigens auch nicht!

Gut, die Auflösung reicht, um Updates zu machen, oder ein Spiel zu installieren. Trotzdem wäre es doch schön, wenn man es grösser machen könnte, oder?

Grund dafür dürfte wohl dieser Treiber sein, den Windows in qemu automatisch lädt. Nebenbei, boote ich Windows, wird automatisch der Nvidia-Treiber geladen. Also der von Nvidia, nicht der den Windows mitbringt!

So. Warum akzeptiert Windows 10, wenn man es direkt unter qemu installiert, eine höhere Auflösung? Das werde ich mir mal anschauen und testen. Wenn ich mehr weiss, dann gibt es einen neuen Artikel!

Fazit

Ich meine, Windows läuft unter qemu etwas weicher, als unter VirtualBox. Das mag an den Einstellungen liegen, oder weil Windows unter qemu nur eine Auflösung von 800×600 hat, oder vielleicht ist es rein subjektiv.

Für mich ist es auf jeden Fall ein Erfolg, da ich nach wie vor qemu bevorzuge! Davon aber abgesehen ist es wohl ziemlich egal, welches Tool man benutzt. Sie funktionieren beide!

Ein echtes OS unter VirtualBox?

Um das direkt zu klären, natürlich ist ein OS, welches man in einer virtuellen Umgebung installiert, ebenfalls ein echtes OS. Hier soll es aber darum gehen, ein OS, welches nativ auf einem Computer installiert wurde, in einer virtuellen Umgebung auszuführen. Deshalb sage ich “echtes OS”.

Warum sollte man?

Warum sollte man ein “echtes OS” in einer virtuellen Umgebung starten wollen? Eine gute Frage, denn wenn es ja auf einem richtigen Computer installiert wurde, kann man es doch auch dort benutzen, oder?

Ja, im Prinzip ist das richtig. Dennoch gibt es da Gründe, warum man gerne ein echtes OS in eine virtuelle Umgebung zwingen möchte. Ich habe zumindest für mich einen solchen Grund gefunden.

Auslöser daran ist Epic mit ihren gratis Spielen jede Woche. Zum Beispiel ARK, oder Civilisation VI. Da konnte ich einfach nicht widerstehen. Gut, ARK spiele ich eigentlich mit Steam unter Linux, doch Civilisation wollte einfach nicht unter Linux laufen. Keine Chance, egal was ich versucht habe. Was also tun?

Nun, ich habe aus meinem NetBook einst die Festplatte gegen eine SSD getauscht. Die alte Platte lag von da an auf dem Regal. Die habe ich jetzt einfach in ein externes Gehäuse gesteckt und unter Windows 10 (zweites OS auf meinem Laptop) Windows 10 Pro als “Windows to go” installiert. Ergo, ich habe jetzt auch ein natives Windows, mit dem ich zum Beispiel Civilisation spielen kann.

Problem an der Sache, natürlich wollte Windows Updates und was weiss ich. Ergo, in der Zeit war ich nicht in der Lage, mit meinem Linux etwas zu arbeiten. Eine echt bescheidene Situation, wie ich finde. Da kam für mich die Frage auf, kann ich denn nicht das installierte Windows virtualisieren?

Und es startet doch!

Ich bin ja bekannt dafür ein Noob zu sein, was Suchmaschinen angeht. Von daher ist es vielleicht für einige unverständlich, warum ich mich bei der Suche nach einer Lösung so schwer getan habe.

Die Quintessenz von dem, was ich da so auf Anhieb gefunden habe war einfach. Es funktioniert nicht, da sowohl qemu wie auch VirtualBox keine physischen Festplatten verwenden können. Damit wollte ich mich aber nicht abfinden!

Ich habe gesucht und leider muss ich sagen, Ergebnisse habe ich nur für VirtualBox gefunden, dabei laufen die meisten meiner virtuellen Maschinen doch unter qemu. Aber egal, VirtualBox benutze ich schliesslich auch.

Also hab ich angefangen zu experimentieren. So habe ich herausgefunden, dass man einen physikalischen USB-Stick tatsächlich als Laufwerk in VirtualBox einbinden kann und siehe da, so habe ich schlussendlich auch die Kiste ins Rollen gebracht.

Eine nicht physische physische Festplatte

Ein Knackpunkt an der Geschichte war, wie kriegt man eine physische Festplatte so gebogen, dass VirtualBox sie benutzen kann? Nun, eigentlich ist das gar nicht so schwer.

Aber! VirtualBox steht ja im Ruf vorwiegend von denen benutzt zu werden, die lieber mit der Mouse arbeiten, also nicht so gerne tippen. Das wird hier aber nicht funktionieren. Hier muss man in den Terminal.

Schritt 1: Hinsetzen

Das ist eine kleine Anspielung auf den Film “Die tollkühnen Männer in ihren fliegenden kisten”.

Schritt 2: Die ID der Festplatte herausfinden

Das ist bei mir ziemlich einfach. Ich habe zwar einige Platten eingebaut, aber nur eine sitzt am USB.

ls -l /dev/disk/by-id/ | grep usb

Die ID der kompletten Platte ist wichtig, nicht einzelner Partitionen! Also das, was ich rot umrahmt habe.

Wer jedoch keine USB-Platte verwendet, sondern eine fest installierte, der muss

| grep usb

weglassen. Das “|” ist übrigens kein i, oder l, sondern das Zeichen welches man mit “STRG + <” bekommt!

Die ID haben wir jetzt also, jetzt müssen wir daraus etwas basteln, was VirtualBox auch versteht.

Schritt 3: Physische Platte für VirtualBox verwendbar machen

Achtung! Hierfür braucht man Administrator-Rechte!

Zuerst wechsel ich mal in das Verzeichnis, wo die Datei später auch sein soll. Das erspart mir die Eingabe eines Pfades. Wo man die Datei schliesslich speichert, ist völlig egal.

Jetzt brauchen wir das Programm “vboxmanage”, welche bei der Installation von VirtualBox dabei ist. Der Befehl sieht dann so aus:

sudo vboxmanage internalcommands createrawvmdk -filename usbdisk.vmdk -rawdisk /dev/disk/by-id/usb-SAMSUNG_HM160HC_5812271602C2-0\:0

Für jene, die nicht so gerne tippen, hier eine Variante, die ihr kopieren und einfügen könnt. Ihr müsst lediglich die ID, die ihr bei Schritt 2 kopieren könnt, einfügen.

sudo vboxmanage internalcommands createrawvmdk -filename usbdisk.vmdk -rawdisk 

Wichtig, ihr müsst auch das Leerzeichen am Ende mitkopieren, oder nach dem Einfügen selbst einsetzen!

Hat alles geklappt, dann sieht das so aus. Wir haben also aus der physischen Festplatte eine VMDK Datei gemacht. Die wird aber wirklich nur dafür gebraucht, um für VirtualBox eine Datei bereitzustellen. Gearbeitet wird definitiv direkt auf dem physischen Laufwerk!

Schritt 4: VirtualBox einrichten

Zuerst startet man VirtualBox. Aber ich denke, soweit ist wohl jeder schon selbst gekommen. Aber, man muss VirtualBox mit Administrator-Rechte öffnen, da man ansonsten nicht auf die Festplatte zugreifen kann.

sudo VirtualBox

Hat man das, klickt man oben auf “Neu”

Ich nenne die virtuelle Maschine einfach RealWin10. Der Name ist aber völlig egal, da kann jeder so kreativ sein wie er will.

Speicher kriegt das gute Ding 4GB, sollte ja für mein Anliegen reichen.

Jetzt wird es ein bisschen kniffliger. Aber nicht viel. Wir müssen hier jetzt die erstellte VMDK einfügen. Also erst wählen wir aus, dass eine bestehende Platte genutzt werden soll und dann hinten auf den kleinen Ordner klicken. Beides von mir rot umrahmt.

Hier dann auf “Hinzufügen” klicken, da die Datei wohl kaum schon einmal eingefügt worden ist.

Hier muss man dann die VMDK Datei auswählen, die wir erstellt haben. Wer sich nun wundert, dass auf einmal die zuvor gesehenen Platten weg sind, den kann ich beruhigen. Die Bilder bis hier her habe ich gemacht und selbst vergessen VirtualBox mit Root-Rechten zu starten. Also keine Sorge, wenn ihr hier eine VMDK Datei einfügt, verschwindet nicht automatisch alles andere!

Soweit so gut. Bis hier hin hat dann ja alles geklappt, aber ein paar Dinge sind noch einzustellen.

Windows 10 wird ja immer so installiert, dass es UEFI zum booten benutzt. Also muss auch VirtualBox das berücksichtigen. Einfach ein Haken bei “EFI sktiveren (nur spezielle Gäste)”.

Ausserdem scheint es doch von Vorteil zu sein, mindestens 2 CPUs einzustellen.

So. Hat jetzt alles geklappt? Dann sollte man die Kiste ja starten können, oder?

Geil, oder? Warum da jetzt aber VirtualBox steht und nicht Windows, ist mir ein Rätsal. Auch die komischen Meldungen oben kann man eigentlich getrost ignorieren. Aber man baucht doch etwas Geduld.

Yeah! Hat geklappt! Jetzt noch schnell einloggen!

Geil, oder? Auch wenn das Fenster hier recht klein ist und die Icons links am Rand, wenn ich Windows dann wieder direkt boote ist die alte Auflösung wieder da und die Icons dort, wo ich sie haben will.

Toll! Und jetzt?

Also, spielen würde ich damit nicht. Ich habe es spasseshalber mal versucht, Civilisation startet auch, aber schön ist anders.

Was man aber durchaus problemlos machen kann sind zum Beispiel Updates. Oder irgendwas installieren. Eben all so zeug, wo selbstständig abläuft. Das kann man nun bequem virtualisiert erledigen, ohne damit den Rechner zu blockieren. Finde ich persönlich echt praktisch!

Ich kann mir auch gut vorstellen, dass wenn man beruflich zum Beispiel Programme nutzen muss, die unter Linux einfach nicht laufen wollen, man selbst aber eigentlich Linux bevorzugt, man so mit den Programmen auch arbeiten kann, während man eigentlich unter Linux unterwegs ist.

Generell denke ich aber, die Möglichkeiten, die sich hier bieten, sind gross!