일부 비주얼 스튜디오 개발을 수행하는 리눅스 프로그래머 용 듀얼 부팅 또는 가상 머신?


26

시나리오 :

  • 저는 주로 리눅스 (Python, MySQL, MongoDB 등)에서 개발하는 프리랜서 소프트웨어 개발자입니다.
  • 내 작업 컴퓨터는 i7 프로세서 및 8GB RAM이 장착 된 Lenovo 노트북입니다. Big HD + 128GB SSD. OS는 우분투 리눅스입니다.

가까운 미래에 .NET / C # 프로젝트가 생길 수도 있으므로 다음과 같은 지침을 찾고 있습니다.

  • 듀얼 부팅 솔루션을 사용하거나 Windows 용 가상 컴퓨터를 사용해야합니까?
  • 듀얼 부팅으로 이동하는 경우 권장되는 설치 순서는 무엇입니까? Windows를 먼저 사용하거나 Linux를 먼저 사용 하시겠습니까? (나는 어쨌든 최신 LTS를 얻기 위해 완전한 우분투 재설치를 찾고있어 모든 것을 새로 설치하기 시작할 수있다)
  • VM웨어 : VMWare Workstation과 VirtualBox는 성능면에서 어떻게 비교됩니까?
  • 나의 꿈 설치는 아마 다음과 같을 것이다 :
    • 이중 부팅
    • 하지만 리눅스로 부팅하면 윈도우 파티션을 가상 머신으로 부팅 할 수 있습니다. 이것이 가능한가?
    • 그리고 / 또는 : Windows로 부팅하면 Linux 파티션을 가상 시스템으로 부팅 할 수 있습니다. 이것이 가능한가?

5
Grub이 체인 부트를 Windows 부트 로더로 대체하기를 원하므로 항상 우분투에서 Windows를 먼저 사용해야합니다. 그것을하는 방법에 관한 몇 가지 질문이 있습니다. 성과 결정은 스스로 이루어져야합니다.
Ramhound

Visual Studio는 강렬한 응용 프로그램이므로 가상 환경에서 충분히 실행되지 않을 수도 있습니다.
Frank Thomas

답변:


12

나머지는 당신의 질문의 나머지 부분을 다루었지만, 나는 그들이이 부분을 언급하지 않은 채로 남아있는 것을 본다.

하지만 리눅스로 부팅하면 윈도우 파티션을 가상 머신으로 부팅 할 수 있습니다. 이것이 가능한가?   그리고 / 또는 : Windows로 부팅하면 Linux 파티션을 가상 시스템으로 부팅 할 수 있습니다. 이것이 가능한가?

짧은 대답은 '예'입니다.

긴 대답은 예이지만 몇 가지주의 사항과 함축적 의미가 있습니다.

금년 1 월 (새 컴퓨터가 출시 될 때까지), 직장 컴퓨터를 이중 부팅으로 구성하거나 Windows 파티션에 직접 액세스하는 Windows 7 VM의 호스트로 Linux를 사용했습니다. 필자는 Windows를 직접 디스크 Linux VM의 호스트로 사용하려고 애 쓰지 않았습니다.하지만 가능합니다. 내 컴퓨터는 레거시 BIOS / MBR을 사용 했으므로 UEFI / GPT를 사용하는 경우이 작업을 수행하는 방법을 잘 모릅니다.

VirtualBox를 사용하여 VirtualBox를 선택했지만 VMWare에서도 가능하다는 것을 알고 있습니다.

성과는 내 목표를 위해 완벽하게 받아 들일 수 있었다. 나는 Windows 1 CPU 코어, 2GB 메모리, 1 모니터를 주었고 비디오 메모리의 양을 기억하지 못합니다. VM은 비디오를 재생하고 Java GUI 응용 프로그램 및 많은 리치 컨텐츠 웹 사이트에서 작업 할 수있었습니다.

