Двойная загрузка или виртуальная машина для программиста Linux, которая занимается разработкой Visual Studio?


26

Сценарий:

  • Я - независимый разработчик программного обеспечения, который в основном разрабатывает для Linux (Python, MySQL, MongoDB и т. Д.)
  • Мой рабочий компьютер - ноутбук Lenovo с процессором i7 и 8 ГБ оперативной памяти. Большой HD + 128 ГБ SSD. ОС Ubuntu Linux

Я могу получить некоторые проекты .NET / C # в ближайшем будущем, поэтому я ищу некоторые рекомендации по следующим вопросам:

  • Стоит ли использовать решение с двойной загрузкой или использовать виртуальные машины для Windows?
  • Если я использую двойную загрузку: какова рекомендуемая последовательность установки? Сначала Windows или сначала Linux? (Я смотрю на полную переустановку Ubuntu, чтобы получить последнюю версию LTS, чтобы я мог начать все заново)
  • Если я перейду к VM: как VMWare Workstation и VirtualBox сравнивают производительность?
  • Установка моей мечты, вероятно, будет следующей:
    • Двойная загрузка
    • Но если я загружаюсь в Linux, я могу загрузить раздел Windows как виртуальную машину. Это возможно?
    • И / или: если я загружаюсь в Windows, я могу загрузить раздел Linux как виртуальную машину. Это возможно?

5
Вы всегда должны делать сначала Windows, чем Ubuntu, так как вы хотите, чтобы Grub заменил цепную загрузку загрузчика Windows. Есть несколько десятков вопросов о том, как это сделать. Решения о производительности должны быть приняты самим
Ramhound

Visual studio - это интенсивное приложение, которое может работать или не работать достаточно хорошо в вашей виртуальной среде.
Фрэнк Томас

Ответы:


12

Другие рассмотрели остальную часть вашего вопроса, но я вижу, что они оставили эту часть без внимания:

Но если я загружаюсь в Linux, я могу загрузить раздел Windows как виртуальную машину. Это возможно? И / или: если я загружаюсь в Windows, я могу загрузить раздел Linux как виртуальную машину. Это возможно?

Краткий ответ: да.

Длинный ответ - да, но с множеством предостережений и последствий.

До января этого года (когда у нас появились новые машины), мой рабочий компьютер был настроен либо на двойную загрузку, либо на использование Linux в качестве хоста для виртуальной машины Windows 7, которая напрямую обращалась к разделу Windows. Я никогда не пытался использовать Windows в качестве хоста для виртуальной машины Linux с прямым диском, но это также возможно. Мой компьютер использовал устаревшую версию BIOS / MBR, я не уверен, как это сделать, если вы используете UEFI / GPT.

Я выбрал VirtualBox, но, насколько я понимаю, это также возможно с VMWare.

Производительность была совершенно приемлемой для моих целей; Я дал Windows 1 процессорное ядро, 2 ГБ памяти, 1 монитор, и я не помню, сколько видеопамяти. Виртуальная машина была способна воспроизводить видео и работать с моим Java-приложением GUI и многими веб-сайтами с богатым контентом.

Я буду обсуждать странности, прежде чем вдаваться в детали:

  • Переключение между Native-boot и VM-режимом Windows 7 вызвало предупреждение Windows о том, что моя копия Windows не была подлинной. В зависимости от вашей лицензии MS может посчитать это нарушением лицензии, установив на нее два аппаратных элемента. Мне также нужно было «починить» мою установку, потому что многие низкоуровневые драйверы отличаются для реального оборудования и «оборудования» виртуальной машины.

  • Каждый раз, когда запускался Центр обновления Windows (или любая другая операция ввода-вывода с большим диском), мой жесткий диск ломался под нагрузкой, и все на обеих машинах становилось все медленнее. Перемещение каждой ОС на отдельный жесткий диск решило эту проблему; Использование твердотельного накопителя также решило бы проблему.

  • По какой-то причине Ubuntu иногда не нравилось просыпаться после приостановки (возможно, в 20% случаев), что было эквивалентно жесткому выключению моей виртуальной машины Windows. В результате я выключал виртуальную машину каждый вечер перед тем, как приостановить работу хоста.

  • Я должен был быть очень осторожным, чтобы никогда не пытаться смонтировать раздел Windows в Linux, чтобы предотвратить возможное повреждение / потерю данных. Я быстро добавил правило udev, чтобы предотвратить это.

