Windows unter Linux

was ist möglich?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Windows unter Linux
Hey,

ich hab mir überlegt zwischen den Prüfungen meinen Rechner (fast) komplett auf GNU/Linux, genauer Kubuntu, umzustellen. Ich hab schon Dual-Boot-Systeme betrieben, aber das hat mich immer wieder genervt. Auf Windows will ich aber nicht ganz verzichten; hauptsächlich, weil einige Spiele unter Linux nicht richtig laufen.
Jetzt hab ich aber gelesen, dass man mit KVM ca. 95% der Leistung von reinem Windows hin bekommt, was mir schon reichen würde.

Habt ihr damit vielleicht Erfahrung?

1 „Gefällt mir“

Es kommt ganz darauf an was du denn machen möchtest.
Willst du in der VM denn auch aufwendige Spiele spielen?

KVM habe ich selber bisher (fast) nur auf Servern verwendet und kann deshalb wenig dazu sagen.
Wenn du nur einfache Anwendungen brauchst dann würde ich eher zu Virtualbox oder VMware greifen.

Wenn du deine GPU an die VM weiterreichen willst, solltest du vielleicht mal hier anfangen.


KVM kann man recht gut verwenden, das funktioniert auch. Spielen moechte ich damit aber eher nicht, dafuer ist die Grafikperformance doch etwas zu lahm und nur 2D in ordentlich.

Achja, bischen Config:
1 #!/bin/bash
2
3 #kvm -balloon virtio -usb -usbdevice tablet -drive index=0,if=virtio,file=$HOME/win/win-hda.qcow2 -m 3000 -smp 2 -net nic,model=virt io -net user -vga std $*
4 kvm -usb -usbdevice tablet -drive index=0,file=$HOME/win/win-hda.qcow2 -m 2000 -smp 1 -net nic,model=e1000 -net user -vga std $*

Fuer den virtio-Kram (lohnt sich, machts deutlich schneller, aber kann man evtl erst nach der Installation der Treiber anschalten) gibts Treiber da: http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers


Meine Erfahrung mit KVM (hab mich einfach durch libvirtd-manager durchgeklickt): Windows-Installation kann ein paar Stunden dauern, mit den danach installierten virtio-Treibern war dann alles OK. VirtualBox ist zwar in vieler Hinsicht doof, die Installation geht aber schneller.


Gabs mit kvm/qemu und neuerem Windows nicht auch das Problem dass es nicht mal für 2D anständige Grafiktreiber gibt?


Mir geht es in dem Fall wirklich nur um (grafiklastige) Spiele. Alles andere ist entweder unter Linux lauffähig oder es gibt gute Alternativen. Ich will nur nicht nur für die Spiele ein zweites System auf der SSD haben, wenn es sich vermeiden lässt.

Auf YouTube hat einer mit KVM angeblich 95% im Benchmark geschafft. Dessen CPU ist besser als meine, aber die Grafikkarte glaub ich nicht. Der kann aber auch erzählen was er will, darum frag ich euch.


Posting von mir zu VMs, Grafikkarten und Schmerzen.


Das kann schon klappen, wenn du 2 Grafikkarten und eine CPU mit VT-d (IOMMU) hast. VT-d brauchst du, damit du eine einzelne Gruppe an den Gast durchreichen kannst. 2 Grafikkarten sind nötig, weil die Gruppe, die du durchreichst, dem Host-System quasi abgeklemmt wird. Heutzutage haben ja viele CPUs auch eine Grafikeinheit integriert. Damit gab es aber glaube ich zumindest vor einem Jahr (oder so) noch Probleme und zwar mit dem aktuellsten Kernel. Wenn sich das also mittlerweile geändert hat, stellt sich noch die Frage, ob das auch schon bei (K)Ubuntu angekommen ist. Obwohl ich den Stand im aktuellen Linux Kernel nicht kenne, glaube ich aber sowieso nicht, dass sich das ohne irgendwelche Patches bewerkstelligen lässt.

Ich nutze KVM mit PCI-passthrough (das ist eigentlich obsolet und durch vfio ersetzt, welches ich aber damals nicht zum Laufen bekommen habe) um einen LSI M1015 RAID Controller an eine FreeNAS-VM durchzureichen und schon das ging nicht total einfach. Wenn du dich also auf dieses Abenteuer einlassen willst, würde ich dir neben Backups auch ausreichend Zeit (und Nerven) empfehlen :slight_smile:


Nun, es geht auch mit einer Grafikkarte + ssh (2. Rechner oder zur Not auch per Smartphone).

Vielleicht schafft man es auch irgendwie, dem Host die Grafikkarte zu entziehen, der VM zuzuteilen und nach dem Beenden der VM sie automatisch wieder dem Host zuzuordnen und zu reinitialisieren. Andererseits bringt das vermutlich wieder zig Probleme und Kopfschmerzen mit sich…


Die Intel Leute scheinen sich da ne eigene Lösung zusammenzubasteln, die aber wohl noch nicht einsatzbereit ist wenn ich das richtig verstehe: http://www.linux-kvm.org/wiki/images/f/f3/01x08b-KVMGT-a.pdf


Theoretisch kann man sich auch so Sachen mit einem Netzwerkprotokoll basteln das 3D kann indem man per sowas wie TigerVNC auf den entsprechenden Server in der VM verbindet. Aber ich wuerde mal ein bischen anzweifeln, dass man da sinnvoll spielen kann.


