Maszyna z podwójnym uruchomieniem lub maszyna wirtualna dla programisty Linuksa, która zajmuje się programowaniem w Visual Studio?

26

Scenariusz:

  • Jestem niezależnym programistą, który rozwija się głównie w systemie Linux (Python, MySQL, MongoDB itp.)
  • Mój komputer to laptop Lenovo z procesorem i7 i 8 GB pamięci RAM. Big HD + 128 GB SSD. System operacyjny to Ubuntu Linux

W najbliższej przyszłości mogę otrzymać niektóre projekty .NET / C #, dlatego szukam wskazówek na następujące tematy:

  • Czy powinienem wybrać rozwiązanie z podwójnym uruchomieniem, czy używać maszyn wirtualnych do obsługi systemu Windows?
  • Jeśli przejdę do podwójnego rozruchu: jaka jest zalecana sekwencja instalacji? Najpierw Windows czy Linux? (I tak patrzę na pełną ponowną instalację Ubuntu, aby uzyskać najnowszą wersję LTS, dzięki czemu mogę zacząć instalować wszystko od nowa)
  • Jeśli przejdę do VM: Jak VMWare Workstation i VirtualBox porównują wydajność?
  • Moja wymarzona konfiguracja prawdopodobnie wyglądałaby następująco:
    • Podwójny rozruch
    • Ale jeśli uruchomię system Linux, mogę uruchomić partycję Windows jako maszynę wirtualną. czy to możliwe?
    • I / lub: Jeśli uruchomię system Windows, mogę uruchomić partycję Linux jako maszynę wirtualną. czy to możliwe?
Codeape
źródło
5
Zawsze powinieneś zrobić najpierw Windows, a następnie Ubuntu, ponieważ chcesz, aby Grub zastąpił boot-boot systemu Windows. Istnieje kilkadziesiąt pytań, jak to zrobić. Decyzje dotyczące wydajności należy podejmować samodzielnie
Ramhound,
Visual Studio to intensywna aplikacja, która może, ale nie musi, działać wystarczająco dobrze w środowisku wirtualnym.
Frank Thomas

Odpowiedzi:

12

Inni omówili resztę twojego pytania, ale widzę, że pozostawili tę część bez odpowiedzi:

Ale jeśli uruchomię system Linux, mogę uruchomić partycję Windows jako maszynę wirtualną. czy to możliwe? I / lub: Jeśli uruchomię system Windows, mogę uruchomić partycję Linux jako maszynę wirtualną. czy to możliwe?

Krótka odpowiedź brzmi: tak.

Długa odpowiedź brzmi „tak”, ale z pewnymi zastrzeżeniami i implikacjami.

Do stycznia (kiedy otrzymaliśmy nowe maszyny) mój komputer roboczy był skonfigurowany do podwójnego rozruchu lub do używania Linuksa jako hosta dla maszyny wirtualnej z systemem Windows 7, która bezpośrednio uzyskiwała dostęp do partycji Windows. Nigdy nie przejmowałem się próbą użycia systemu Windows jako hosta dla maszyny wirtualnej Linux z bezpośrednim dyskiem, ale jest to również możliwe. Mój komputer korzystał ze starszego systemu BIOS / MBR, nie jestem pewien, jak to zrobić, jeśli korzystasz z UEFI / GPT.

Wybrałem VirtualBox, aby to zrobić, ale z tego, co rozumiem, powinno to być również możliwe w VMWare.

Wydajność była całkowicie akceptowalna dla moich celów; Dałem rdzeń procesora Windows 1, 2 GB pamięci, 1 monitor i nie pamiętam ile pamięci wideo. Maszyna wirtualna była w stanie odtwarzać wideo i współpracować z moją aplikacją Java GUI oraz wieloma stronami z bogatą treścią.

Omówię dziwność, zanim przejdę do szczegółów:

  • Przełączanie między rodzimym uruchomieniem a trybem VM systemu Windows 7 wywołało ostrzeżenie systemu Windows, że moja kopia systemu Windows nie jest oryginalna. W zależności od twojej licencji, MS może uznać to za naruszenie licencji, instalując na dwóch elementach sprzętowych. Musiałem także „naprawić” moją instalację, ponieważ wiele sterowników niskiego poziomu różni się od rzeczywistego sprzętu i „sprzętu” maszyny wirtualnej.

  • Za każdym razem, gdy uruchomiona była Windows Update (lub jakakolwiek inna operacja we / wy na dużym dysku), mój dysk twardy był niszczony pod obciążeniem i wszystko na obu komputerach zwalniało. Przeniesienie każdego systemu operacyjnego do własnego dedykowanego dysku twardego naprawiło ten problem; użycie dysku SSD również rozwiązałoby problem.

  • Z jakiegoś powodu Ubuntu od czasu do czasu nie lubił budzić się po zawieszeniu (może 20% czasu), co było równoznaczne z silnym wyłączeniem zasilania mojej maszyny wirtualnej z systemem Windows. W rezultacie co wieczór wyłączałem maszynę wirtualną przed zawieszeniem hosta.

  • Musiałem bardzo uważać, aby nigdy nie próbować montować partycji Windows w systemie Linux, aby zapobiec możliwemu uszkodzeniu / utracie danych. Szybko dodałem regułę udev, aby temu zapobiec.

