Dual-Boot oder virtuelle Maschine für Linux-Programmierer, die Visual Studio-Entwicklung ausführt?


26

Das Szenario:

  • Ich bin ein freiberuflicher Softwareentwickler, der hauptsächlich unter Linux entwickelt (Python, MySQL, MongoDB usw.).
  • Mein Arbeitscomputer ist ein Lenovo-Laptop mit einem i7-Prozessor und 8 GB RAM. Big HD + 128 GB SSD. Das Betriebssystem ist Ubuntu Linux

Möglicherweise erhalte ich in naher Zukunft einige .NET / C # -Projekte. Ich suche daher einige Anleitungen zu folgenden Themen:

  • Sollte ich mich für eine Dual-Boot-Lösung entscheiden oder virtuelle Maschinen für Windows-Anwendungen verwenden?
  • Wenn ich Dual-Boot gehe: Wie lautet die empfohlene Installationsreihenfolge? Windows zuerst oder Linux zuerst? (Ich suche nach einer vollständigen Neuinstallation von Ubuntu, um trotzdem das neueste LTS zu erhalten, damit ich alles neu installieren kann.)
  • Wenn ich auf VM umsteige: Wie vergleichen VMWare Workstation und VirtualBox die Leistung?
  • Mein Traumaufbau wäre wahrscheinlich der folgende:
    • Dual-Boot
    • Wenn ich jedoch in Linux boote, kann ich die Windows-Partition als virtuelle Maschine booten. Ist das möglich?
    • Und / oder: Wenn ich in Windows boote, kann ich die Linux-Partition als virtuelle Maschine booten. Ist das möglich?

5
Sie sollten immer zuerst Windows und dann Ubuntu ausführen, da Sie möchten, dass Grub den Windows-Bootloader durch Chain-Boot ersetzt. Es gibt mehrere Dutzend Fragen dazu. Performance-Entscheidungen sollten Sie selbst treffen
Ramhound

Visual Studio ist eine intensive Anwendung und kann in Ihrer virtuellen Umgebung möglicherweise nicht ausreichend ausgeführt werden.
Frank Thomas

Antworten:


12

Andere haben den Rest Ihrer Frage behandelt, aber ich sehe, sie haben diesen Teil unadressiert gelassen:

Wenn ich jedoch in Linux boote, kann ich die Windows-Partition als virtuelle Maschine booten. Ist das möglich? Und / oder: Wenn ich in Windows boote, kann ich die Linux-Partition als virtuelle Maschine booten. Ist das möglich?

Die kurze Antwort lautet ja.

Die lange Antwort lautet ja, aber mit einer Reihe von Vorbehalten und Folgen.

Bis zu diesem Januar (als wir neue Computer bekamen) hatte ich meinen Arbeitscomputer so konfiguriert, dass er entweder dual bootete oder Linux als Host für eine Windows 7-VM verwendete, die direkt auf die Windows-Partition zugegriffen hat. Ich habe nie versucht, Windows als Host für eine Linux-VM mit direkter Festplatte zu verwenden, aber es ist auch möglich. Mein Computer hat ein älteres BIOS / MBR verwendet. Ich bin mir nicht sicher, wie ich dies tun soll, wenn Sie UEFI / GPT verwenden.

Ich habe mich für VirtualBox entschieden, aber soweit ich weiß, sollte dies auch mit VMWare möglich sein.

Die Leistung war für meine Zwecke vollkommen akzeptabel. Ich gab Windows 1 CPU-Kern, 2 GB Speicher, 1 Monitor, und ich erinnere mich nicht, wie viel Videospeicher. Die VM war in der Lage, Videos abzuspielen und mit meiner Java-GUI-Anwendung und vielen Websites mit umfangreichen Inhalten zu arbeiten.

Ich werde die Verrücktheit besprechen, bevor ich ins Detail gehe:

  • Der Wechsel zwischen Native-Boot- und VM-Modus von Windows 7 löste die Warnung von Windows aus, dass meine Kopie von Windows nicht echt sei. Abhängig von Ihrer Lizenz kann MS dies als Verstoß gegen die Lizenz betrachten, indem es auf zwei Hardwarekomponenten installiert. Ich musste auch meine Installation "reparieren", da sich viele der Low-Level-Treiber für die reale Hardware und die "VM-Hardware" unterscheiden.

  • Jedes Mal, wenn Windows Update ausgeführt wurde (oder eine andere E / A-Operation für große Datenträger), wurde meine Festplatte unter Last zerstört und alles auf beiden Computern wurde langsam. Durch das Verschieben jedes Betriebssystems auf eine eigene Festplatte wurde dieses Problem behoben. Die Verwendung eines Solid-State-Laufwerks hätte das Problem ebenfalls gelöst.

  • Aus irgendeinem Grund mochte Ubuntu es gelegentlich nicht, nach dem Anhalten (vielleicht 20% der Zeit) wieder aufzuwachen, was einem harten Ausschalten für meine Windows-VM entsprach. Infolgedessen schaltete ich die VM jeden Abend aus, bevor ich den Host ausschaltete.

  • Ich musste sehr vorsichtig sein, um niemals zu versuchen, die Windows-Partition unter Linux zu mounten, um mögliche Datenbeschädigungen / -verluste zu vermeiden. Ich habe schnell eine udev-Regel hinzugefügt, um dies zu verhindern.

