Linux 程序员的双启动或虚拟机进行一些 Visual Studio 开发?

cod*_*ape 25 windows linux boot virtualization visual-studio

场景:

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

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

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

use*_*123 11

我通常做相反的事情,那就是我的家庭系统是一台 Windows 7 机器,我运行各种风格的 Linux 作为 VM。由于 Linux 在资源有限的情况下可以很好地运行,这对我有用,即使我只有 4GB 的 RAM(请注意,这意味着我一次运行一个 VM,通常最多给它 1024MB 的 RAM 以保持足够的内存)对于 Windows)。

你的 8GB 内存应该可以让你很容易地运行 Windows 虚拟机。我认为这里唯一的大问题是您希望为您的发展衡量的结果类型。对于您在 VM 中开发的项目,我会犹豫依赖任何性能/吞吐量指标(除非它将部署到具有相同规格的类似 VM 环境)。否则你应该很高兴去。

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

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


小智 11

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

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

简短的回答是肯定的。

长答案是肯定的,但有许多警告和影响。

直到今年 1 月(当我们获得新机器时),我的工作计算机配置为双启动,或者使用 Linux 作为直接访问 Windows 分区的 Windows 7 VM 的主机。我从来没有费心尝试将 Windows 用作直接磁盘 Linux VM 的主机,但这也是可能的。我的计算机使用的是旧版 BIOS/MBR,如果您使用 UEFI/GPT,我不确定如何执行此操作。

我选择了 VirtualBox 来做这件事,但据我所知,VMWare 也应该可以。

性能对于我的目的来说是完全可以接受的;我给了 Windows 1 个 CPU 核心、2GB 内存、1 个显示器,我不记得有多少显存。VM 能够播放视频并与我的 Java GUI 应用程序和许多内容丰富的网站一起工作。

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

  • 在本机启动模式和虚拟机模式 Windows 7 之间切换会触发 Windows 警告,即我的 Windows 副本不是正版。根据您的许可证,MS 可能会通过在两个硬件上安装来将其视为违反许可证。我还需要“修复”我的安装,因为许多低级驱动程序对于真实硬件和虚拟机“硬件”是不同的。

  • 每次运行 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)分区并且对于本机和来宾计算机只有不同的根分区,这确实可能更容易。


Kar*_*son 7

这取决于您的工作方式以及您希望操作系统的感觉

双启动意味着如果您想更改操作系统,则需要重新启动和启动,这需要时间。作为一名自由职业者,你是否会连续 8 小时处理一个项目而不做“你的”东西(“你的东西”就是你在 linux 启动时的东西)。

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

如果您不确定,请同时进行。双启动,在 Windows 中运行 VM。您会看到两者之间的明显区别,并且您会更喜欢其中一个。

我个人只使用 vm 来测试新的 linux dist,有时在开发时使用假服务器(能够在 vm 上搞砸是无价的,而且比在实际硬盘上做这件事的麻烦要少得多。)。VM 也滞后并且反应迟钝,我需要我的操作系统感觉灵敏和流畅,VM 在这方面缺乏。所以我更喜欢双启动。

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

也像 Aboba 所说的 ram 不够,我说是垃圾。我在 Windows8 中运行 4gb 和一个 VM。但请记住您的项目需要哪些资源。


小智 5

或者这个怎​​么样。您对 .net/C# 感兴趣,那么为什么不在 linux 上使用 Mono?它在 java 的意义上是非常跨平台的。

  • 需要注意的是,Mono 不支持 WPF 项目。因此,如果 OP 正在寻求开发 WPF 应用程序,那将行不通。此外,我是 Mono 的忠实粉丝,但由于 Novell 放弃了该项目,而 Xamarin 选择了处理新的事务,因此我对在其中投入更多精力持谨慎态度。 (3认同)
  • @codeape Mono 中有很多不受支持的功能和库;如果您的客户对以 Mono 为目标不是特别感兴趣,这可能不是一个严肃的选择。 (3认同)

Val*_*ity 5

就我个人而言,我有很多成功的经验,使用像 Xen 这样的虚拟机管理程序你可以在轻量级微内核虚拟机管理程序下同时运行 Linux 和 Windows,既不会显着影响性能,而且这种配置要灵活得多,让您可以随时轻松地在两者之间重新分配资源。

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

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

编辑:

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

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

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

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

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