web-dev-qa-db-ja.com

いくつかのVisual Studio開発を行うLinuxプログラマー用のデュアルブートまたは仮想マシン?

シナリオ:

  • 私は主にLinux(Python、MySQL、MongoDBなど)で開発するフリーランスのソフトウェア開発者です。
  • 私の仕事用コンピューターは、i7プロセッサーと8GB RAMを搭載したLenovoラップトップです。 Big HD + 128 GB SSD。 OSはUbuntu Linuxです

近いうちにいくつかの.NET/C#プロジェクトを取得する可能性があるため、以下に関するガイダンスを探しています。

  • デュアルブートソリューションを採用するか、Windowsの仮想マシンを使用する必要がありますか?
  • デュアルブートする場合:推奨されるインストールシーケンスは何ですか? Windowsが最初ですか、それともLinuxが最初ですか? (とにかく最新のLTSを入手するために完全なUbuntuの再インストールを検討しているので、すべてを新しくインストールし始めることができます)
  • VMを使用する場合:VMWare WorkstationとVirtualBoxはパフォーマンスに関してどのように比較されますか?
  • 私の夢のセットアップはおそらく次のようになります:
    • デュアルブート
    • ただし、Linuxで起動すると、Windowsパーティションを仮想マシンとして起動できます。これは可能ですか?
    • および/またはWindowsで起動した場合、Linuxパーティションを仮想マシンとして起動できます。これは可能ですか?
26
codeape

他の人はあなたの質問の残りをカバーしましたが、私は彼らがこの部分に対処しなかったと思います:

しかし、Linuxで起動すると、Windowsパーティションを仮想マシンとして起動できます。これは可能ですか?または、Windowsで起動すると、Linuxパーティションを仮想マシンとして起動できます。これは可能ですか?

短い答えはイエスです。

長い答えはイエスですが、多くの警告と含意があります。

この1月まで(新しいマシンを入手したとき)、私は仕事用のコンピューターをデュアルブート、またはWindows 7のホストとしてLinuxを使用するように構成しましたVMこれはWindowsパーティションに直接アクセスしました。 WindowsをダイレクトディスクLinux VMのホストとして使用しようとすることに迷惑をかけたことはありませんが、それも可能です。私のコンピューターでレガシBIOS/MBRを使用していたため、UEFI/GPTを使用している場合、これを行う方法がわかりません。

私はそれを行うためにVirtualBoxを選択しましたが、私が理解していることから、それはVMWareでも可能であるべきです。

パフォーマンスは私の目的には完全に受け入れられました。 Windowsに1 CPUコア、2 GBのメモリ、1モニターを与えましたが、ビデオメモリの容量を覚えていません。 VMはビデオを再生し、私のJava GUIアプリケーションおよび多くのリッチコンテンツWebサイトで作業することができました。

詳細に入る前に、奇妙さについて説明します。

  • ネイティブブートとVMモードのWindows 7を切り替えると、私のWindowsが正規品ではないというWindowsの警告が表示されました。ライセンスによっては、2つのハードウェアにインストールすることにより、MSはこれをライセンス違反と見なす場合があります。低レベルのドライバーの多くは実際のハードウェアとVM "ハードウェア"とでは異なるため、インストールを "修復"する必要もありました。

  • Windows Updateが実行されるたびに(またはその他の大容量ディスクI/O操作)、ハードディスクが負荷の下で押しつぶされ、両方のマシンのすべてが非常に遅くなります。各OSを専用のハードドライブに移動すると、この問題はうまく解決されました。ソリッドステートドライブを使用しても問題は解決します。

  • 何らかの理由で、Ubuntuは時々サスペンド後に起動することを好まなかった(おそらく20%の時間)。これは私のWindows VMのハード電源オフに相当しました。その結果、ホストを一時停止する前に、毎晩VMの電源を切ります。

  • データの破損や損失の可能性を防ぐために、LinuxでWindowsパーティションをマウントしないように注意する必要がありました。これを防ぐために、すぐにudevルールを追加しました。

大丈夫、それが悪くないように聞こえるなら、ここに詳細があります:これを行うために私が見つけた最も有用な参照はこのブログです: http://www.rajatarya.com/website/taming-windows-virtualbox -vm 。要約された手順は次のとおりです。

  • RTFM。本当に。間違って実行するとファイルシステムを破壊する可能性のあるコマンドを使用します。

  • パーティションを見つけます。

  • パーティションのアクセス許可を変更します(または、Sudoを使用してVMを起動できますが、ホスト/ゲスト共有ドライブ上に作成されたファイルはすべてルートによって所有されます)。

  • ゲストが通常のブートローダーを使用しないようにMBRを作成します。

  • VirtualBox内部コマンドを使用して、VMで使用するvmdkイメージを作成します。

  • VMを作成します。作成したvmdkを使用します。

  • インストールを起動して修復します。