Okay, wenn das nicht so schlimm klingt, hier sind die Details: Die nützlichste Referenz, die ich dazu gefunden habe, ist dieses Blog: http://www.rajatarya.com/website/taming-windows-virtualbox-vm . Hier sind die Schritte zusammengefasst:

  • RTFM. Ja wirklich. Sie verwenden Befehle, die Ihr Dateisystem beschädigen können, wenn Sie sie falsch ausführen.

  • Finden Sie die Partitionen.

  • Ändern Sie die Berechtigungen für Ihre Partitionen (alternativ können Sie Ihre VM mit sudo booten, aber alle Dateien, die auf dem freigegebenen Host- / Gast-Laufwerk erstellt wurden, gehören root).

  • Erstellen Sie einen MBR, damit der Gast nicht versucht, den normalen Bootloader zu verwenden.

  • Verwenden Sie einen internen VirtualBox-Befehl, um das für die VM zu verwendende vmdk-Image zu erstellen.

  • Erstellen Sie die VM. Lass es das vmdk benutzen, das du gerade erstellt hast.

  • Booten und reparieren Sie Ihre Installation.

Ich würde erwarten, viele der gleichen Probleme mit einem Windows-Host zu finden, aber Linux würde wahrscheinlich eleganter mit der unterschiedlichen Hardware umgehen. Es könnte jedoch einfacher sein, eine gemeinsam genutzte / home-Partition (und möglicherweise / opt-Partition) zu verwenden und nur unterschiedliche Root-Partitionen für die nativen und die Gastcomputer zu verwenden.


Ich habe jahrelang den VM-Ansatz auf Macs gewählt und finde, dass selbst eine SSD ihn nicht alleine schneidet. Sie müssen Host und Gast auf völlig unterschiedlichen Laufwerken trennen, um zu verhindern, dass beide Systeme E / A-gebunden werden. Obwohl eine SSD die Dinge verbessert, ist sie nichts anderes als die Verwendung eines zweiten Laufwerks (und wenn es sich um beide SSDs handelt, fliegen Sie!)
Keith Jackson

12

Ich mache im Allgemeinen das Gegenteil, das heißt, mein Heimsystem ist ein Windows 7-Computer und ich führe verschiedene Linux-Varianten als VM aus. Da Linux mit begrenzten Ressourcen recht gut funktionieren kann, funktioniert dies auch für mich, obwohl ich nur 4 GB RAM habe (obwohl dies bedeutet, dass ich eine einzelne VM gleichzeitig betreibe und ihr normalerweise höchstens 1024 MB RAM zur Verfügung stelle, um genügend RAM zu haben für Windows).

Mit 8 GB RAM können Sie problemlos eine Windows-VM ausführen. Ich denke, die einzige große Frage hier ist die Art der Ergebnisse, die Sie für Ihre Entwicklung messen möchten. Ich würde mich nur zögern, mich auf Performance- / Durchsatzmessdaten für Elemente zu verlassen, die Sie in einer VM entwickeln (es sei denn, diese werden in einer ähnlichen VM-Umgebung mit denselben Spezifikationen auf der ganzen Linie bereitgestellt). Ansonsten solltest du gut gehen.

Und um Kommentare in anderen Threads zu kommentieren: Wenn Sie wissen, dass Sie Anwendungen entwickeln, die eine große Menge an Ressourcen erfordern, ist die Optimierung für dieses Ziel der richtige Weg VMs) vorzuziehen.

Ich habe sowohl VMWare als auch VirtualBox verwendet, und ich habe auch keine wirklichen Leistungseinbußen mit gesehen. Ich bin nicht so weit gegangen, die internen VMs zu vergleichen, ich habe einfach keine negativen Auswirkungen von beiden Plattformen bemerkt (benutze VirtualBox immer noch zu Hause und VMware bei der Arbeit).


