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 как виртуальную машину. Это возможно?

7 ответов7

12

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

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

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

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

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-mode 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) и просто иметь разные корневые разделы для нативных и гостевых машин.

8

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

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

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

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

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

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

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

5

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

4

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

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

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

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

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

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

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

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

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

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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .