Подвійний завантажувач або віртуальна машина для програміста 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 Bootloader. Є кілька десятків питань, як це зробити. Рішення про ефективність слід приймати самостійно
Рамхаунд,

Visual studio - це інтенсивне додаток, яке може або не може працювати належним чином у вашому віртуальному середовищі.
Френк Томас

Відповіді:


12

Інші висвітлювали решту вашого питання, але я бачу, що вони залишили цю частину без уваги:

Але якщо я завантажуюся в Linux, я можу завантажувати розділ Windows як віртуальна машина. Чи можливо це? І / або: Якщо я завантажуюся в Windows, я можу завантажувати розділ Linux як віртуальна машина. Чи можливо це?

Коротка відповідь - так.

Довга відповідь - так, але з кількістю застережень та наслідків.

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

Я вибрав VirtualBox для цього, але, наскільки я розумію, це має бути можливим і з VMWare.

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

Я обговорюю дивацтво, перш ніж розбиратись у деталях:

  • Переключення між Native-boot і VM-режимом Windows 7 викликало попередження Windows про те, що моя копія Windows не була справжньою. Залежно від вашої ліцензії, MS може вважати це порушенням ліцензії шляхом встановлення на двох частинах обладнання. Мені також потрібно було "відремонтувати" свою установку, оскільки багато драйверів низького рівня відрізняються від справжнього обладнання та апаратного забезпечення VM.

  • Щоразу, коли Windows Update запускався (або будь-яка інша операція вводу / виводу великого диска), мій жорсткий диск був роздроблений під навантаженням, і все на обох машинах стає собачим повільним. Переміщення кожної ОС на власний виділений жорсткий диск непогано вирішило цю проблему; використання твердотільного накопичувача також вирішило б це питання.

  • Чомусь Ubuntu час від часу не любив прокидатися після призупинення (можливо, 20% часу), що було еквівалентом жорсткого відключення для моєї Windows VM. Як результат, я би вимикав VM кожен вечір, перш ніж зупиняти господаря.

  • Мені довелося бути дуже обережним, щоб ніколи не намагатися змонтувати розділ Windows в Linux, щоб запобігти можливим пошкодженням / втратою даних. Я швидко додав правило udev, щоб запобігти цьому.

Добре, якщо це здається не надто поганим, ось деталі: Найкориснішою посиланням, яку я знайшов для цього, є цей блог: http://www.rajatarya.com/website/taming-windows-virtualbox-vm . Ось наступні кроки:

  • RTFM. Дійсно. Ви будете використовувати команди, які можуть пошкодити вашу файлову систему, якщо зробити це неправильно.

  • Знайдіть розділи.

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

  • Створіть MBR, щоб гість не намагався використовувати звичайний завантажувач.

  • Використовуйте внутрішню команду VirtualBox, щоб створити образ vmdk, який використовується для VM.

  • Створіть VM. Нехай він використовує створений вами vmdk.

  • Завантажте та відремонтуйте установку.

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


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

12

Я взагалі роблю навпаки, тобто моя домашня система - це машина Windows 7, і я запускаю різні аромати Linux як VM. Оскільки Linux може працювати досить добре з обмеженими ресурсами, це працює для мене, навіть якщо у мене є лише 4 ГБ оперативної пам’яті (пам’ятайте, це означає, що я запускаю один VM за один раз і, як правило, даю йому 1024 Мб оперативної пам’яті якнайбільше, щоб зберегти багато для Windows).

Ваші 8 Гб оперативної пам’яті повинні дозволяти вам легко запускати Windows VM. Я думаю, що головне питання тут - тип результатів, який ви хочете оцінити для свого розвитку. Я б не вагався покладатися на будь-які показники продуктивності / пропускної здатності для елементів, які ви розробляєте в VM (якщо тільки він не буде розміщений у аналогічному середовищі VM з тими ж специфікаціями по всій платі). Інакше вам слід добре піти.

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

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


Якщо ваш Linux обробляє 1 Гб оперативної пам’яті у вітчизняній машині, це означає, що ви можете легко запустити Windows у віртуальній машині та призначити також 3 ГБ VRAM. У випадку з питанням іде та сама теорія. Зберігайте 1 Гб для вашої базової ОС Linux і призначайте 7 ГБ для Windows. Насправді не важливо, що таке базова ОС та VM. Поки ви працюєте з обома, ви обмінюєтесь однаковими ресурсами. Для мене це насправді не має значення, обидві ОС із задоволенням запускаються в VM, і якщо у вас є ресурси для запуску обох, завжди приємно мати можливість переходити між ними без необхідності перезавантаження.
Jakke

