适用于Linux程序员的双引导或虚拟机,可以进行一些Visual Studio开发吗?


26

场景:

  • 我是一名自由软件开发人员,主要在Linux(Python,MySQL,MongoDB等)上进行开发。
  • 我的工作计算机是带i7处理器和8GB RAM的Lenovo笔记本电脑。大高清+ 128 GB SSD 操作系统是Ubuntu Linux

我可能会在不久的将来得到一些.NET / C#项目,因此我正在寻找有关以下方面的指南:

  • 我应该选择双启动解决方案还是将虚拟机用于Windows?
  • 如果我要进行双重引导:建议的安装顺序是什么?Windows优先还是Linux优先?(我正在寻找一个完整的Ubuntu重新安装以获取最新的LTS,因此我可以开始重新安装所有内容)
  • 如果我使用VM:VMWare Workstation和VirtualBox如何比较性能?
  • 我的梦想设置可能是以下内容:
    • 双启动
    • 但是,如果我启动到Linux,则可以将Windows分区启动为虚拟机。这可能吗?
    • 和/或:如果我启动到Windows,则可以将Linux分区作为虚拟机启动。这可能吗?

5
您应该始终先执行Windows,然后再执行Ubuntu,因为您希望Grub替换Windows Bootloader的链引导。关于如何做到这一点有几十个问题。绩效决策应由您自己制定
Ramhound 2014年

Visual Studio是一个密集型应用程序,在虚拟环境中可能运行得很好,也可能运行得不好。
Frank Thomas

Answers:


12

其他人已经解决了您的问题的其余部分,但我看到他们没有解决这一部分:

但是,如果我启动到Linux,则可以将Windows分区启动为虚拟机。这可能吗?和/或:如果我启动到Windows,则可以将Linux分区作为虚拟机启动。这可能吗?

简短的答案是肯定的。

长答案是肯定的,但有很多警告和含义。

直到今年一月(当我们有新机器时),我将工作计算机配置为双引导,或将Linux用作直接访问Windows分区的Windows 7 VM的主机。我从未尝试过将Windows用作直接磁盘Linux VM的主机,但也有可能。我的计算机使用的是旧版BIOS / MBR,如果使用UEFI / GPT,我不确定如何执行此操作。

我选择了VirtualBox来做,但是据我了解,使用VMWare也应该可以做到。

就我的目的而言,性能是完全可以接受的;我给了Windows 1个CPU内核,2GB内存,1个监视器,我不记得有多少视频内存。该VM能够播放视频,并能够与我的Java GUI应用程序和许多内容丰富的网站一起使用。

在详细介绍之前,我将讨论怪异之处:

  • 在本机启动和VM模式下切换Windows 7触发Windows警告我的Windows副本不是正版。根据您的许可证,MS可以通过在两个硬件上进行安装来认为这是违反许可证的。我还需要“修复”我的安装,因为对于实际硬件和VM“硬件”,许多低级驱动程序是不同的。

  • 每次运行Windows Update(或任何其他大磁盘I / O操作)时,我的硬盘在负载下都被压碎,两台计算机上的所有东西都变得缓慢。将每个操作系统移动到其专用硬盘上可以很好地解决此问题。使用固态驱动器也可以解决该问题。

  • 出于某种原因,Ubuntu有时不喜欢挂起后(也许有20%的时间)醒来,这相当于Windows VM的硬关机。结果,我将在每晚挂起主机之前关闭虚拟机电源。

  • 我必须非常小心,不要尝试在Linux中挂载Windows分区,以防止可能的数据损坏/丢失。我迅速添加了udev规则来防止这种情况。

好吧,如果听起来还不错,请看以下详细信息:我发现要做的最有用的参考文献是此博客:http : //www.rajatarya.com/website/taming-windows-virtualbox-vm。以下是总结的步骤:

  • RTFM。真。如果使用不正确,将使用可能损坏文件系统的命令。

  • 查找分区。

  • 更改分区的权限(或者,您可以使用sudo引导VM,但是在主机/来宾共享驱动器上创建的所有文件都将由root拥有)。

  • 创建一个MBR,这样来宾就不会尝试使用普通的引导程序。

  • 使用VirtualBox内部命令创建要用于VM的vmdk映像。

  • 创建虚拟机。让它使用您刚创建的vmdk。

  • 启动并修复您的安装。

我希望使用Windows主机会发现许多相同的问题,但是Linux可能会更优雅地处理不同的硬件。尽管使用共享的/ home(也许还有/ opt)分区,并且本机与来宾计算机仅具有不同的根分区,这实际上可能会更容易。


我在Mac上采用VM方法已经有很多年了,我发现甚至SSD也无法自行解决。您需要将主机和客户机分别放在完全不同的驱动器上,以防止两个系统成为I / O绑定。尽管SSD确实可以改善性能,但与使用第二个驱动器相比并没什么(如果它们都是SSD,那么您就在飞行!)
Keith Jackson

12

