对于进行 Visual Studio 开发的 Linux 程序员来说,是否需要双启动或虚拟机?

对于进行 Visual Studio 开发的 Linux 程序员来说,是否需要双启动或虚拟机?

场景:

  • 我是一名自由软件开发人员,主要在 Linux(Python、MySQL、MongoDB 等)上进行开发。
  • 我的工作电脑是联想笔记本电脑,配备 i7 处理器和 8GB RAM。大硬盘 + 128 GB SSD。操作系统是 Ubuntu Linux

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

  • 我应该选择双启动解决方案还是使用虚拟机来运行 Windows 系统?
  • 如果我使用双启动:建议的安装顺序是什么?先安装 Windows 还是先安装 Linux?(无论如何,我正在考虑重新安装完整的 Ubuntu 以获取最新的 LTS,这样我就可以开始安装所有新东西)
  • 如果我使用 VM:VMWare Workstation 和 VirtualBox 的性能如何?
  • 我的梦想设置可能是这样的:
    • 双重启动
    • 但如果我启动 Linux,我可以将 Windows 分区作为虚拟机启动。这可能吗?
    • 和/或:如果我启动 Windows,我可以将 Linux 分区作为虚拟机启动。这可能吗?

答案1

其他人已经回答了你问题的其余部分,但我发现他们没有解决这个问题:

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

简短的回答是肯定的。

长远的回答是肯定的,但有许多警告和含义。

直到今年 1 月(我们买了新机器),我的工作电脑都配置为双启动,或者使用 Linux 作为 Windows 7 VM 的主机,该 VM 直接访问 Windows 分区。我从来没有尝试过将 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 更新(或任何其他大型磁盘 I/O 操作)时,我的硬盘都会不堪重负,两台机器上的所有东西都变得非常慢。将每个操作系统移至各自的专用硬盘上可以很好地解决这个问题;使用固态硬盘也可以解决这个问题。

  • 由于某种原因,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 映像。

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

  • 启动并修复您的安装。

我预计使用 Windows 主机会发现许多相同的问题,但 Linux 可能会更优雅地处理不同的硬件。不过,使用共享的 /home(也许还有 /opt)分区,并为本机和客户机设置不同的根分区可能确实更容易。

答案2

我通常的做法恰恰相反,我的家用系统是 Windows 7 机器,我以 VM 的形式运行各种 Linux。由于 Linux 可以在有限的资源下很好地运行,所以即使我只有 4GB 的 RAM,这对我来说也行得通(请注意,这确实意味着我一次运行一个 VM,并且通常最多给它 1024MB 的 RAM,以保留足够的空间用于 Windows)。

您的 8GB RAM 应该可以让您轻松运行 Windows VM。我认为这里唯一的大问题是您想要为您的开发测量哪种类型的结果。对于您在 VM 中开发的项目,我不太愿意依赖任何性能/吞吐量指标(除非它将被部署到具有相同规格的类似 VM 环境中)。否则您应该可以开始了。

说到其他帖子中的评论,自然如果您知道您将要开发需要大量资源的应用程序,那么为此进行优化将是可行的方法(因此在这些情况下,双启动肯定比使用 VM 更好)。

我使用过 VMWare 和 VirtualBox,但都没有看到任何实际的性能影响。我还没有对虚拟机进行基准测试,我只是没有注意到这两个平台的任何负面影响(仍然在家里使用 VirtualBox,在工作中使用 VMware)。

答案3

这取决于你工作以及你希望操作系统如何感觉

双启动意味着如果你想更改操作系统,则需要重新启动并启动,这需要时间。作为自由职业者,您是否会连续 8 小时从事一个项目而没有做“您自己”的事情(“您自己”的事情就是您在 Linux 启动时所做的工作)?

如果您连续在 Windows 上工作 8 小时,然后在 Linux 上度过一天的剩余时间,请使用双启动。如果您工作了 30 分钟,然后想在 Linux 上做点什么,请切换到再工作 3 小时,然后再进入 Linux 等。那么我会选择 VM。

如果您不确定,请同时执行这两项操作。双启动并在 Windows 中运行 VM。您将看到两者之间的明显差异,并且您将更喜欢其中一种。

我个人只使用虚拟机来测试新的 Linux 发行版,有时在开发时使用假服务器(能够在虚拟机上犯错是无价的,而且比在实际硬盘上犯错麻烦少得多。)。虚拟机也滞后并且感觉响应较慢,我需要我的操作系统感觉响应迅速且流畅,而虚拟机在这方面缺乏。所以我更喜欢双启动。

共享文件时也存在问题。在双启动上共享文件需要做更多工作(想象一下在 Windows 启动中编辑文件,然后在 Linux 启动时才发现漏掉了一行,不得不重新启动 Windows,这简直是噩梦!)而在虚拟机上,您可以使用 NFS 或 samba 在操作系统之间实时共享文件,没有问题。

还有 Aboba 所说的内存不足,我说的都是废话。我在 Windows8 中运行 4gb 和 VM。不过要记住你的项目需要什么资源。

答案4

就我个人而言,我有很多积极的经验,采取了折衷方案,使用虚拟机管理程序例如 Xen然后,您可以让 Linux 和 Windows 同时在轻量级微内核管理程序下运行,既不会对性能造成重大影响,又可以更加灵活地配置,让您可以随时轻松地在两者之间重新分配资源。

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

唯一的缺点是某些功能需要你的 CPU 支持可视化,但是每个 i7 都支持(据我所知),所以这对你来说应该不是问题。

编辑:

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

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

对于无法以这种方式工作或一次只有一个客户机需要的硬件,xen 具有直通设备,这意味着您可以随时选择哪个客户机可以直接访问该硬件,并且可以随时切换。如果您需要高速加速渲染,可以这样做以使特定客户机真正访问显卡无需任何虚拟化开销

也可以让一个客户机直接以直通模式使用显卡,如上所述,但仍然可以使用本地 VNC 类协议查看其他客户机,这使得其他客户的屏幕出现在窗口中(像虚拟盒或远程桌面一样),同时一个人可以直接控制显卡;或者当然,您可以在客户机屏幕之间切换,一次只提供一个直接访问权限。

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

相关内容