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


26

シナリオ:

  • 私は主に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パーティションを仮想マシンとして起動できます。これは可能ですか?

5
GrubがWindowsブートローダーのチェーンブートを置き換えるようにしたいので、常に最初にWindowsを実行し、次にUbuntuを実行する必要があります。その方法については、数十の質問があります。パフォーマンスの決定は自分で行う必要があります
ラムハウンド14年

Visual Studioは強力なアプリケーションであり、仮想環境で十分に実行できる場合とできない場合があります。
フランクトーマス14年

回答:


12

他の人があなたの質問の残りをカバーしましたが、私は彼らがこの部分を未解決のままにしているのを見ます:

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

簡単な答えはイエスです。

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

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

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

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

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

  • ネイティブブートとVMモードのWindows 7を切り替えると、Windowsのコピーが本物ではないというWindowsの警告がトリガーされました。ライセンスに応じて、MSは2つのハードウェアにインストールすることにより、これをライセンス違反と見なす場合があります。また、多くの低レベルドライバーは実際のハードウェアと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を起動できますが、ホスト/ゲスト共有ドライブで作成されたファイルはすべてrootが所有します)。

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

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

  • VMを作成します。作成したばかりのvmdkを使用するようにします。

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

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


私は長年にわたってMacでVMのアプローチを採用してきましたが、SSDでさえそれだけでそれをカットすることはありません。どちらのシステムもI / Oバウンドにならないように、ホストとゲストをまったく異なるドライブで分離する必要があります。SSDは物事を改善しますが、2台目のドライブを使用する場合と比較して何もありません(両方がSSDである場合、飛行しています!)
キースジャクソン14

12

私は一般的に反対のことを行います。つまり、私のホームシステムはWindows 7マシンであり、さまざまな種類のLinuxをVMとして実行しています。Linuxは限られたリソースで非常にうまく機能するので、4GBのRAMしか持っていなくてもこれはうまくいきます(これは、一度に1つのVMを実行し、通常は最大で1024MBのRAMを与えて十分に保つことを意味しますWindowsの場合)。

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

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

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


LinuxがVMの1GBのRAMでの実行を処理する場合、VMでWindowsを簡単に実行し、3GBのVRAMも割り当てることができます。質問の場合、同じ理論が適用されます。基本Linux OS用に1GBを保持し、Windowsに7GBを割り当てます。基本OSとVMが何であるかは、実際には関係ありません。両方を実行している限り、同じリソースを共有しています。私にとっては、どちらのOSもVMで実行しても問題ありません。両方を実行するリソースがあれば、リブートせずにそれらの間で切り替えられるのはいつでもいいことです。
ジャッケ14年

VMware PlayerおよびWorkstation(バージョン10)で深刻なメモリリークが発生したため、VMを実行するのにVirtualBoxを使用しています。ただし、32GBのRAMを搭載したシステムで同時に実行されるVMが4台を超えていることについて話します。両方のVW製品は、クラッシュするまですべてのRAMの使用を開始しますが、VBは何週間も問題なく実行されます。
ジャッケ14年

8

それはあなたがどのように働き、どのようにOSに感じさせたいかによって異なります。

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

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

不明な場合は両方を実行してください。デュアルブートおよびWindowsでVMを実行します。両方の間に明確な違いがあり、どちらか一方を好むでしょう。

私は個人的には、開発中に新しいLinux Distsおよび時々偽サーバーをテストするためにvmを使用します(vmを台無しにできることは貴重であり、実際のハードドライブでそれを行うことはそれほど面倒ではありません)。また、VMは遅れており、応答性が低いと感じています。応答性とスムーズさを感じるには、OSが必要です。この領域にはVMがありません。だから私はデュアルブートを好む。

ファイルの共有に関しても問題があります。デュアルブート(Windowsブートでファイルを編集してから、Linuxでブートして、行を間違えてWindowsに再起動しなければならないことを想像してみてください!) OS間でリアルタイムでファイルを共有するために、問題はありません。

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


ファイルの共有について:ソース管理下で作業しているすべてのものがあることを本当に、本当に、本当に望んでいます。まだWindowsとLinuxの間で共有したいもの(私は知りません)は、両方のOSで読み書きできるNTFSパーティションに移動するだけです。
VOO

GIT 4 life ofc!私は多くのプライベートプログラミングを行っているので、そのためにgitは必要ありません(良いプラクティスを知っていますが、怠け者です)。NFTSについて、それはまさに私が言っていたことです!ただし、OS間の起動には時間がかかります。そして、vmでは、両方のファイルがリアルタイムで利用可能です!
カールモリソン14年