我通常会做相反的事情,那就是我的家庭系统是Windows 7计算机,并且我将各种Linux版本作为VM运行。由于Linux可以在有限的资源下很好地运行,即使我只有4GB的RAM,这也对我有用(请注意,这确实意味着我一次运行一个VM,并且通常最多为其提供1024MB的RAM以保持足够的容量)对于Windows)。

您的8GB RAM应该可以让您轻松地运行Windows VM。我认为这里唯一的大问题是您要为自己的开发衡量的结果类型。我会犹豫要在VM中开发的项目依赖于任何性能/吞吐量指标(除非它将被部署到具有相同规格的相似VM环境中)。否则,你应该很好。

并且要在其他线程中提及评论,自然地,如果您想知道您将开发需要大量资源的应用程序,那么为此目的进行优化将是可行的方法(因此,在这种情况下,双启动肯定会比使用VM更好)。

我已经使用了VMWare和VirtualBox,但使用它们都没有看到任何真正的性能提升。我还没有达到对虚拟机内部进行基准测试的程度,我只是没有注意到任何一个平台的任何负面影响(仍在家里使用VirtualBox,在工作中使用VMware)。


如果您的Linux能够在VM的1GB RAM上运行,则意味着您可以轻松在VM中运行Windows并分配3GB的VRAM。对于问题,采用相同的理论。为您的基本Linux操作系统保留1GB,并为Windows分配7GB。什么是基本操作系统和虚拟机都没有关系。只要您同时运行两者,就可以共享相同的资源。对我而言,这并不重要,两个OS都可以在VM中运行,如果您有足够的资源来运行这两个OS,那么在它们之间切换而不用重新启动总是很高兴的。
2014年

我更喜欢使用VirtualBox来运行我的VM,因为我已经在VMware Player和Workstation(版本10)中看到严重的内存泄漏。我说的是在具有32GB RAM的系统上同时运行> 4个VM。两种大众汽车产品都开始使用所有的撞锤,直到撞坏为止,而撞针则愉快地运行了数周而没有任何问题。
2014年

8

这取决于您的工作方式和操作系统的感觉

双重启动意味着重新启动和启动(如果您想更改操作系统),这需要时间。作为自由职业者,您在一个项目上连续工作了8个小时而没有做“您的”工作(在Linux启动时,您就是您)。

如果您在Windows中连续工作8个小时,然后在Linux中度过余下的一天,请使用双重引导。如果您工作30分钟,然后又想在Linux上做某事,请切换到再次工作3个小时,然后再进入linux等。然后我选择VM。

如果您不确定,请同时进行。双重启动以及在Windows中运行虚拟机。您将看到两者之间明显的区别,并且您将更喜欢一个。

我个人仅在开发时使用vm测试新的linux dists,有时还测试一台伪造的服务器(能够固定vm是无价的,并且比在实际硬盘上进行操作的麻烦少得多)。VM也会滞后并且感觉响应速度较慢,我需要操作系统来感觉响应速度和流畅度,VM在这方面缺乏优势。所以我更喜欢双启动。

共享文件时也存在一个问题。在双启动模式下共享更多的工作(想象一下在Windows启动模式下编辑文件,然后在linux下启动,仅是意识到您错过了一行,并且必须重新启动进入Windows,这是噩梦!),在vm上,您可以使用NFS或samba在操作系统之间实时共享文件,没有问题。

正如Aboba所说,那只公羊还不够,我说的是垃圾。我在Windows8中运行4gb和一个VM。不过请记住您的项目需要哪些资源。


关于共享文件:我真的,真的,真的希望您在源代码管理下拥有可以处理的所有内容,在这种情况下,要点变得毫无意义。您仍然希望在Windows和Linux之间共享的内容(因为..我不知道)只是放在NTFS分区上-可以由两个OS读取和写入。
Voo

GIT 4 life ofc!我做了很多私有编程,所以我不需要git(我知道我知道这是个好习惯,但是很懒。)关于NFTS,这正是我的意思!但是在操作系统之间进行引导需要时间。在虚拟机中,两个文件都是实时可用的!
莫里森

我的Ubuntu分区会自动挂载Windows的所有分区,因此,至少应该不会访问Windows的文件系统/文件。他们也是在Windows上安装EXT3 / 4分区的第三方软件。
kuldeep.kamboj 2014年

另一个考虑因素是您是否要进行Windows Phone开发。在这种情况下,您将无法在虚拟环境中运行Visual Studio,因为WP仿真器本身就是Hyper-V VM。您可以运行启用了客户端Hyper-V的Windows 8,在该操作系统下的VM中运行Linux,并且仍然可以访问仿真器以进行WP开发。
rjrapson 2014年

5

还是这样。您对.net / C#感兴趣,所以为什么不在Linux上使用Mono?从Java的角度来看,它是非常跨平台的。


确实是我的想法-我曾在Visual Studio上制作了一个简单的单窗口C#Othello游戏,并且在导入项目并在MonoDevelop上运行时运行得很好。
NoBugs 2014年

3
请注意,Mono不支持WPF项目。因此,如果OP希望开发WPF应用程序,那将不起作用。另外,我还是Mono的忠实拥护者,但是由于Novell放弃了该项目,并且Xamarin选择了处理新情况的选择,因此我对在此方面投入更多的精力有些谨慎。
Boluc Papuccuoglu 2014年