Wenn Ihr Linux 1 GB RAM in einer VM verarbeitet, können Sie Windows problemlos in einer VM ausführen und auch 3 GB VRAM zuweisen. Bei der Frage gilt die gleiche Theorie. Behalten Sie 1 GB für Ihr Basis-Linux-Betriebssystem bei und weisen Sie Windows 7 GB zu. Es spielt keine Rolle, was das Basisbetriebssystem und die VM ist. Solange Sie beide ausführen, teilen Sie die gleichen Ressourcen. Für mich spielt es keine Rolle, dass beide Betriebssysteme gerne in einer VM ausgeführt werden. Wenn Sie über die Ressourcen verfügen, um beide Betriebssysteme auszuführen, ist es immer schön, zwischen ihnen wechseln zu können, ohne einen Neustart durchführen zu müssen.
Jakke

Ich bevorzuge VirtualBox, um meine VMs auszuführen, da in VMware Player AND Workstation (Version 10) schwerwiegende Speicherverluste aufgetreten sind. Ich spreche von> 4 VMs, die gleichzeitig auf einem System mit 32 GB RAM ausgeführt werden. Beide VW-Produkte nutzen den gesamten RAM bis zum Absturz, während VB wochenlang problemlos läuft.
Jakke

8

Es hängt davon ab, wie Sie arbeiten und wie sich das Betriebssystem anfühlen soll .

Duales Booten bedeutet Neustart und Booten, wenn Sie das Betriebssystem ändern möchten, dies dauert einige Zeit . Arbeiten Sie als Freiberufler 8 Stunden am Stück mit einem Projekt, ohne "Ihre" Sachen zu machen ("Ihre Sachen" wären Sie auf Ihrem Linux-Boot).

Wenn Sie unter Windows 8 Stunden hintereinander arbeiten und dann den Rest des Tages unter Linux verbringen, müssen Sie den Dual-Boot-Modus verwenden. Wenn Sie 30 Minuten arbeiten und dann etwas in Linux tun möchten, wechseln Sie für 3 Stunden wieder zur Arbeit, dann wieder in Linux usw. Dann würde ich VM wählen.

Wenn Sie sich nicht sicher sind, machen Sie beides. Dual Boot und unter Windows eine VM ausführen. Sie werden einen deutlichen Unterschied zwischen beiden sehen und Sie werden einen gegenüber dem anderen bevorzugen.

Ich persönlich benutze ein VM nur zum Testen neuer Linux-Dists und manchmal einen gefälschten Server beim Entwickeln (es ist von unschätzbarem Wert, ein VM vermasseln zu können, und es ist weitaus weniger mühsam, es auf Ihrer tatsächlichen Festplatte zu tun.). VM hinkt auch hinterher und fühlt sich weniger reaktionsfreudig an. Ich brauche mein Betriebssystem, um reaktionsfreudig und reibungslos zu sein. Der VM fehlt in diesem Bereich. Also bevorzuge ich Dualboot.

Es gibt auch ein Problem beim Freigeben von Dateien. Es ist mehr Arbeit, einen Dual-Boot zu teilen (stellen Sie sich vor, Sie bearbeiten eine Datei im Windows-Boot und booten dann unter Linux, um zu erkennen, dass Sie eine Zeile verpasst haben und in Windows, dem Albtraum, neu starten müssen!), Wo Sie auf einem VM NFS oder Samba verwenden können Dateien zwischen den Betriebssystemen in Echtzeit zu teilen, keine Probleme.

Auch über nicht genug Widder, wie Aboba sagte, Müll sage ich. Ich starte 4GB und eine VM in Windows8. Denken Sie jedoch daran, welche Ressourcen Ihr Projekt benötigt.


Über das Teilen von Dateien: Ich hoffe wirklich, wirklich, wirklich, dass Sie alles, woran Sie arbeiten, unter Versionskontrolle haben. In diesem Fall wird der Punkt umstritten. Dinge, die Sie immer noch zwischen Windows und Linux teilen möchten (weil ... ich weiß nicht), gehen Sie einfach auf eine NTFS-Partition - die von beiden Betriebssystemen gelesen und beschrieben werden kann.
Voo

GIT 4 Leben ofc! Ich programmiere viel privat, also brauche ich dafür keinen Git (ich weiß, ich weiß, es ist eine gute Übung, aber ich bin faul). Über die NFTS habe ich genau das gesagt! Das Booten zwischen den Betriebssystemen dauert jedoch einige Zeit. Und in einer VM sind beide Dateien in Echtzeit verfügbar!
Karl Morrison