Je nachdem, was du unter Windows machen willst (und Spielen tut man ja normalerweise nicht “nebenbei”), ist Dual Boot gar nicht so schlecht, wie man denkt.
Du kannst nämlich sowohl unter Windows als auch Linux Hibernate/Suspend-to-disk verwenden.

Es ist eine ziemlich simple Idee, aber irgendwie kommt keine drauf. Ich habe das eine Zeitlang auf einem Arbeitsrechner gemacht und es gab absolut keine Probleme. Der Wechsel der Systeme dauert vielleicht eine halbe Minute und man ist wieder da, wo man vorher aufgehört hat.

Unter Windows muss man dann noch irgendwas in der Registry einstellen, damit die Hardware-Uhr als UTC interpretiert wird und es nicht ständig die Systemzeit kaputt macht. Das war’s aber auch schon.


Das hatte bei mir gelegentlich zu irgendwelchen Fehlern auf Windows-Seite geführt. Spätestens, wenn man mit beiden Systemen auf die selbe Partition schreibend zugreifen möchte wird das schwierig. Und wenn man kein externes NAS hat, sondern die Medien intern verwaltet kommt sowas gar nicht mal so selten vor.

Hab mir letzte Woche meinen Tower neu zusammen gebastelt und Windows 7 bootet innerhalb von 20 Sekunden.

Damit hatte ich auf meinem Laptop nie Probleme.


Weißt du das sicher? Oder muss ich dann nach dem Beenden der VM mein System neu starten? Würde natürlich alles ad absurdum führen …


Nicht wenn das OS schneller bootet als Windows. :stuck_out_tongue:

1 „Gefällt mir“

Hier gibt’s ne Anleitung.
Das will man generell anschalten, wenn man Linux und Windows abwechselnd booten möchte.


Das ist in der Tat ein Problem. Meines Wissens weigert sich NTFS-3G NTFS-Partitionen einzubinden, die zu dem Zeitpunkt aktiv waren, als Windows in den Ruhezustand geschickt wurde. Es besteht offenbar ein ernsthaftes Risiko von Datenverlust.


Also das was ich in meinem Blog beschrieben habe, habe ich damals ohne 2. Grafikkarte durchgeführt.

Da das Ganze war zwar quasi nur ein Proof-of-Concept und über ssh via „bind“/„unbind“ in [m]/sys[/m] dem Host die Grafikkarte zu entziehen/zurückzugeben war ein ziemliches Gefrickel, aber grundsätzlich hat es funktioniert. Allerdings hatte ich kein X laufen, sondern hab nur die Framebuffer-Console genutzt - da müsste man mal mehr Testen, in wie fern sich mit nur einer Grafikkarte wirklich ein alltagstaugliches Setup bauen lässt.

Andererseits hat man ja normalerweise neben der Grafikkarte zum Zocken noch die Onboard-Grafik - ein anderer Ansatz wäre einfach beide an den gleichen Monitor anzuschließen und dort umzuschalten welches Eingabesignal gerade verwendet wird.


Anderer Ansatz: Kein echtes Windows verwenden, sondern Wine.

Ich habe das gestern mal ausprobiert. System:

Ubuntu 14.10
Wine Staging (gibt Pakete für die meisten Distros)
StarCraft II Starter Edition
Intel Core2 Quad Q6600, 8 GB RAM
Nvidia GeForce GTS 450

Im Prinzip war das Ganze recht einfach:

  • Wine-Pakete installieren: [m]apt-get install --install-recommends wine-staging[/m] (aus ppa:pipelight/stable)
  • Wine initialisieren: [m]/opt/wine-staging/bin/wineboot[/m]
  • SC2 installieren: [m]/opt/wine-staging/bin/wine ~/Downloads/StarCraft-II-Setup-enUS.exe[/m]
  • Spiel über Battle.net Icon am Desktop starten

Nur die Performance lies etwas zu wünschen übrig. Allerdings habe ich extra Wine-Staging genommen, denn das hat CSMT:

  • erstmal alles was mit Wine läuft beenden
  • zur Sicherheit: [m]/opt/wine-staging/bin/wineserver -k[/m]
  • [m]/opt/wine-staging/bin/winecfg[/m], Registerkarte “Staging”, Haken rein bei “Enable_CSMT

Ergebnis (habe das gleiche Replay einmal ohne und einmal mit CSMT abgespielt):

(leider kann ich gerade keinen Vergleich zu Windows auf der gleichen Hardware anbieten)

Edit:
btw. den Graph habe ich folgendermaßen erstellt:

  • [m]WINEDEBUG=fps /opt/wine-staging/bin/wine Battle.net\ Launcher.exe 2>&1 | grep trace:fps --line-buffered | ts ‘%.s’ > fps_csmt.log[/m]
  • sieht etwa so aus: 1423916347.333818 trace:fps:swapchain_gl_present 0x1b6d08 @ approx 0.00fps
  • [m]grep 0x1b6d08 fps_csmt.log | sed -re ‘s/^([0-9.]+) trace.*approx ([0-9.]+)fps$/\1 \2/’ | awk {‘print $1 - 1423916347, $2; }’ > csmt.data[/m] (wobei 0x1b6d08 eine ID, da muss man halt mal ins Log schauen, welche die relevante ist; und 1423916347 die Startzeit ist)
  • also: 0.333818 0.00
  • gnuplot
3 „Gefällt mir“