私はWindowsホストを使用して同じ問題の多くを見つけることを期待しますが、Linuxはおそらくよりエレガントに異なるハードウェアを処理するでしょう。共有の/ home(場合によっては/ opt)パーティションを使用し、ネイティブマシンとゲストマシンで異なるルートパーティションを用意する方が、実際には簡単かもしれません。

12
KJP

私は一般的に反対のことをしています。つまり、私のホームシステムはWindows 7マシンであり、さまざまな種類のLinuxをVMとして実行しています。 Linuxは限られたリソースで非常にうまく機能するため、RAMは4GBしかありませんが、これは私にとってはうまくいきます(これは、一度に1つのVMを実行し、通常は、Windowsで十分に使用できるように、最大​​で1024MBのRAMを割り当てます)。

8GBのRAMを使用すると、Windows VMを非常に簡単に実行できます。ここでの唯一の大きな問題は、あなたの開発のために測定したい結果のタイプです。 VMで開発するアイテムのパフォーマンス/スループットメトリックに依存することは躊躇します(それが、同じ仕様のVM環境にデプロイされる場合を除き、ボード)。そうでなければあなたは行ってもいいはずです。

そして、他のスレッドのコメントに触れると、当然、大量のリソースを必要とするアプリケーションを開発することになる場合は、その目的のために最適化するのが最善の方法です(したがって、これらの場合、デュアルブートはVMを使用するよりも望ましい)。

私はVMWareとVirtualBoxの両方を使用しましたが、どちらを使用しても実際のパフォーマンスに影響はありません。私はVM内のベンチマークの範囲に行ったことはありません。どちらのプラットフォームからの悪影響にも気づかなかっただけです(自宅でVirtualBoxを使用し、職場でVMwareを使用しています)。

12
user123

それは、あなたがworkをどのようにしてOSをどのようにfeelにしたいかに依存します。

デュアルブートとは、OSを変更する場合の再起動とブートを意味します。これにはtimeが必要です。フリーランスとして、「自分の」ことをせずにプロジェクトで8時間続けて仕事をしていますか(「自分のもの」はLinuxブートであなたになります)。

Windowsで8時間連続して作業し、残りの時間をLinuxで過ごす場合は、デュアルブートを使用します。 30分間作業した後でLinuxで何かをしたい場合は、3時間作業に切り替えてから、再びLinuxに切り替えます。その後、VMを選択します。

不明な場合は、両方を行ってください。デュアルブートおよびWindowsでのVMの実行。あなたは両方の間に明確な違いを見るでしょう、そしてあなたは他のものより一方を好むでしょう。

私は個人的には、新しいLinuxディストリビューションをテストするためにvmのみを使用しており、devloping時に偽のサーバーをテストすることもあります(vmを台無しにできることは貴重であり、実際のハードドライブで行うよりもはるかに手間がかかりません。) VMも遅れて反応が鈍く感じます。OSが反応してスムーズに感じるようにする必要があります。VMこの領域が不足しています。そのため、デュアルブートを好みます。

ファイルの共有に関しても問題があります。デュアルブートで共有するのはもっと手間がかかります(Windowsでファイルを編集してからLinuxでブートして、行を逃してWindowsで再起動する必要があることを理解するのは悪夢です)。VMではNFSまたはsambaを使用できます。リアルタイムでOS間でファイルを共有します。問題はありません。

また、アボバが言ったように十分なRAMについては、私が言うごみです。私は4gbを実行し、VM Windows8で実行しています。プロジェクトで必要なリソースについて覚えておいてください。

8
Karl Morrison

またはこれはどうですか。 .net/C#に興味があるので、LinuxでMonoを使用しないのはなぜですか?まさにその意味でのクロスプラットフォームJavaです。

5
hanetzer

個人的には、中途半端に多くの肯定的な経験をしました。ハイパーバイザーを使用します Xenなど 軽量のマイクロカーネルハイパーバイザーの下でLinuxとWindowsの両方を実行できます。どちらもパフォーマンスに大きな影響はありません。この構成ははるかに柔軟で、いつでも2つの間でリソースを簡単に再割り当てできます。