Meine Ubuntu-Partition mountet automatisch alle Partitionen von Windows, so dass zumindest der Zugriff auf Dateisysteme / Windows-Dateien kein Problem darstellen sollte. Es gibt auch Software von Drittanbietern, um EXT3 / 4-Partitionen auf Windows zu mounten.
kuldeep.kamboj

Eine weitere Überlegung ist, ob Sie Windows Phone-Entwicklung durchführen möchten. In diesem Fall können Sie Visual Studio nicht in einer virtuellen Umgebung ausführen, da die WP-Emulatoren selbst Hyper-V-VMs sind. Sie könnten Windows 8 mit aktiviertem Client-Hyper-V ausführen, Linux in einer VM darunter und weiterhin Zugriff auf die Emulatoren für die WP-Entwicklung haben.
RJRAPSON

5

Oder wie geht es dir? Sie interessieren sich für .net / C #. Warum also nicht einfach Mono unter Linux verwenden? Es ist sehr plattformübergreifend im Sinne von Java.


Genau meine Gedanken - ich habe mit Visual Studio ein einfaches C # Othello-Spiel mit einem einzigen Fenster erstellt, und es lief einwandfrei, wenn das Projekt importiert und auf MonoDevelop ausgeführt wurde.
NoBugs

3
Als Einschränkung unterstützt Mono keine WPF-Projekte. Wenn das OP WPF-Anwendungen entwickeln möchte, funktioniert dies nicht. Ich war auch ein großer Fan von Mono, aber da Novell das Projekt aufgegeben hat und Xamarin sich für die Bewältigung des neuen Sachverhalts entschieden hat, bin ich etwas vorsichtig, wenn es darum geht, mehr Anstrengungen zu unternehmen.
Boluc Papuccuoglu

1
Ich habe überlegt, Mono zu verwenden und werde es auf jeden Fall ausprobieren. Aber könnte es Probleme geben, wenn andere Teammitglieder Visual Studio verwenden?
Codeape

Wenn Sie Visual Studio nicht verwenden, werden Sie den Spaß an .NET wirklich vermissen.
Demonkoryu

3
@codeape Es gibt viele nicht unterstützte Funktionen und Bibliotheken in Mono. Dies ist wahrscheinlich keine ernstzunehmende Option, wenn Ihr Kunde nicht speziell an der Ausrichtung auf Mono interessiert ist.
Casey

4

Persönlich habe ich auf halbem Weg viele positive Erfahrungen gemacht. Verwenden Sie einen Hypervisor wie Xen. Sie können dann sowohl Linux als auch Windows unter einem leichten Mikrokern-Hypervisor ausführen. Sie können auch keinen signifikanten Leistungseinbruch hinnehmen und diese Konfiguration ist weitaus flexibler So können Sie jederzeit problemlos Ressourcen zwischen den beiden zuweisen.

Dies entspricht nahezu Ihrem Traum-Setup, da Sie die beiden Betriebssysteme jederzeit unabhängig voneinander booten oder herunterfahren können, um Ressourcen auf die anderen zu verteilen, und Sie keine Leistungseinbußen feststellen können (in der Realität ist dies möglicherweise ein Bruchteil eines Prozent langsamer) In einigen Fällen werden Sie dies jedoch nicht bemerken, es sei denn, Sie führen ein Benchmarking durch, um dies zu testen.

Der einzige Haken ist, dass Ihre CPU für bestimmte Funktionen die Visualisierung unterstützen muss, jedoch bei jedem i7 (afaik), sodass dies für Sie kein Problem sein sollte.

BEARBEITEN:

Xen enthält einen eigenen Mikrokernel, Debian wird nicht benötigt, um es auszuführen. Der einzige Grund, warum ein Linux-System neu konfiguriert werden muss, ist, dass das Konfigurationsprogramm ein Linux-Programm ist, das Sie auf einem der Gäste ausführen (Gast ist der Begriff, den Xen verwendet eine VM bedeuten). Sie können jederzeit nur Linux, nur Windows oder beides ausführen, aber Sie müssen Linux ausführen, um die Xen-Einstellungen zu konfigurieren. Es ist daher ratsam, ein kleines Linux im Hintergrund laufen zu lassen, um dies bei Bedarf zu tun.

Hardware kann auf verschiedene Arten gehandhabt werden. Xen bietet eine Reihe virtueller Geräte, mit denen ein Teil der Hardware von mehreren Gästen gleichzeitig verwendet werden kann, z. B. Netzwerkkarten und Soundkarten usw.

Bei Hardware, die nicht auf diese Weise funktioniert oder von jeweils nur einem Gast benötigt wird, können Sie jederzeit auswählen, welcher Gast direkten Zugriff auf die Hardware hat und diese jederzeit umschalten Zeit. Dies kann durchgeführt werden, um einem bestimmten Gast echten Zugriff auf die Grafikkarte zu gewähren, wenn Sie ein beschleunigtes Hochgeschwindigkeits-Rendering ohne Virtualisierungsaufwand benötigen .