W porządku, jeśli to nie brzmi źle, oto szczegóły: Najbardziej przydatnym odnośnikiem do tego celu jest ten blog: http://www.rajatarya.com/website/taming-windows-virtualbox-vm . Oto podsumowane kroki:

  • RTFM. Naprawdę. Będziesz używał poleceń, które mogą uszkodzić system plików, jeśli zrobisz to źle.

  • Znajdź partycje.

  • Zmień uprawnienia do partycji (alternatywnie możesz uruchomić maszynę wirtualną za pomocą sudo, ale wtedy wszelkie pliki utworzone na dysku udostępnionym host / gość będą własnością root).

  • Utwórz MBR, aby gość nie próbował użyć zwykłego programu ładującego.

  • Użyj wewnętrznego polecenia VirtualBox, aby utworzyć obraz vmdk do użycia dla maszyny wirtualnej.

  • Utwórz maszynę wirtualną. Niech użyje właśnie utworzonego vmdk.

  • Uruchom i napraw instalację.

Spodziewałbym się znaleźć wiele takich samych problemów przy użyciu hosta Windows, ale Linux prawdopodobnie bardziej elegancko poradziłby sobie z innym sprzętem. Naprawdę może być łatwiejsze użycie partycji współdzielonych / home (i może / opt) i mieć po prostu różne partycje root dla maszyn natywnych i maszyn gości.

KJP
źródło
Od lat stosuję podejście VM na komputerach Mac i stwierdzam, że nawet dysk SSD nie wycina go sam. Musisz oddzielić hosta i gościa na zupełnie różnych dyskach, aby uniknąć powiązania systemu z operacjami we / wy. Chociaż dysk SSD poprawia sytuację, jest niczym w porównaniu do korzystania z drugiego dysku (a jeśli oba są dyskami SSD, latasz!)
Keith Jackson,
12

Robię ogólnie odwrotnie, to znaczy, że mój system domowy to komputer z systemem Windows 7 i uruchamiam różne wersje Linuksa jako maszyny wirtualne. Ponieważ Linux może ładnie funkcjonować z ograniczonymi zasobami, działa to dla mnie, mimo że mam tylko 4 GB pamięci RAM (pamiętaj, że to oznacza, że ​​uruchamiam pojedynczą maszynę wirtualną na raz i zwykle daje to maksymalnie 1024 MB pamięci RAM, aby utrzymać dużo dla Windowsa).

Twoje 8 GB pamięci RAM powinno umożliwiać dość łatwe uruchamianie maszyny wirtualnej z systemem Windows. Myślę, że jedynym dużym pytaniem tutaj jest rodzaj wyników, które będziesz chciał zmierzyć dla swojego rozwoju. Wahałbym się polegać na wszelkich metrykach wydajności / przepustowości dla elementów opracowywanych na maszynie wirtualnej (chyba że zostanie ona wdrożona w podobnym środowisku maszyny wirtualnej o takich samych specyfikacjach na całym forum). W przeciwnym razie powinieneś być dobry.

I dotykając komentarzy w innym wątku, oczywiście, jeśli masz zamiar wiedzieć, że będziesz rozwijać aplikacje, które wymagają dużej ilości zasobów, wtedy optymalizacja w tym celu byłaby dobrym rozwiązaniem (więc w takich przypadkach podwójny rozruch z pewnością preferowane jest używanie maszyn wirtualnych).

Używałem zarówno VMWare, jak i VirtualBox i nie widziałem żadnych prawdziwych spadków wydajności przy użyciu żadnego z nich. Nie poszedłem do tego stopnia, aby przeprowadzić analizę porównawczą maszyn wirtualnych w środku, po prostu nie zauważyłem żadnego negatywnego wpływu żadnej z platform (nadal używam VirtualBox w domu, a VMware w pracy).