세부 사항에 들어가기 전에 나는 이상한 점을 이야기 할 것이다.

  • 기본 부팅 모드와 VM 모드를 전환하면 Windows 7이 Windows의 정품이 아님을 경고합니다. 라이선스에 따라 MS는 두 가지 하드웨어에 설치하여 라이선스 위반으로 간주 할 수 있습니다. 또한 실제 하드웨어와 VM "하드웨어의 경우 많은 저수준 드라이버가 다르기 때문에 설치를"수리해야했습니다. "

  • Windows Update가 실행될 때마다 (또는 다른 대형 디스크 I / O 작업) 하드 디스크가로드 아래로 눌려져 두 시스템의 모든 것이 느리게되었습니다. 각 OS를 전용 하드 드라이브로 옮기면이 문제가 잘 해결됩니다. 솔리드 스테이트 드라이브를 사용하면이 문제를 해결할 수 있습니다.

  • 어떤 이유로 우분투는 가끔 내 Windows VM의 하드 전원 끄기와 동일한 중단 시간 (아마도 20 %) 후에 깨어나기를 좋아하지 않았습니다. 결과적으로 호스트를 일시 중단하기 전에 매일 VM을 종료합니다.

  • 가능한 데이터 손상 / 손실을 방지하기 위해 Windows 파티션을 Linux에 마운트하지 않도록 조심해야했습니다. 나는 이것을 막기 위해 빨리 udev 규칙을 추가했다.

좋아요, 그렇게 나쁘지 않다면 여기에 자세한 내용이 있습니다. 가장 유용한 참고 자료는이 블로그입니다. http://www.rajatarya.com/website/taming-windows-virtualbox-vm . 요약 된 단계는 다음과 같습니다.

  • RTFM. 정말. 잘못된 경우 파일 시스템을 손상시킬 수있는 명령을 사용하게됩니다.

  • 파티션을 찾으십시오.

  • 파티션에 대한 권한을 변경하십시오 (또는 sudo를 사용하여 VM을 부팅 할 수 있지만 호스트 / 게스트 공유 드라이브에 생성 된 모든 파일은 루트가 소유하게됩니다).

  • 게스트가 일반 부트 로더를 사용하지 않도록 MBR을 만듭니다.

  • VirtualBox 내부 명령을 사용하여 VM에 사용할 vmdk 이미지를 만듭니다.

  • VM을 만듭니다. 방금 만든 vmdk를 사용하십시오.

  • 부팅하고 설치를 복구하십시오.

Windows 호스트를 사용하여 여러 가지 동일한 문제를 발견 할 것으로 기대되지만 리눅스는 다른 하드웨어를보다 우아하게 처리합니다. 공유 된 / home (그리고 어쩌면 / opt) 파티션을 사용하고 네이티브 대 게스트 시스템을위한 다른 루트 파티션을 갖기는 정말 쉽습니다.


나는 수년간 맥에서 VM 접근법을 사용 해왔다. SSD조차도 자체적으로 그것을 줄이지는 않는다. 시스템이 I / O 경계에 빠지지 않도록 완전히 다른 드라이브에서 호스트와 게스트를 분리해야합니다. SSD가 두 번째 드라이브를 사용하는 것과 비교하면 아무 것도 아니지만 SSD를 사용하면 두 가지 SSD 모두를 사용할 수 있습니다.
Keith Jackson

12

나는 반대로 일반적으로, 내 홈 시스템은 Windows 7 머신이고 VM의 다양한 리눅스를 실행합니다. 리눅스는 제한된 리소스로 아주 ​​잘 작동 할 수 있기 때문에 4GB의 RAM 만 가지고도이 기능을 사용할 수 있습니다 (한 번에 하나의 VM을 실행하여 일반적으로 최대 1024MB의 RAM을 제공한다는 것을 기억하십시오) Windows 용).

8GB의 RAM을 사용하면 Windows VM을 아주 쉽게 실행할 수 있습니다. 나는 여기에서 유일한 큰 질문은 당신이 당신의 발달에 대해 측정하고자하는 결과의 유형이라고 생각합니다. VM에서 개발하는 항목의 성능 / 처리량 메트릭에 의존하는 것을 주저하고 있습니다 (동일한 사양의 VM 환경에 배포하지 않는 한). 그렇지 않으면 당신은 잘 가야합니다.

그리고 다른 스레드의 주석을 만지기 위해 자연스럽게 많은 양의 자원이 필요한 응용 프로그램을 개발할 것이라는 것을 알게되면 그 목적에 맞게 최적화 할 수 있습니다 (이러한 경우 이중 부팅은 확실합니다. VM을 사용하는 것보다 바람직 함).

나는 VM웨어와 버추얼 박스를 모두 사용했으며, 실제 성능을 보지 못했습니다. 나는 VM을 벤치마킹 할 수있는 범위까지 가지 않았으며, 어느 플랫폼에서든 부정적인 영향을 전혀 느끼지 못했습니다. (여전히 VirtualBox를 집에서 사용하고 VMware는 직장에서 사용합니다.)