Я віддаю перевагу VirtualBox для запуску своїх віртуальних машин, тому що я бачив серйозні витоки пам'яті у VMware Player AND Workstation (версія 10). Я говорю про> 4 ВМ, які працюють одночасно, хоча в системі з 32 ГБ оперативної пам’яті. Обидва продукти VW починають використовувати весь таран, поки він не виходить з ладу, тоді як VB щасливо працює тижнями без жодних проблем.
Jakke

8

Це залежить від того, як ти працюєш і як ти хочеш, щоб відчував себе ос .

Подвійне завантаження означає перезапуск та завантаження, якщо ви хочете змінити ОС, для цього потрібен час . Як ви є фрілансером, чи працюєте ви 8 годин прямо з проектом, не роблячи "своїх" речей ("ваші речі" були б ви під час завантаження Linux).

Якщо ви працюєте 8 годин поспіль в Windows, а потім проводите решту дня в Linux, використовуйте подвійне завантаження. Якщо ви працюєте 30 хвилин, а потім хочете щось зробити в Linux, перейдіть до роботи знову на 3 години, потім знову в Linux та ін. Тоді я б вибрав VM.

Якщо ви не впевнені, зробіть і те, і інше. Подвійне завантаження і коли у Windows працює VM. Ви побачите чітку різницю між обома, і ви віддасте перевагу одне над іншим.

Я особисто використовую лише vm для тестування нових дистрибутивів Linux, а іноді і підробленого сервера, коли розробляється (бути в змозі накрутити на vm - це безцінно і набагато менше клопоту, що робити це на вашому фактичному жорсткому диску.). VM також відстає і відчуває себе менш чуйним, мені потрібно, щоб мій оператор почувався чуйним і плавним, VM не вистачає в цій області. Тому я віддаю перевагу подвійному завантаженню.

Існує також проблема, коли справа стосується спільного використання файлів. Більше працювати над подвійним завантаженням (уявіть, як редагувати файл у завантажувальному вікні, потім завантажуватись у Linux, щоб зрозуміти, що ви пропустили рядок і вам доведеться перезавантажуватись у windows, кошмар!), Де на vm ви можете використовувати NFS або samba ділитися файлами між ОС в режимі реального часу, без проб.

Також про недостатньо барана, як сказав Абова, сміття. Я запускаю 4gb та VM в Windows8. Однак пам’ятайте, які ресурси потрібні вашому проекту.


Про спільний доступ до файлів: Я дуже, дуже, дуже сподіваюся, що все, над чим ви працюєте, знаходиться під контролем джерела, і в цьому випадку справа стає суперечкою. Речі, якими ви все ще хочете поділитися між Windows та Linux (тому що ... я не знаю), просто перейдіть на розділ NTFS - це можна прочитати і записати на обох ОС.
Voo

GIT 4 життя ofc! Я дуже багато приватного програмування, тому мені для цього не потрібна суть (я знаю, я знаю, що це добра практика, але я лінивий). Про НФТС, саме про це я говорив! проте завантаження між ОС вимагає часу. І в vm обидва файли доступні в режимі реального часу!
Карл Моррісон

Мій Ubuntu Partition автоматично монтує всі розділи Windows, тому принаймні файлову систему / файли Windows не слід видавати. Також їх є стороннім програмним забезпеченням для монтажу розділів EXT3 / 4 на windows.
kuldeep.kamboj

Ще одне питання - чи потрібно займатися розробкою Windows Phone. У такому випадку ви не можете запустити Visual Studio у віртуальному середовищі, оскільки емулятори WP самі є Hyper-V VM. Ви можете запустити Windows 8 із включеним клієнтом Hyper-V, Linux у VM під цим і все ще мати доступ до емуляторів для розробки WP.
rjrapson

5

Або як це? Вас цікавить .net / C #, то чому б не просто використовувати Mono в Linux? Його дуже кросова платформа в сенсі java.


Точно мої думки - я грав у створенні простої гри C # Othello з одним вікном у студії Visual, і вона працювала чудово, коли імпортувала проект та працювала на MonoDevelop.
NoBugs