użytkownik123
źródło
Jeśli Twój system Linux obsługuje 1 GB pamięci RAM na maszynie wirtualnej, oznacza to, że możesz łatwo uruchomić system Windows na maszynie wirtualnej i przypisać 3 GB pamięci VRAM. W przypadku pytania obowiązuje ta sama teoria. Zachowaj 1 GB na podstawowy system operacyjny Linux i przydziel 7 GB na system Windows. Tak naprawdę nie ma znaczenia, jaki jest podstawowy system operacyjny i maszyna wirtualna. Tak długo, jak korzystasz z obu programów, udostępniasz te same zasoby. Dla mnie to naprawdę nie ma znaczenia, oba systemy operacyjne chętnie działają na maszynie wirtualnej, a jeśli masz zasoby do uruchomienia obu, zawsze miło jest móc przełączać się między nimi bez konieczności ponownego uruchamiania.
Jakke
Wolę VirtualBox do uruchamiania moich maszyn wirtualnych, ponieważ widziałem poważne wycieki pamięci w VMware Player AND Workstation (wersja 10). Mówię o> 4 maszynach wirtualnych działających jednocześnie w systemie z 32 GB pamięci RAM. Oba produkty VW zaczynają używać wszystkich siłowników, dopóki nie ulegnie awarii, podczas gdy VB z radością działa przez tygodnie bez żadnych problemów.
Jakke
8

To zależy od tego, jak pracujesz i jak chcesz się czuć .

Podwójne uruchamianie oznacza ponowne uruchomienie i uruchomienie, jeśli chcesz zmienić system operacyjny, zajmuje to trochę czasu . Jako wolny strzelec, czy pracujesz 8 godzin z projektem bez robienia „swoich” rzeczy („twoje rzeczy” to ty na twoim Linux-cie).

Jeśli pracujesz 8 godzin z rzędu w systemie Windows, a następnie spędzasz resztę dnia w systemie Linux, użyj podwójnego rozruchu. Jeśli pracujesz 30 minut, a następnie chcesz coś zrobić w Linuksie, przełącz się na pracę przez 3 godziny, następnie ponownie na Linuksa itp. Następnie wybrałbym VM.

Jeśli nie masz pewności, zrób jedno i drugie. Podwójny rozruch i gdy w systemie Windows uruchom maszynę wirtualną. Zobaczysz wyraźną różnicę między nimi i wolisz jedno od drugiego.

Osobiście używam vm tylko do testowania nowych dystrybucji Linuksa, a czasami fałszywego serwera podczas devlopingu (możliwość zepsucia vm jest bezcenna i o wiele mniej kłopotliwa niż robienie tego na twoim prawdziwym dysku twardym.). VM również pozostaje w tyle i czuje się mniej responsywny, potrzebuję mojego systemu operacyjnego, aby czuć się responsywny i gładki, VM brakuje w tym obszarze. Wolę więc podwójny rozruch.

Istnieje również problem z udostępnianiem plików. Dzielenie się przy podwójnym rozruchu wymaga więcej pracy (wyobraź sobie edycję pliku w systemie Windows podczas uruchamiania, a następnie uruchamianie w systemie Linux tylko po to, aby zdać sobie sprawę, że przegapiłeś linię i musisz ponownie uruchomić system Windows, koszmar!), Gdzie na vm możesz użyć NFS lub samby udostępniać pliki między OS w czasie rzeczywistym, bez prób.

Także o niewystarczającej ilości barana, jak powiedział Aboba, mówię śmieci. W systemie Windows 8 uruchamiam 4 GB i maszynę wirtualną. Pamiętaj jednak o tym, jakich zasobów potrzebuje Twój projekt.

Karl Morrison
źródło
O udostępnianiu plików: naprawdę, naprawdę, naprawdę mam nadzieję, że masz wszystko, nad czym pracujesz pod kontrolą źródła, w którym to przypadku sprawa staje się dyskusyjna. Rzeczy, które nadal chcesz udostępniać między Windows a Linuksem (ponieważ ... nie wiem), po prostu przejdź na partycję NTFS - którą można odczytać i zapisać w obu systemach operacyjnych.
Voo
GIT 4 life ofc! Zajmuję się programowaniem prywatnym, więc nie potrzebuję do tego git (wiem, że to dobra praktyka, ale jestem leniwy). O NFTS właśnie to mówiłem! jednak uruchamianie między systemami OS wymaga czasu. A w vm oba pliki są dostępne w czasie rzeczywistym!
Karl Morrison
Moja partycja Ubuntu automatycznie montuje wszystkie partycje systemu Windows, więc nie powinno być problemu z dostępem do systemu plików / plików systemu Windows. Są także oprogramowaniem innych firm do montowania partycji EXT3 / 4 w systemie Windows.
kuldeep.kamboj
Innym zagadnieniem jest to, czy chcesz opracować program Windows Phone. W takim przypadku nie można uruchomić programu Visual Studio w środowisku wirtualnym, ponieważ emulatory WP są same maszynami wirtualnymi Hyper-V. Możesz uruchomić system Windows 8 z włączoną funkcją Hyper-V klienta, Linux na maszynie wirtualnej i nadal mieć dostęp do emulatorów do tworzenia WP.
rjrapson
5