Linux에서 VM의 1GB RAM을 처리하는 경우 VM에서 Windows를 쉽게 실행하고 3GB의 VRAM을 할당 할 수 있습니다. 질문의 경우, 같은 이론이 적용됩니다. 기본 Linux OS 용으로 1GB를 유지하고 Windows에 7GB를 할당하십시오. 기본 OS와 VM이 실제로 무엇인지는 중요하지 않습니다. 두 가지를 모두 실행하는 한 동일한 리소스를 공유하고 있습니다. 내게는별로 중요하지 않습니다. 두 OS 모두 VM에서 실행되기 때문에 기꺼이 수행 할 수 있습니다. 둘 다 실행할 수있는 리소스가있는 경우 재부팅하지 않아도 OS간에 쉽게 전환 할 수 있습니다.
Jakke

VMware Player 및 Workstation (버전 10)에서 심각한 메모리 누수가 발생했기 때문에 VirtualBox를 사용하여 내 VM을 실행하는 것이 좋습니다. 32GB RAM이있는 시스템에서 & gt; 동시에 4 개의 VM을 실행 중입니다. VW 제품 모두 충돌이 발생할 때까지 모든 램을 사용하기 시작합니다. VB는 아무런 문제없이 몇 주 동안 행복하게 운영됩니다.
Jakke

8

그것은 당신이 어떻게 작업 당신이 어떻게 os를 원하는지 느낌 .

듀얼 부팅이란 OS를 바꾸고 싶다면 재시작하고 부팅하는 것을 의미합니다. 시각 . 프리랜서로서, "당신의 물건"을하지 않고도 프로젝트로 8 시간 동안 일할 수 있습니까?

Windows에서 8 시간 연속으로 작업 한 다음 나머지 시간을 Linux에서 사용하는 경우 이중 부팅을 사용하십시오. 30 분을 일하면서 리눅스에서 무엇인가하고 싶다면 3 시간 동안 다시 작동하고 다시 리눅스로 전환하십시오. 그런 다음 VM을 선택합니다.

둘 다 잘 모르는 경우. 듀얼 부팅 및 Windows에서 VM을 실행할 때. 당신은 둘 다 명확한 차이를 볼 것이고 당신은 다른 하나를 선호 할 것입니다.

필자는 개인적으로 새로운 Linux dists를 시험하기 위해 VM을 사용하고 때로는 devloping 할 때 가짜 서버를 사용합니다 (VM을 망칠 수 있다는 것은 귀중한 것이며 실제 하드 드라이브에서 그렇게하는 것보다 훨씬 덜 귀찮습니다). VM도 느려지고 반응이 느려지므로 응답 성이 좋고 부드럽게 느껴지려면 VM이 부족합니다. 그래서 나는 이중 부팅을 선호합니다.

또한 파일 공유와 관련하여 문제가 있습니다. 듀얼 부팅에서 공유하는 작업이 더 많습니다. (Windows 부팅에서 파일을 편집 한 다음 리눅스에서 부팅하면 라인을 놓치고 Windows로 다시 부팅해야합니다. 악몽입니다!) VM에서 NFS 또는 Samba를 사용할 수있는 곳 os 사이의 파일을 실시간으로 공유합니다.

또한 Aboba가 말한만큼 충분한 숫양에 관해서는, 쓰레기가 말합니다. 나는 Windows8에서 4GB와 VM을 돌린다. 프로젝트에 필요한 리소스가 무엇인지 기억하십시오.


파일 공유에 관하여 : 나는 정말, 정말로, 당신이 근원 관리하에 일하는 모든 것을 가지고 있기를 바란다. Windows와 Linux간에 (NTFS 파티션으로) 갈 수 있기 때문에 두 OS 모두에서 읽고 쓸 수 있습니다.
Voo

GIT 4 life ofc! 나는 개인적인 프로그래밍을 많이하기 때문에 자식을 필요로하지 않는다 (나는 좋은 습관을 알고 있지만 게으른 편이다). NFTS에 관해, 그것은 내가 말하고 있었던 정확하게 것이었다! 그러나 OS 사이의 부팅에는 시간이 필요합니다. 그리고 VM에서 두 파일은 실시간으로 사용할 수 있습니다!
Karl Morrison

내 우분투 파티션은 자동으로 Windows의 모든 파티션을 마운트하므로 최소한의 액세스 파일 시스템 / 파일은 문제가되지 않습니다. 또한 그들은 창문에 EXT3 / 4 파티션을 마운트하는 제 3 자 소프트웨어입니다.
kuldeep.kamboj