私のUbuntuパーティションはWindowsのすべてのパーティションを自動的にマウントするので、少なくともアクセスファイルシステム/ Windowsのファイルは問題になりません。また、EXT3 / 4パーティションをWindowsにマウントするためのサードパーティソフトウェアもあります。
kuldeep.kamboj 14年

もう1つの考慮事項は、Windows Phone開発を行うかどうかです。その場合、WPエミュレーター自体がHyper-V VMであるため、仮想環境でVisual Studioを実行できません。クライアントHyper-Vを有効にしてWindows 8を実行し、その下のVMでLinuxを実行し、WP開発用のエミュレーターに引き続きアクセスできます。
rjrapson 14年

5

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


まさに私の考え-Visual Studioでシンプルな単一ウィンドウのC#Othelloゲームを作成してみましたが、プロジェクトをインポートしてMonoDevelopで実行すると問題なく動作しました。
NoBugs 14年

3
警告として、MonoはWPFプロジェクトをサポートしていません。したがって、OPがWPFアプリケーションの開発を検討している場合、それは機能しません。また、私はMonoの大ファンでしたが、Novellがプロジェクトを放棄し、Xamarinが新しい状況を処理することを選択したため、より多くの労力を投資することに少し慎重です。
ボーリュックパプクオグル14年

1
私はモノの使用を検討しており、間違いなく試してみます。しかし、他のチームメンバーがVisual Studioを使用すると問題が発生する可能性はありますか?
codeape 14年

Visual Studioを使用していない場合、.NETの楽しみを本当に逃してしまうでしょう。
デモコーン14年

3
@codeape Monoにはサポートされていない機能やライブラリがたくさんあります。クライアントがMonoのターゲット設定に特に関心がない場合、これはおそらく深刻なオプションではありません。
ケーシー14年

4

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

これは、2つのOSをいつでも独立して起動またはシャットダウンしてリソースを他のOSに再割り当てでき、パフォーマンスヒットに気付かないため、前述の理想的なセットアップとほぼ一致します(実際には、%場合によってはありますが、特にこれをテストするためのベンチマークを行っていない限り、これに気付かないでしょう。

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

編集:

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

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

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

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

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


あなたが言及したように、それをすべて設定するためのハウツー/ガイドをお勧めできますか?gentoo linux / win7システムが欲しいです。
ジーンパブロフスキー

3

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

他の人が指摘しているように、VMを使用すると、時間がかかり、応答しなくなることがあり、これが苦痛になる場合があります。

もう1つ、時間をかけてVMを実行してみて、快適かどうかを確認することを指摘します。

順序に関しては、
1)最初にWindowsをインストールし、次にLinux(推奨
)をインストールします2)最初にLinuxをインストールし、次にWindowsをインストールします(その後、ブートローダーを再インストールする必要があります)

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


1

私は、Visual Studioから始めて、時間の経過とともにlinuxに移行して、1年以上の間、多くのスイッチLinux / Visual Studio開発を行ってきました(apt、zsh、vimが好きです!)。

VMWare PlayerでUbuntuをホストするWindowsから始めました。これはかなりうまく機能し、主にVisual Studio開発を行っていて、たまにLinux専用のパッケージなどが必要な場合に最適です。時間が経つにつれて、私は自分の仕事をより頻繁にLinux環境に置きたいと気づき、VM統合にはいくつかの問題点があったので...

Windows(ASP.NETサイト)を時々必要とするだけで主にlinux開発(IntelliJといくつかのノード+ pythonのAS3の多く)に切り替えたので、VirtualBoxをホストするUbuntuにそれを回しました(disk2vhd-> .vdiを使用)私の古いWindowsディスク)。かなりの手間をかけた後、私は一般的に仕事の分割を考えてこれにかなり満足していますが、Visual Studioを真剣にやっているなら、おそらくLinuxをホストしているWindowsが必要です、VirtualBoxまたはVMWare Playerのいずれかがうまくいくはずです。

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


2
「十分なRAMがありません」と答えていることに気付くだけでも、VS自体は32ビットなので、4GBを超える容量を使用することはできません。IISのフルエディションをSQL Serverで実行している場合は、多少動きが遅くなる場合がありますが、それらの通常のExpressバージョンは問題ありません。SSDはパフォーマンスにとってはるかに重要です。
サイモンバッカン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.