V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chaleaochexist
V2EX  ›  程序员

在 GUI Linux 下安装虚拟机, 虚拟机运行 GUI Linux . 求推荐虚拟机.

  •  
  •   chaleaochexist · 2023-01-11 13:38:05 +08:00 · 2262 次点击
    这是一个创建于 707 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近买了一台 NUC12 + 64G 内存的机器.

    硬件上安装 archLinux+KDE, 在 archLinux 上跑一个虚拟机,虚拟机装 archLinux+KDE. 剩下的所有工作都在这个 archLinux 上面进行.

    还可能安装几个 centos/CLI 学习 k8s.

    我的问题是这个虚拟机应该用啥? 目前倾向于 kvm+qemu 不知道对 arch 的支持怎么样? GUI 是否卡顿? 其他选择的话只有 virtualbox 了. vmware 暂时不考虑因为没有 lisence.

    谢谢大家.


    大家可能会好奇为什么 archlinux 里面跑一个 archlinux 这不是脱裤子放屁吗. 其实是因为我对我的 NUC 不是很有信心. 我很担心硬盘挂了里面东西都没了, 跑个虚拟机, 可以定时备份.还有就是三五年之后更新硬件(硬盘)也更方便.

    18 条回复    2023-01-12 16:22:47 +08:00
    chaleaochexist
        1
    chaleaochexist  
    OP
       2023-01-11 13:39:20 +08:00
    1240P + 64G 内存 跑 1 个 GUI Linux + 5 个 CLI linux 应该问题不大吧...
    就是写写代码.跑跑 k8s. k8s 轻度使用.
    also24
        2
    also24  
       2023-01-11 13:43:07 +08:00 via Android   ❤️ 1
    直接跑个 PVE ,装上桌面自己管理自己
    stein42
        3
    stein42  
       2023-01-11 13:46:46 +08:00   ❤️ 1
    用 libvirt 管理 kvm+qemu 。
    有个图形界面 virt-manager 。
    图形界面没有的功能用命令行和改 xml 文件。

    只是备份的话用 btrfs 或 zfs 就可以了。
    sky96111
        4
    sky96111  
       2023-01-11 13:48:33 +08:00 via Android   ❤️ 1
    virt-manager ,libvirt 的前端,可使用 KVM 。开启 OpenGL 加速,虚拟化 Linux 的话图形性能非常好
    AS4694lAS4808
        5
    AS4694lAS4808  
       2023-01-11 13:51:37 +08:00   ❤️ 1
    我觉得 virtualbox 省事,不用记那么多命令行,除了 GPU 支持不好,但是 NUC 。。就当没有 GPU 吧。
    其实硬件直接装个 PVE 最方便。
    guowq
        6
    guowq  
       2023-01-11 14:16:16 +08:00 via Android   ❤️ 1
    个人所有 linux 都是 Debian 安装 pve ,跑 lxc 基本没有性能损失,公网 pbs 增量异地备份
    debuggerx
        7
    debuggerx  
       2023-01-11 20:58:10 +08:00 via Android   ❤️ 1
    如果只是因为担心硬盘挂而选择使用虚拟机,个人觉得大可不必,物理机一样可以做定时备份
    chaleaochexist
        8
    chaleaochexist  
    OP
       2023-01-11 21:45:22 +08:00
    @debuggerx 确实我搜索过相关的信息 似乎 rsync 就可以.
    但是没做过. 也不太会...担心出问题...
    KENNHI
        9
    KENNHI  
       2023-01-11 22:27:01 +08:00 via Android
    lxc 最轻量吧
    webcape233
        10
    webcape233  
       2023-01-11 22:41:11 +08:00 via iPhone
    你的选择没问题,虚拟机对 arch 支持?不知如何作答整不会了,Linux 不都一样么。 虚拟机里面 gui 性能怎样,别用 3d 的桌面就行,会更流畅。
    你说的场景我我用过
    chaleaochexist
        11
    chaleaochexist  
    OP
       2023-01-11 23:57:54 +08:00
    @webcape233 不好意思, 我语文是体育老师教的. 其实我想表达的是, arch 对虚拟机的开箱支持.是如何的.
    最后, 谢谢.
    chaleaochexist
        12
    chaleaochexist  
    OP
       2023-01-11 23:58:51 +08:00
    @webcape233 哎其实我想表达的是 arch 安装在虚拟机里的性能如何?
    譬如 deepin 在虚拟机里的表现就不是很好.


    果然是体育老师教的- -
    hanxiV2EX
        13
    hanxiV2EX  
       2023-01-12 00:26:13 +08:00 via Android
    用 docker 吧
    secondwtq
        14
    secondwtq  
       2023-01-12 05:09:55 +08:00   ❤️ 1
    这题我会。如果只是这些需求的话感觉用 container 或许也可以。这里面可能需要解决一下 GUI 的一些问题,大概不如虚拟机简单直接,但是开销更小,玩熟之后也更灵活。

    我没用 container 跑过 GUI ,但是我做过一个大概更加脱裤子放屁的事情。因为我现在用的是 Wayland 环境,然后我发现 Steam 的 Remote Play 大概对这玩意支持不是很好( github.com/ValveSoftware/steam-for-linux/issues/6148 )因为 Steam 是闭源的所以不怎么方便折腾。为了能用 Remote Play ,就又做了个 QEMU 虚拟机,上面跑 Openbox ,只装必要的包和 Steam ,然后插了张空闲的显卡 passthrough 过去(中间手动 hack 了新版 kernel 引入的一个 bug lore.kernel.org/lkml/[email protected]/T 不然 tty 就没法用了,然而我又时不时会改下 Wayland Compositor ...),写了个脚本启动和关闭。注意这上面是会跑 Proton 的,也就是为了解决一个 Linux 自己的兼容性问题跑了个虚拟机,然后上面又跑了解决 Linux 和 Windows 兼容性问题的 Emulator ...

    刚才有几个明显的坑已经说了,还有几个:
    * 我尝试过用 virtio-gl 代替 GPU Passthrough ,这个是 QEMU-KVM 这个栈给出的开源 GPU Paravirtualization 方案。说实话,纯 OpenGL 程序跑得还可以。但是 Proton 现在主要方向是 DXVK ,是需要 Vulkan 支持的,而 virtio-gl 现在是只给 OpenGL API 做虚拟化的。有人在利用 virtio-gl 的基础做一个 Vulkan 的 Paravirtualization 叫 Venus ,这个看样子已经基本可用了,但是不在目前 Mesa 和 QEMU 的稳定版里面(当时我测试的时候已经进 Mesa 的 testing 包了,但是 QEMU 的 patch 好像很久都没合进去),还好是 Arch ,折腾一阵编译好了,但是不能用,折腾到最后发现应该是 N 卡闭源驱动栈提供的一些内核对象不支持 mmap 操作,无法在两个系统之间共享内存,恰好这个闭源驱动栈的新硬件的内核部分有开源的,所以可能折腾一下能行,不过我一时半会不清楚该怎么改 ...
    这个 Paravirtualization 的性能损耗会比 GPU Passthrough 要高,intel 驱动应该不会有这些问题,但是如果是核显的话本身性能也低。我去试的基础是本身主 GPU 性能足够损失一截也无所谓。这也是为啥要折腾 Vulkan 支持,更新的实现和开销更小的 API 也有助于降低 Paravirtualization 的损耗。但是 anyway Vulkan 支持现在还不成熟,虽然现在普通桌面一般还都是 CPU 渲染或 OpenGL ,但是需要游戏或者 Vulkan 编程的时候就成了问题。另外这玩意现在应该只是处理通用 API ,需要 GPGPU 等 GPU 特定 API 的时候不知道会怎么处理 ...
    * 我尝试在虚拟机和主机之间共享游戏文件夹,这个 QEMU 也提供了 virtiofs 的解决方案。但是可能是因为我叠的 debuff 太多了(我还是在 ZFS 上用的),偶尔会出现不稳定。其实还有一些其他的方案,但是到底都是两个内核访问同一个文件系统,本身就是很奇怪的一个事情,使用 container 的话直接共享就行。
    * 以前我都是虚拟 Windows ,我本来以为 Linux 内核会直接支持在 Linux 上虚拟 Linux 时,虚拟机没有使用的内存就不占用宿主机内存,这样我可以很低开销让虚拟机一直跑在后面。但是查了一下发现这个东西貌似挺麻烦的,不过折腾折腾估计还是可以的。
    * 键鼠如何虚拟化解决方案也不唯一,现在我主要用的是 evdev passthrough ,相当于把所有事件转发给虚拟机,这样在虚拟机里用快捷键不会被宿主机拦截。但是在目前的设置下我还是需要手动处理虚拟机运行过程中热插拔键鼠的情况,并且偶尔会有不稳定。

    非常凑巧的是大概同时间我还对硬盘分区进行了调整——先是换了一块更大的系统盘,这个过程很简单,就是插一个 Arch 安装盘启动,给新盘分区格式化,然后 rsync 原来的系统盘到新盘里,最后修改一下 fstab 里面的 UUID 和 bootloader 里面的系统盘分区标签(如果你用的是一样的标签就可以不做 ...),就可以直接从新盘启动。然后还把系统分区和 Home 分区分离了,这个更简单,就是分好区之后挪一下 Home 目录,fstab 加一条。我的意思是在直接备份很简单的情况下,只为了备份需求跑虚拟机实在有点大炮打蚊子的感觉。如果你只用包管理器装软件的话,桌面 Linux 大半的自定义其实都在 Home 里面,除了 Home 之外备份个 /etc 和 /boot 就差不多了(最多还有你的包列表)。所有这些都是可以通过直接拷贝文件解决的问题。虚拟机对我来说代价太重了,而且最重要的是不知道什么时候会出问题,比如我在主机可以用 turbostat 看 CPU 功耗和频率,虚拟机就跑不了(有可能是我设置问题)。

    另外 Arch 属于在软件选择上没有偏向性的系统,基本只有 pacman ,glibc ,systemd 几个给你框下来了(内核可以改,因为内核的 userspace API 相对稳定反倒问题不大),剩下的基本都是你自己发挥。所以不存在“Arch 对虚拟机支持怎样”的说法。另外如果只是使用一个系统的话,没必要两个系统都装完整的 GUI 。可以向我一样只装最小化的 GUI ,或者干脆不装 GUI 直接 passthrough GPU 。
    webcape233
        15
    webcape233  
       2023-01-12 06:27:15 +08:00 via iPhone
    @chaleaochexist 呃,其实我就是想说的虚拟机里面装 arch ,只是前面发表前改了下整反了,慢不慢看 de ,deepin 慢是正常的,那桌面太耗性能,gnome 新版如果没有 clqssic 模式可能也不太好,kde 别开一些 3d 特效也没问题,不行就用 xfce
    chaleaochexist
        16
    chaleaochexist  
    OP
       2023-01-12 10:20:24 +08:00
    @secondwtq 你玩的太高级了. 不过"非常凑巧的是大概同时间我还对硬盘分区进行了调整——" 这一段确实增强了我不安装虚拟机跑 GUI 的信心.
    zhywang
        17
    zhywang  
       2023-01-12 15:45:40 +08:00
    为啥基座一定要用 Arch ,是不是可以考虑直接上 Promox 作为基座?
    DianQK
        18
    DianQK  
       2023-01-12 16:22:47 +08:00 via Android
    我用的就是 NUC12 ,然后 PVE 加 Arch
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3200 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 12:45 · PVG 20:45 · LAX 04:45 · JFK 07:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.