Хорошо, если это не звучит слишком плохо, вот подробности: Наиболее полезная ссылка, которую я нашел для этого, - это блог: http://www.rajatarya.com/website/taming-windows-virtualbox-vm . Вот краткие шаги:

  • RTFM. В самом деле. Вы будете использовать команды, которые могут привести к повреждению вашей файловой системы, если вы сделали неправильно.

  • Найдите разделы.

  • Измените разрешения для ваших разделов (в качестве альтернативы вы можете загрузить виртуальную машину с помощью sudo, но тогда любые файлы, созданные на общем жестком диске хоста / гостя, будут принадлежать пользователю root).

  • Создайте MBR, чтобы гость не пытался использовать обычный загрузчик.

  • Используйте внутреннюю команду VirtualBox для создания образа vmdk, который будет использоваться для виртуальной машины.

  • Создайте ВМ. Пусть он использует созданный вами vmdk.

  • Загрузите и восстановите вашу установку.

Я ожидал бы найти много таких же проблем при использовании хоста Windows, но Linux, вероятно, справился бы с другим оборудованием более элегантно. Хотя на самом деле может быть проще использовать разделы общего / домашнего (и, возможно, / opt) и просто иметь разные корневые разделы для нативных и гостевых машин.


В течение многих лет я использовал подход с использованием виртуальных машин на компьютерах Mac и обнаружил, что даже SSD не справляется с этим самостоятельно. Вам нужно разделить хост и гость на совершенно разных дисках, чтобы предотвратить привязку системы к вводу / выводу. Хотя SSD действительно улучшает ситуацию, это ничто по сравнению с использованием второго диска (и если вы оба SSD, вы летите!)
Кит Джексон,

12

Обычно я делаю обратное: моя домашняя система - это машина с Windows 7, и я использую различные версии Linux как виртуальные машины. Поскольку Linux может функционировать весьма неплохо при ограниченных ресурсах, это работает для меня, даже если у меня есть только 4 ГБ ОЗУ (учтите, это означает, что я запускаю по одной виртуальной машине за раз и обычно выделяю 1024 МБ ОЗУ максимум для сохранения большого количества памяти). для Windows).

8 ГБ ОЗУ позволят вам довольно легко запускать виртуальную машину Windows. Я думаю, что единственный большой вопрос здесь - это тип результатов, которые вы захотите измерить для своего развития. Я не хотел бы полагаться на любые показатели производительности / пропускной способности для элементов, которые вы разрабатываете на ВМ (если только он не будет развернут в аналогичной среде ВМ с такими же спецификациями по всем направлениям). В противном случае вам должно быть хорошо идти.

И чтобы затронуть комментарии в другой ветке, естественно, если вы будете знать, что вы будете разрабатывать приложения, требующие большого количества ресурсов, тогда оптимизация для этой цели была бы способом (так что в этих случаях двойная загрузка, безусловно, будет предпочтительнее использования виртуальных машин).

Я использовал как VMWare, так и VirtualBox, и я не видел ни одного реального снижения производительности с использованием ни того, ни другого. Я не дошел до уровня сравнительного анализа виртуальных машин внутри, просто я просто не заметил какого-либо негативного влияния ни от одной из платформ (все еще использую VirtualBox дома, а VMware на работе).


Если ваш Linux обрабатывает 1 ГБ ОЗУ на ВМ, это означает, что вы можете легко запустить Windows на ВМ и также назначить 3 ГБ видеопамяти. В случае вопроса, та же теория идет. Оставьте 1 ГБ для вашей базовой ОС Linux и назначьте 7 ГБ для Windows. Неважно, что такое базовая ОС и виртуальная машина. Пока вы используете оба, вы используете одни и те же ресурсы. Для меня это не имеет большого значения, обе ОС рады работать на виртуальной машине, и если у вас есть ресурсы для запуска обеих, всегда приятно иметь возможность переключаться между ними без перезагрузки.
Jakke

Я предпочитаю VirtualBox для запуска своих виртуальных машин, потому что я видел серьезные утечки памяти в VMware Player AND Workstation (версия 10). Я говорю о> 4 виртуальных машинах, работающих одновременно, в системе с 32 ГБ ОЗУ. Оба продукта VW начинают использовать все оперативной памяти, пока он не выходит из строя, в то время как VB счастливо работает в течение нескольких недель без каких-либо проблем.
Jakke

8

Это зависит от того, как вы работаете и как вы хотите, чтобы ОС чувствовала .

Двойная загрузка означает перезагрузку и загрузку, если вы хотите сменить ОС, это занимает время . Будучи фрилансером, вы работаете 8 часов подряд с проектом, не занимаясь "своими" вещами ("вашими вещами" будет вы при загрузке Linux).

Если вы работаете 8 часов подряд в Windows, а затем проводите остаток дня в Linux, используйте двойную загрузку. Если вы работаете 30 минут, а затем хотите что-то сделать в Linux, переключитесь на работу снова на 3 часа, затем снова на Linux и т. Д. Затем я бы выбрал VM.

Если вы не уверены, сделайте оба. Двойная загрузка и когда в Windows запустить виртуальную машину. Вы увидите четкую разницу между обоими, и вы будете предпочитать одно над другим.