これは、2つのOSをいつでも個別に起動またはシャットダウンしてリソースをもう一方に再割り当てできるため、前述の夢のセットアップとほぼ一致し、パフォーマンスの低下に気付くことはありません(実際には、これは何分の1か遅いかもしれません)これは一部のケースですが、特にこれをテストするためのベンチマークを行わない限り、これに気付くことはありません)。

唯一の問題は、特定の機能ではCPUが視覚化をサポートする必要があることですが、すべてのi7がサポートしているため(afaik)、これは問題にはなりません。

編集:

Xenには独自のマイクロカーネルが含まれており、Debianを実行する必要はありません。Linuxシステムが必要になる唯一の理由は、構成プログラムがゲストの1つで実行されるLinuxプログラムであるためです。 VMを意味します)。 Linux、Windows、またはその両方をいつでも実行できますが、Xenの設定を構成するにはLinuxを実行する必要があるため、必要に応じてバックグラウンドで小さなLinuxを実行したままにしておくことをお勧めします。

ハードウェアはいくつかの方法で処理できます。Xenは、ネットワークデバイスやサウンドカードなどのハードウェアを複数のゲストが一度に使用できるようにする仮想デバイスのセットを提供します。

このように動作しないハードウェア、または一度に1人のゲストだけが必要とするハードウェアの場合、xenはパススルーデバイスを持っているので、どのゲストがハードウェアに直接アクセスでき、いつでもこれを切り替えることができます。時間。これは、仮想化オーバーヘッドなしで高速加速レンダリングが必要な場合に、特定のゲストにグラフィックスカードへの真のアクセスを提供するために実行できます

上記で説明したように、パススルーモードでグラフィックカードを直接使用して1人のゲストがいても、他のゲストの画面がウィンドウに表示されるプロトコル(仮想ボックスやリモートデスクトップなど)を使用するローカルVNCのようなプロトコルを使用して他のゲストを表示することもできます。一方、グラフィックカードを直接制御できます。またはもちろん、ゲストの画面を切り替えるだけで、一度に1つの直接アクセスを提供できます。

このセットアップの効率について想定していることとは逆に、両方のOSを同時に実行し、両方のOSで効率的にネイティブパフォーマンスを維持するための数少ない方法の1つです。高性能ゲーム機やその他の要求の厳しいシステムを実行するためのこのような設定。

4
Vality

私の経験によれば(私はクールなものをテストしながらLinuxでアルゴ問題を解決しながら.Netアプリにも取り組んでいます)、デュアルブートが最善の策になるでしょう。

他の人が指摘しているように、VMを使用すると、遅くて反応が鈍く感じられる場合があり、苦痛になる場合があります。

もう1つ指摘しておきますが、時間をかけてVMを実行し、問題がないかどうかを確認してください。

ご注文は
1)最初にWindowsをインストールしてから、Linux(優先)をインストールします
2)最初にLinuxをインストールしてからWindowsをインストールします(その後、ブートローダーを再インストールする必要があります)

もう1つ追加したいのは、小さな.Netプロジェクトの場合、モノを使用してLinuxでも使用できるため、WindowsからLinuxに切り替える必要がないことです。

3
Pratik Singhal

私は1年余りの間、切り替えられたLinux/Visual Studio開発を数多く行ってきました。VisualStudioから始めて、時間の経過とともにLinuxに移行します(apt、zsh、vimが好きです)。

私はVMWare PlayerでUbuntuをホスティングするWindowsから始めました。これはかなりうまく機能しましたが、主にVisual Studio開発を行っていて、たまにLinuxのみのパッケージなどが必要な場合に最適です。やがて、自分の作業をより頻繁にLinux環境に入れたいと思い、VM統合にはいくつかの問題点があったため、...

Windows(ASP.NETサイト)をたまに必要とするだけで、主にLinux開発(IntelliJの多くのAS3といくつかのノード+ python)に切り替えたので、VirtualBoxをホストしているUbuntuに(disk2vhd-> .vdi of私の古いWindowsディスク)。かなりの量をいじった後、私が通常行っている作業の分割を考えると、これにはかなり満足していますが、深刻な量のVisual Studioを実行している場合は、LinuxをホストするWindowsがおそらく必要です。VirtualBoxまたはVMWare Playerのいずれかで問題ありません。

ただし、いくつかの問題点に注意する必要があります。標準のUbuntu 14.04 AMDビデオドライバーでは、VirtualBoxの3DアクセラレーションによってVisual Studioが10〜100倍遅くなるため、アクセラレーションを無効にします。そしてあなた本当に SSDで実行したい)

1
Simon Buchan