3
Як застереження, Mono не підтримує проекти WPF. Тож якщо ОП прагне розробити програми WPF, це не спрацює. Крім того, я був великим шанувальником Mono, але оскільки відмовився від проекту Novell і вибору Ксамарін для вирішення нового стану речей, я трохи обережно ставлюся до цього більше зусиль.
Болук Папукуоглу

1
Я розглядав можливість використання моно, і обов'язково спробую це. Але можуть виникнути проблеми, коли інші члени команди використовують Visual Studio?
кодап

Ви б справді пропустили .NET весело, якщо не використовуєте Visual Studio.
demonkoryu

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

4

Особисто я мав багато позитивних вражень про те, як брати на півдорозі, використовуйте гіпервізор, такий як Xen, тоді ви можете мати Linux і Windows, які працюють під легким гіпервізором мікроядра; , що дозволяє легко перерозподіляти ресурси між ними в будь-який час.

Це майже відповідає вашому налаштуванню мрії, оскільки ви можете в будь-який час можете самостійно завантажувати або вимикати дві ОС, щоб перерозподілити ресурси на інші, і ви не зможете помітити жодне враження від продуктивності (насправді це може бути на частку повільніше є деякі випадки, але ви цього не помітите, якщо не будете спеціально оцінювати це тестування).

Єдина уловка полягає в тому, що деякі функції вимагають, щоб ваш процесор підтримував візуалізацію, проте кожен i7 робить (afaik), тому це не повинно бути проблемою для вас.

Редагувати:

Xen містить свій власний мікрокерель, Debian не потрібен для його запуску. Єдина причина, якій потрібна система Linux, - це перенастроювати Xen, оскільки програма конфігурації - це програма Linux, яку ви запускаєте на одного з гостей (гість - термін, який Xen використовує означати ВМ). У вас може бути тільки Linux, просто Windows або обидва запущені в будь-який час, але для налаштування параметрів Xen вам знадобиться Linux, тому для цього потрібно дозволити залишити невеликий Linux, який працює у фоновому режимі.

З обладнанням можна поводитися кількома способами, Xen пропонує набір віртуальних пристроїв, які дозволяють використовувати частину обладнання відразу декількома гостями, такі як мережеві карти та звукові карти тощо.

Для апаратних засобів, які не можуть працювати таким чином або потрібні лише одному гостю за раз, у xen є прохідні пристрої, це означає, що ви можете обрати і вибрати в будь-який час, який гість має прямий доступ до обладнання та може перемикати це на будь-який час. Це можна зробити, щоб надати конкретному гостю справжній доступ до відеокарти, якщо вам потрібно швидкісне прискорене візуалізація без будь-яких накладних віртуалізації .

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

На відміну від того, що ви можете припустити про ефективність цього налаштування, насправді це один з небагатьох способів одночасно запустити обидві ОС, одночасно підтримуючи ефективність в обох системах, якщо ви зробите якісь поглинання, ви знайдете, що багато хто мали успіх у використанні така установка для запуску ігрового автомата високої продуктивності або інших вимогливих систем.


Чи можете ви порадити будь-який посібник / посібник, щоб налаштувати все так, як ви згадали? Я хочу мати систему gentoo linux / win7.
Гена Павловського

3

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

Як зазначали інші, використання ВМ відчуває себе повільно і невідповідально, що може бути болем.

Ще одне, що я хотів би зазначити, що це займає ваш час і спробуйте запустити VM і перевірити, чи вам це зручно.

Що стосується порядку
1) спочатку встановіть windows, а потім linux (бажаний)
2) спочатку встановіть linux, а потім windows (тоді вам доведеться перевстановити завантажувач)

Ще одне, що я хотів би додати, це те, що для малих проектів .Net ви можете використовувати навіть Linux за допомогою моно, тому немає необхідності перемикатися з Windows на Linux.


1

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

Я почав з Windows, що розмістив Ubuntu в VMWare Player, який працював досить добре, безумовно, чудово, якщо ви в першу чергу займаєтеся розробкою Visual Studio і просто час від часу вам потрібен якийсь пакунок лише для linux чи будь-чого іншого. З часом я виявив, що хотів, щоб моя робота частіше знаходилася в середовищі Linux, і інтеграція VM мала кілька больових моментів, тому ...

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

Мені слід зазначити кілька больових моментів: при стандартних відеодрайверах Ubuntu 14.04 AMD 3D-прискорення VirtualBox робить прискорення Visual Studio ~ 10-100x повільніше, тому відключіть прискорення ціною деякої млявості; і ти дуже хочеш працювати на SSD)


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