Es ist auch möglich, dass ein Gast die Grafikkarte wie oben beschrieben direkt im Passthrough-Modus verwendet, andere jedoch mithilfe eines lokalen VNC-ähnlichen Protokolls anzeigt, wodurch der Bildschirm anderer Gäste in Fenstern angezeigt wird (denken Sie wie eine virtuelle Box oder ein Remotedesktop). während man die Grafikkarte direkt kontrollieren kann; Sie können auch einfach zwischen den Gästebildschirmen wechseln, um jeweils einen direkten Zugriff zu erhalten.

Im Gegensatz zu der Annahme, dass dieses Setup effizient ist, ist es tatsächlich eine der wenigen Möglichkeiten, beide Betriebssysteme gleichzeitig auszuführen, während die native Leistung in beiden effektiv beibehalten wird ein solches Setup, um einen Hochleistungsspielautomaten oder andere anspruchsvolle Systeme zu betreiben.


Können Sie eine Anleitung empfehlen, um alles wie erwähnt einzurichten? Ich möchte ein Gentoo Linux / Win7 System haben.
Gene Pavlovsky

3

Nach meiner Erfahrung (ich arbeite auch an .Net-Apps, während ich coole Sachen teste und algo-Probleme unter Linux löse) ist Dual-Boot die beste Wahl.

Wie andere betont haben, fühlt sich die Verwendung einer VM manchmal langsam und nicht an, was zu Schmerzen führen kann.

Eine weitere Sache, auf die ich hinweisen möchte, ist, dass Sie sich Zeit nehmen und versuchen, eine VM auszuführen und zu prüfen, ob Sie damit vertraut sind.

Bezüglich der Reihenfolge
1) installiere zuerst Windows und dann Linux (bevorzugt)
2) installiere zuerst Linux und dann Windows (dann musst du den Bootloader neu installieren)

Eine weitere Sache, die ich hinzufügen möchte, ist, dass Sie für kleine .Net-Projekte sogar Linux mit Mono verwenden können, sodass Sie nicht von Windows zu Linux wechseln müssen.


1

Ich beschäftige mich seit etwas mehr als einem Jahr mit der Entwicklung von Linux / Visual Studio, angefangen mit Visual Studio bis hin zum Umstieg auf Linux (ich mag apt, zsh und vim!).

Ich habe mit Windows angefangen, das Ubuntu in VMWare Player hostet, was ziemlich gut funktioniert hat, sicherlich großartig, wenn Sie hauptsächlich Visual Studio-Entwicklung betreiben und nur gelegentlich ein reines Linux-Paket oder was auch immer benötigen. Mit der Zeit wollte ich, dass meine Arbeit häufiger in der Linux-Umgebung ausgeführt wird, und die VM-Integration hatte ein paar ...

Da ich hauptsächlich auf Linux-Entwicklung umgestiegen bin (viel AS3 in IntelliJ und einige Node + Python) und nur gelegentlich Windows benötigte (ASP.NET-Site), habe ich dies auf Ubuntu umgestellt und eine VirtualBox gehostet (unter Verwendung einer disk2vhd -> .vdi von meine alte Windows-Festplatte). Nach einigem Hin und Her bin ich angesichts der Arbeitsteilung, die ich im Allgemeinen habe, ziemlich zufrieden. Wenn Sie jedoch eine ernsthafte Menge an Visual Studio ausführen, möchten Sie wahrscheinlich, dass Windows Linux hostet. Entweder VirtualBox oder VMWare Player sollten in Ordnung sein.

Ich sollte jedoch ein paar Punkte beachten: Mit den standardmäßigen Ubuntu 14.04 AMD-Videotreibern verlangsamt die 3D-Beschleunigung von VirtualBox Visual Studio ~ 10-100x, sodass die Beschleunigung auf Kosten einer gewissen Trägheit deaktiviert wird. und du willst wirklich auf einer SSD laufen)


2
Nur zu bemerken, dass die Antwort "Sie haben nicht genug RAM" ziemlich verrückt ist, klingt für mich: VS selbst ist 32-Bit, es kann also nicht mehr als 4 GB verwenden. Wenn Sie vollständige IIS-Editionen mit SQL Server ausführen, ist dies möglicherweise etwas träge, aber die normalen Express-Versionen dieser sollten in Ordnung sein. SSD ist für die Leistung weitaus wichtiger.
Simon Buchan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.