또 다른 고려 사항은 Windows Phone 개발을 수행 할 것인지 여부입니다. 이 경우 WP 에뮬레이터 자체가 Hyper-V VM이므로 Visual Studio를 가상 환경에서 실행할 수 없습니다. 클라이언트 Hyper-V가 활성화 된 상태에서 Windows 8을 실행할 수 있습니다. Linux에서 VM을 실행하고 WP 개발 용 에뮬레이터에 계속 액세스 할 수 있습니다.
rjrapson

5

또는 이것에 대해. .net / C #에 관심이 있으니, 왜 Mono를 리눅스에 사용하지 않는가? 그 의미에서 자바의 크로스 플랫폼입니다.


정확한 생각 - Visual Studio에서 간단한 단일 창 C # Othello 게임을 만들었습니다. 프로젝트를 가져 와서 MonoDevelop에서 실행하면 잘 돌아갔습니다.
NoBugs

3
주의 할 점으로 Mono는 WPF 프로젝트를 지원하지 않습니다. 따라서 OP가 WPF 응용 프로그램을 개발하려는 경우 작동하지 않습니다. 또한 Mono에 대한 열렬한 팬 이었지만, Novell의 프로젝트 포기와 Xamarin의 새로운 업무 처리에 대한 선택 이후, 나는 더 많은 노력을 투자하는 것에 대해 약간 신중합니다.
Boluc Papuccuoglu

1
나는 모노 사용을 고려해 왔으며 그것을 확실히 시도 할 것이다. 그러나 다른 팀원이 Visual Studio를 사용하면 문제가 발생할 수 있습니다.
codeape

Visual Studio를 사용하지 않는다면 .NET 재미를 놓칠 수 있습니다.
demonkoryu

3
@codeape Mono에는 지원되지 않는 많은 기능과 라이브러리가 있습니다. 고객이 Mono를 타겟팅하는 데 특별히 관심이 없다면이 옵션은 심각하지 않을 수 있습니다.
Casey

4

개인적으로 저는 반쪽 집을 가지고 많은 긍정적 인 경험을했습니다. 하이퍼 바이저를 사용합니다. 젠과 같은 Linux와 Windows를 경량 마이크로 커널 하이퍼 바이저에서 실행 시키거나 성능상의 큰 타격을받지 않을 수 있습니다.이 구성은 훨씬 융통성이있어 언제든지 둘 사이의 자원을 쉽게 재 할당 할 수 있습니다.

이 방법은 두 OS를 독립적으로 부팅하거나 종료 할 수 있기 때문에 꿈꾸는 설정과 거의 일치합니다. 리소스를 다른 곳으로 재 할당하면 성능이 저하 될 수 있습니다 (실제로는 느려질 수 있습니다. 어떤 경우에는 그렇지만 특별히 테스트하기 위해 벤치마킹하지 않는 한이 사실을 알 수 없습니다.

유일한 catch는 모든 i7이 (afaik) 수행하는 시각화를 지원하는 특정 기능을 필요로하므로이 문제가 문제가되지 않아야합니다.

편집하다:

Xen에는 자체 마이크로 커널이 들어 있습니다. 데비안을 실행하는 데 필요하지 않습니다. 리눅스 시스템이 필요한 유일한 이유는 구성 프로그램이 게스트 중 하나에서 실행되는 Linux 프로그램 인 것처럼 Xen을 다시 구성한다는 것입니다 (게스트는 Xen에서 사용하는 용어입니다). VM을 의미). 당신은 단지 리눅스, 그냥 윈도우 또는 둘 다 언제든지 실행시킬 수 있습니다,하지만 Xen의 설정을 구성하려면 리눅스를 실행시켜야합니다. 필요할 때 백그라운드에서 실행되는 작은 리눅스를 남겨 두는 것이 좋습니다.

하드웨어는 몇 가지 방법으로 처리 할 수 ​​있으며 Xen은 네트워크 카드 및 사운드 카드 등과 같이 한 번에 여러 게스트가 하드웨어를 사용할 수있게 해주는 일련의 가상 장치를 제공합니다.

이러한 방식으로 작동하지 않거나 한 번에 한 게스트 만 필요로하는 하드웨어의 경우 xen에는 통과 장치가 있으므로 하드웨어에 직접 액세스 할 수있는 게스트를 언제든지 선택하여 선택할 수 있으며 시각. 고속 가속 렌더링이 필요한 경우 특정 게스트에게 그래픽 카드에 대한 참 액세스 권한을 부여하기 위해이 작업을 수행 할 수 있습니다 가상화 오버 헤드없이 .