1
我已经考虑过使用mono,并且一定会尝试一下。但是其他团队成员使用Visual Studio时可能会有问题吗?
codeape 2014年

如果您不使用Visual Studio,那么您真的会错过.NET的乐趣。
demonkoryu 2014年

3
@codeape Mono中有很多不受支持的功能和库。如果您的客户对定位Mono不特别感兴趣,那么这可能不是一个不错的选择。
Casey

4

就个人而言,我有很多积极的经历,使用Xen这样的虚拟机管理程序然后可以在轻量级微内核虚拟机管理程序下运行Linux和Windows,它们都不会对性能产生重大影响,而且此配置更加灵活,让您可以随时轻松地在两者之间重新分配资源。

这几乎与您提到的梦想设置相符,因为您可以随时独立启动或关闭两个操作系统以将资源重新分配给另一个操作系统,并且您将无法注意到任何性能下降(实际上,这可能会慢%在某些情况下,但除非您专门进行基准测试以进行测试,否则您不会注意到这一点。

唯一要注意的是某些功能需要您的CPU支持可视化,但是每个i7都支持(可视化),因此这对您来说不是问题。

编辑:

Xen包含自己的微内核,不需要Debian来运行它,唯一需要linux系统的原因是重新配置Xen,因为配置程序是在其中一个guest虚拟机上运行的linux程序(来宾是Xen使用的术语表示VM)。您可以随时运行linux,也可以只运行Windows,或者两者都运行,但是为了配置Xen的设置,您将需要运行linux,因此建议在后台运行一个小型linux,以便在需要时执行此操作。

硬件可以通过几种方式处理,Xen提供了一组虚拟设备,这些虚拟设备允许一块硬件供多个来宾同时使用,例如网卡和声卡等。

对于无法通过这种方式工作的硬件或xen具有直通设备的一次只能由一个来宾使用的硬件,这意味着您可以随时选择并选择哪个来宾可以直接访问该硬件,并可以在任何时间进行切换时间。如果需要高速加速的渲染而没有任何虚拟化开销,则可以这样做以使特定的来宾真正访问图形卡。

如上所述,也可以让一个来宾以直通模式直接使用图形卡,但是仍然可以使用类似本地VNC的协议查看其他来宾,该协议使其他来宾的屏幕显示在窗口中(例如虚拟框或远程桌面)而直接控制图形卡的人;或者当然,您也可以在访客屏幕之间切换,一次即可直接访问。

与您对这种设置的效率的假设相反,它实际上是同时运行两个OS并同时有效地维持两个OS的少数几种方法之一,如果您进行一些谷歌搜索,您会发现许多使用成功这样的设置可以运行高性能游戏机或其他要求苛刻的系统。


您能推荐任何方法/指南来像您提到的那样进行设置吗?我想要一个gentoo linux / win7系统。
Gene Pavlovsky

3

根据我的经验(我还在.Net应用程序上工作,同时测试了很酷的东西并解决了Linux上的算法问题),双启动将是您的最佳选择。

正如其他人指出的那样,使用VM有时会感觉很慢且无响应,这可能会很痛苦。

我要指出的另一件事是,这会花费您的时间并尝试运行VM,并检查您是否满意。

按照顺序
1)先安装Windows,然后再
安装linux(首选)2)先安装Linux,然后再安装Windows(然后您必须重新安装bootloader)

我要补充的一件事是,对于小型.Net项目,您甚至可以使用mono使用Linux,因此无需从Windows切换到Linux。


1

一年多以来,我一直在进行很多Linux / Visual Studio切换开发工作,从Visual Studio开始并逐渐过渡到linux(我喜欢apt,zsh和vim!)。

我从在VMWare Player中托管Ubuntu的Windows开始,它运行良好,如果您主要从事Visual Studio开发并且仅偶尔需要一些Linux软件包或其他工具,那肯定很棒。随着时间的流逝,我发现我希望自己的工作更多地出现在linux环境中,并且VM集成有一些痛点,所以...

当我主要转向Linux开发(在IntelliJ中有大量AS3和一些节点+ python)并且仅偶尔需要Windows(ASP.NET站点)时,我将其转移到托管VirtualBox的Ubuntu(使用disk2vhd-> .vdi我的旧Windows磁盘)。经过大量的摆弄后,考虑到我通常要做的工作,我对此感到非常满意,但是如果您要使用大量的Visual Studio,则可能希望Windows承载Linux,VirtualBox或VMWare Player应该都可以。

不过,我要指出一些痛点:使用标准的Ubuntu 14.04 AMD视频驱动程序,VirtualBox的3D加速使Visual Studio慢10-100倍,因此以一些迟钝为代价禁用该加速;并且您真的想在SSD上运行)


2
只是注意到说“您没有足够的内存”的答案在我看来是非常疯狂的:VS本身是32位的,因此不能使用超过4GB的内存。如果您正在运行带有SQL Server的IIS完整版,则可能会有些迟钝,但这些标准版的Express版本应该可以。SSD对于性能而言更为重要。
Simon Buchan 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.