Lub jak to? Interesujesz się .net / C #, więc dlaczego po prostu nie używać Mono na Linuksie? Jest to platforma wieloplatformowa w sensie java.

Hanetzer
źródło
Dokładnie moje myśli - bawiłem się tworzeniem prostej gry C # Othello z jednym oknem w Visual Studio i działało dobrze podczas importowania projektu i uruchamiania na MonoDevelop.
NoBugs
3
Z zastrzeżeniem, Mono nie obsługuje projektów WPF. Więc jeśli OP chce opracować aplikacje WPF, to nie zadziała. Byłem też wielkim fanem Mono, ale ponieważ porzucenie projektu przez Novella i wybór Xamarina w zarządzaniu nowym stanem rzeczy, jestem nieco ostrożny w inwestowaniu w to więcej wysiłku.
Boluc Papuccuoglu
1
Rozważałem użycie mono i na pewno go wypróbuję. Ale mogą występować problemy, gdy inni członkowie zespołu używają programu Visual Studio?
codeape
Naprawdę przegapiłbyś zabawę .NET, jeśli nie korzystasz z Visual Studio.
demonkoryu
3
@codeape W Mono jest wiele nieobsługiwanych funkcji i bibliotek; prawdopodobnie nie jest to poważna opcja, jeśli twój klient nie jest specjalnie zainteresowany kierowaniem na Mono.
Casey
4

Osobiście miałem wiele pozytywnych doświadczeń biorąc do domu, użyj hiperwizora, takiego jak Xen , możesz wtedy mieć zarówno Linux, jak i Windows, działający pod lekkim hiperwizorem mikro-jądra, żaden nie ma znaczącego spadku wydajności, a ta konfiguracja jest znacznie bardziej elastyczna , co pozwala w dowolnym momencie łatwo przenieść zasoby między nimi.

To prawie pasuje do wspomnianej konfiguracji marzeń, ponieważ możesz w dowolnym momencie niezależnie uruchomić lub wyłączyć dwa systemy operacyjne, aby przenieść zasoby do drugiego i nie będziesz w stanie zauważyć żadnego spadku wydajności (w rzeczywistości może to być ułamek% wolniej jest kilka przypadków, ale nie zauważysz tego, chyba że przeprowadzasz testy porównawcze w celu przetestowania tego).

Jedynym haczykiem jest to, że niektóre funkcje wymagają procesora do obsługi wizualizacji, jednak każdy i7 to robi (afaik), więc nie powinno to stanowić problemu.

EDYTOWAĆ:

Xen zawiera własne mikrojądro, Debian nie jest potrzebny do jego uruchomienia, jedynym powodem, dla którego potrzebny byłby system linux, jest ponowna konfiguracja Xen, ponieważ program konfiguracyjny jest programem linux, który uruchamiasz na jednym z gości (gość to termin, którego używa Xen oznacza maszynę wirtualną). Możesz mieć tylko Linuksa, tylko Windowsa lub jedno i drugie działające w dowolnym momencie, ale będziesz potrzebował Linuksa, aby skonfigurować ustawienia Xena, więc wskazane jest pozostawienie małego linuksa działającego w tle, aby to zrobić, gdy zajdzie taka potrzeba.

Sprzęt może być obsługiwany na kilka sposobów, Xen zapewnia zestaw urządzeń wirtualnych, które pozwalają na używanie sprzętu przez wielu gości jednocześnie, takich jak karty sieciowe i karty dźwiękowe itp.

W przypadku sprzętu, który nie działa w ten sposób lub jest potrzebny tylko jednemu gościowi w tym czasie xen ma urządzenia tranzytowe, oznacza to, że możesz wybrać i wybrać w dowolnym momencie, który gość ma bezpośredni dostęp do sprzętu i może to zmienić w dowolnym momencie czas. Można to zrobić, aby dać konkretnemu gościowi prawdziwy dostęp do karty graficznej, jeśli konieczne jest przyspieszone renderowanie z dużą prędkością bez żadnego narzutu wirtualizacji .