또한 위에서 설명한 것처럼 통과 모드에서 그래픽 카드를 직접 사용하는 게스트를 한 명 가질 수도 있지만 다른 게스트의 화면을 창에 표시하는 로컬 VNC 프로토콜을 사용하여 다른 사람을 계속 볼 수 있습니다 (가상 박스 또는 원격 데스크톱처럼 생각할 수 있음) 하나는 그래픽 카드를 직접 제어합니다. 또는 물론 한 번에 하나의 직접 액세스 권한을 부여하는 게스트 화면간에 전환 할 수 있습니다.

이 설정의 효율성에 대해 가정 할 수있는 것과는 대조적으로 사실상 두 운영체제를 동시에 실행하는 몇 가지 방법 중 하나입니다. 둘 다 효과적으로 네이티브 성능을 유지하면서 인터넷 검색을 수행하면 많은 사람들이 고성능 게임기 또는 다른 까다로운 시스템을 실행하기위한 설정.


당신이 언급 한 것처럼 모든 하우투 / 가이드를 추천 할 수 있습니까? 젠투 리눅스 / win7 시스템을 갖고 싶습니다.
Gene Pavlovsky

3

내 경험에 따르면 (나는 또한 .Net 애플 리케이션을 테스트하면서 멋진 것들을 테스트하고 리눅스의 고민 문제를 해결한다.) 듀얼 부팅이 최선의 방법이다.

다른 사람들이 지적했듯이, VM을 사용할 때 느리고 반응이 느려지는 경우가 있습니다.

한가지 더 말하면 시간을내어 VM을 실행하고 자신이 편한 지 확인하십시오.

주문에 관해서는
1) 윈도우를 먼저 설치 한 다음 리눅스 (선호)
2) 리눅스를 먼저 설치 한 다음 (부트 로더를 다시 설치해야합니다)

제가 추가하고 싶은 또 하나의 점은 작은 .Net 프로젝트의 경우 Mono를 사용하는 Linux도 사용할 수 있으므로 Windows에서 Linux로 전환 할 필요가 없습니다.


1

저는 Visual Studio로 시작하여 시간이 지남에 따라 리눅스로 옮겨 가면서 1 년 넘게 linux / Visual Studio 개발을 많이 해왔습니다 (저는 apt, zsh 및 vim을 좋아합니다!).

VM웨어 플레이어에서 윈도우 우분투를 호스팅하기 시작했습니다. VM웨어 플레이어는 Visual Studio 개발을 주로하고 때로는 가끔씩 일부 리눅스 전용 패키지 또는 기타가 필요한 경우 상당히 훌륭하게 작동했습니다. 시간이 지남에 따라 필자는 필자의 연구가 리눅스 환경에 더 자주 있기를 원했고 VM 통합에는 몇 가지 어려움이있었습니다.

내가 Windows (ASP.NET 사이트)에 대한 가끔 필요로하는 리눅스 개발 (IntelliJ 및 일부 노드 + 파이썬의 많은 AS3)으로 전환함에 따라, 나는 VirtualBox를 호스팅하는 Ubuntu로 뒤집어 썼습니다 (disk2vhd -> gtd를 사용함) .vdi 내 오래된 Windows 디스크의). 비웃음을 꽤 많이받은 후에 나는 일반적으로 내가하는 일을 나누었을 때 상당히 만족 스럽지만 비주얼 스튜디오의 심각한 양을하고 있다면 윈도우를 리눅스에서 호스팅하기를 원할 것입니다. VirtualBox 나 VMWare Player가 괜찮을 것입니다.

표준 우분투 14.04 AMD 비디오 드라이버를 사용하면 VirtualBox의 3D 가속으로 인해 Visual Studio가 10-100 배 느리게 느려지므로 일부 느려짐을 희생하여 가속을 비활성화 할 수 있습니다. 그리고 너 정말 SSD에서 돌아가고 싶다)


2
"당신은 충분한 숫양을 가지고 있지 않다"는 답변에 나에게 상당히 미친 소리가납니다. VS 자체는 32 비트이므로 4GB 이상을 사용할 수 없습니다. SQL Server와 함께 전체 버전의 IIS를 실행하는 경우 약간의 부진이있을 수 있지만 정상적인 Express 버전은 정상적으로 작동합니다. SSD는 성능면에서 훨씬 중요합니다.
Simon Buchan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.