Лично я использую виртуальную машину только для тестирования новых дисков linux и иногда фальшивого сервера во время раздачи (возможность испортить виртуальную машину бесценна и намного менее хлопотна, чем выполнение этого на вашем реальном жестком диске). VM также отстает и чувствует себя менее отзывчивым, мне нужно, чтобы моя операционная система чувствовала себя отзывчивой и гладкой, VM не хватает в этой области. Поэтому я предпочитаю двойную загрузку.

Существует также проблема, когда дело доходит до обмена файлами. Это большая работа для двойной загрузки (представьте, что редактирование файла в загрузке Windows, а затем загрузка в Linux только для того, чтобы понять, что вы пропустили строку и вам нужно перезагрузиться в windows, кошмар!), Где на виртуальной машине вы можете использовать NFS или samba для обмена файлами между ОС в режиме реального времени, никаких проб.

Также о недостаточном баране, как сказал Абоба, мусор, я говорю. Я запускаю 4 ГБ и ВМ в Windows8. Однако помните о том, какие ресурсы нужны вашему проекту.


Об обмене файлами: я действительно, действительно, очень надеюсь, что у вас есть все, над чем вы работаете, под контролем исходного кода, и в этом случае вопрос становится спорным. Вещи, которые вы все еще хотите разделить между Windows и Linux (потому что ... я не знаю), просто идут в раздел NTFS - который может быть прочитан и записан обеими ОС.
Во

GIT 4 life ofc! Я много занимаюсь частным программированием, поэтому мне не нужен git для этого (я знаю, что знаю, что это хорошая практика, но я ленив). О NFTS, это было именно то, что я говорил! Однако загрузка между ОС требует времени. И в вм оба файла доступны в режиме реального времени!
Карл Моррисон

Мой раздел Ubuntu автоматически монтирует все разделы Windows, поэтому по крайней мере доступ к файловой системе / файлам Windows не должен быть проблемой. Также это стороннее программное обеспечение для монтирования разделов EXT3 / 4 на Windows.
kuldeep.kamboj

Еще один вопрос, хотите ли вы заниматься разработкой Windows Phone. В этом случае вы не можете запустить Visual Studio в виртуальной среде, поскольку эмуляторы WP сами являются виртуальными машинами Hyper-V. Вы можете запустить Windows 8 с включенным клиентом Hyper-V, Linux под виртуальной машиной под этим и при этом иметь доступ к эмуляторам для разработки WP.
Rjrapson

5

Или как насчет этого. Вы заинтересованы в .net / C #, так почему бы просто не использовать Mono на Linux? Его очень кросс-платформенный в том смысле, как Java.


Именно мои мысли - я играл с созданием простой однооконной игры на C # Othello в Visual studio, и она отлично работала при импорте проекта и запуске в MonoDevelop.
NoBugs

3
В качестве предупреждения, Mono не поддерживает проекты WPF. Так что, если OP хочет разрабатывать приложения WPF, это не сработает. Кроме того, я был большим поклонником Mono, но с тех пор, как Novell отказалась от проекта и выбрала Xamarin для управления новым положением дел, я немного осторожнее вкладываю в него больше усилий.
Болук Папуккуоглу

1
Я подумал об использовании моно, и обязательно попробую. Но могут быть проблемы, когда другие члены команды используют Visual Studio?
Codeape

Вы бы действительно упустили удовольствие .NET, если вы не используете Visual Studio.
демонкорю

3
@codeape В Mono много неподдерживаемых функций и библиотек; это, вероятно, не является серьезным вариантом, если ваш клиент не заинтересован в нацеливании на Mono.
Кейси

4

Лично у меня было много положительного опыта на полпути, использую гипервизор, такой как Xen , и Linux, и Windows могли работать под управлением легкого гипервизора с микроядром, ни тот, ни другой не испытывали значительного снижения производительности, и эта конфигурация гораздо более гибкая. , что позволяет вам легко перераспределять ресурсы между ними в любое время.

Это почти соответствует упомянутой настройке вашей мечты, так как вы можете в любое время независимо загружать или выключать две ОС для перераспределения ресурсов на другую, и вы не сможете заметить какого-либо снижения производительности (в действительности это может быть на несколько% медленнее). В некоторых случаях, но вы не заметите это, если не будете тестировать специально для этого).

Единственная особенность - некоторые функции требуют, чтобы ваш процессор поддерживал визуализацию, однако каждый i7 поддерживает (afaik), поэтому это не должно быть проблемой для вас.

РЕДАКТИРОВАТЬ:

Xen содержит собственное микроядро, Debian не нужен для его запуска, единственная причина, по которой потребуется система Linux, - это перенастройка Xen, поскольку программа конфигурирования - это программа linux, которую вы запускаете на одном из гостей (гостем является термин, используемый Xen означать ВМ). Вы можете в любой момент запустить только linux, только windows или оба, но вам нужно будет запустить linux, чтобы настроить параметры Xen, поэтому рекомендуется оставить небольшой linux работающим в фоновом режиме, чтобы делать это при необходимости.

С аппаратным обеспечением можно работать несколькими способами. Xen предоставляет набор виртуальных устройств, которые позволяют одновременно использовать несколько устройств одновременно, например сетевые карты, звуковые карты и т. Д.

Для оборудования, которое не может работать таким образом или требуется только одному гостю в то время, когда у xen есть транзитные устройства, это означает, что вы можете выбрать и выбрать в любое время, какой гость имеет прямой доступ к части оборудования и может переключать это в любое время. время. Это можно сделать, чтобы предоставить конкретному гостю истинный доступ к графической карте, если вам требуется высокоскоростной ускоренный рендеринг без каких-либо накладных расходов на виртуализацию. .

Также возможно, чтобы один гость напрямую использовал графическую карту в режиме сквозного доступа, как объяснено выше, но все равно просматривал других, используя локальный VNC-подобный протокол, который заставляет экраны других гостей появляться в окнах (например, виртуальный ящик или удаленный рабочий стол) в то время как один имеет прямой контроль над видеокартой; или, конечно, вы можете просто переключаться между экранами гостей, предоставляя один прямой доступ за раз.

Вопреки тому, что вы можете предположить об эффективности этой установки, это на самом деле один из немногих способов одновременного запуска обеих операционных систем, при этом поддерживая эффективную производительность обеих систем. Если вы выполните поиск в Google, вы обнаружите, что многие добились успеха, используя такая настройка для запуска высокопроизводительного игрового автомата или других требовательных систем.


Можете ли вы порекомендовать какое-нибудь руководство / руководство по настройке, как вы упоминали? Я хочу иметь систему Gentoo Linux / Win7.
Ген Павловский

3

Согласно моему опыту (я также работаю над приложениями .Net, пока тестирую классные вещи и решаю проблемы с альго) в Linux, двойная загрузка будет вашим лучшим выбором.

Как уже отмечали другие, использование виртуальной машины иногда кажется медленным и не отвечает, что может быть болью.

Еще одна вещь, на которую я бы хотел обратить ваше внимание: вы не пожалеете времени и попробуйте запустить виртуальную машину и убедитесь, что она вам удобна.

Что касается порядка
1) сначала установите Windows, а затем Linux (предпочтительно)
2) Сначала установите Linux, а затем Windows (затем вы должны переустановить загрузчик)

Еще одна вещь, которую я хотел бы добавить, - это то, что для небольших проектов .Net вы можете использовать даже Linux с использованием Mono, поэтому нет необходимости переключаться между Windows и Linux.


1

Я занимаюсь разработкой Linux / Visual Studio для переключателей чуть более года, начиная с Visual Studio и постепенно переходя на Linux (мне нравятся apt, zsh и vim!).

Я начал с Windows, размещающей Ubuntu в VMWare Player, которая работала довольно хорошо, что, безусловно, замечательно, если вы в основном занимаетесь разработкой для Visual Studio и просто время от времени нуждаетесь в каком-то пакете только для Linux или чем-то еще. Со временем я обнаружил, что хочу, чтобы моя работа была в среде Linux чаще, а интеграция с ВМ имела несколько болевых точек, так что ...

Поскольку я переключился в основном на разработку Linux (множество AS3 в IntelliJ и некоторые ноды + python) с редкими потребностями в Windows (сайт ASP.NET), я переключил это на Ubuntu, где размещается VirtualBox (используя disk2vhd -> .vdi из мой старый диск с windows). После большого количества беспокойств я вполне доволен этим, учитывая тот разделение работы, которое у меня обычно есть, но если вы занимаетесь каким-либо серьезным делом в Visual Studio, вам, вероятно, понадобится Windows, на которой размещается Linux, либо VirtualBox, либо VMWare Player должны подойти.

Однако следует отметить несколько болевых точек: со стандартными видеодрайверами AMD для Ubuntu 14.04 3D-ускорение VirtualBox делает Visual Studio примерно в 10-100 раз медленнее, поэтому отключите ускорение за счет некоторой медлительности; и вы действительно хотите работать на SSD)


2
Просто отметить, что ответы, говорящие «У вас недостаточно оперативной памяти», звучат для меня довольно безумно: сама VS 32-битная, поэтому она не может использовать более 4 ГБ. У вас может быть некоторая медлительность, если вы используете полные выпуски IIS с SQL Server, но обычные версии Express должны быть хорошими. SSD гораздо важнее для производительности.
Симон Бьюкен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.