Możliwe jest również, aby jeden gość bezpośrednio korzystał z karty graficznej w trybie tranzytowym, jak wyjaśniono powyżej, ale nadal przeglądaj innych za pomocą lokalnego protokołu VNC, który sprawia, że ​​ekrany innych gości pojawiają się w oknach (myśl jak wirtualne pudełko lub zdalny pulpit) podczas gdy ktoś ma bezpośrednią kontrolę nad kartą graficzną; lub oczywiście możesz po prostu przełączać się między ekranami gości, dając jeden bezpośredni dostęp na raz.

W przeciwieństwie do tego, co możesz założyć na temat wydajności tej konfiguracji, jest to w rzeczywistości jeden z niewielu sposobów na jednoczesne uruchomienie obu systemów operacyjnych przy jednoczesnym utrzymaniu efektywnej natywnej wydajności w obu systemach. Jeśli zrobisz trochę google, zauważysz, że wielu z nich odniosło sukces przy użyciu taka konfiguracja do obsługi wysokowydajnego automatu do gier lub innych wymagających systemów.

Rzeczywistość
źródło
Czy możesz polecić jakikolwiek przewodnik / przewodnik, aby skonfigurować wszystko tak, jak wspomniałeś? Chcę mieć system Gentoo Linux / Win7.
Gene Pavlovsky,
3

Zgodnie z moim doświadczeniem (pracuję również nad aplikacjami .Net podczas testowania fajnych rzeczy i rozwiązywania problemów z algo na Linuksie), podwójny rozruch będzie najlepszym wyborem.

Jak zauważyli inni, używanie maszyny wirtualnej jest czasem powolne i nie odpowiada, co może być uciążliwe.

Jeszcze jedną rzeczą byłoby wskazanie, że nie spiesz się i spróbuj uruchomić maszynę wirtualną i sprawdź, czy czujesz się dobrze.

Jeśli chodzi o zamówienie
1) najpierw zainstaluj system Windows, a następnie Linux (preferowany)
2) Najpierw zainstaluj system Linux, a następnie Windows (następnie musisz ponownie zainstalować program ładujący)

Jeszcze jedną rzeczą, którą chciałbym dodać, jest to, że w małych projektach .Net możesz używać nawet Linuksa za pomocą mono, więc nie ma potrzeby przełączania się między oknami w systemie Linux.

Pratik Singhal
źródło
1

Od ponad roku robię dużo zmian w programowaniu linux / Visual Studio, zaczynając od Visual Studio i przechodząc na Linuksa z czasem (lubię apt, zsh i vim!).

Zacząłem od systemu Windows obsługującego Ubuntu w VMWare Player, który działał całkiem dobrze, na pewno świetnie, jeśli przede wszystkim zajmujesz się programowaniem w Visual Studio i tylko czasami potrzebujesz jakiegoś pakietu tylko dla Linuksa. Z czasem odkryłem, że chciałem, aby moja praca była częściej wykonywana w środowisku Linux, a integracja VM miała kilka problemów, więc ...

Kiedy przestawiłem się głównie na programowanie na Linuksie (dużo AS3 w IntelliJ i niektóre węzły + python) z tylko sporadycznymi potrzebami dla Windows (strona ASP.NET), przerzuciłem to na Ubuntu obsługujące VirtualBox (używając disk2vhd -> .vdi z mój stary dysk Windows). Po sporej ilości majstrowania jestem całkiem zadowolony z tego, biorąc pod uwagę podział pracy, który zazwyczaj mam, ale jeśli wykonujesz jakąkolwiek poważną część programu Visual Studio, prawdopodobnie chcesz systemu Windows obsługującego Linux, VirtualBox lub VMWare Player powinno być w porządku.

Powinienem jednak zwrócić uwagę na kilka problemów: w przypadku standardowych sterowników wideo Ubuntu 14.04 AMD akceleracja VirtualBox sprawia, że ​​Visual Studio ~ 10-100x wolniej, więc wyłącz przyspieszenie kosztem powolności; i naprawdę chcesz działać na dysku SSD)

Simon Buchan
źródło
2
Sam fakt, że odpowiedzi z napisem „Nie masz wystarczającej ilości pamięci RAM” jest dla mnie dość szalony: sam VS jest 32-bitowy, więc nie może zużywać więcej niż 4 GB. Możesz mieć trochę powolności, jeśli korzystasz z pełnych wersji IIS z SQL Server, ale normalne wersje Express powinny być w porządku. Dysk SSD jest znacznie ważniejszy dla wydajności.
Simon Buchan