importriri/arch-hypervisor-lab

GitHub: importriri/arch-hypervisor-lab

该项目记录了在 Arch Linux 笔记本上通过 KVM/VFIO 构建四域 GPU 直通 hypervisor 实验室的完整过程,并提供了罕见的 Optimus 笔记本 PCIe 电源管理卡死修复方案。

Stars: 0 | Forks: 0

# Arch Linux Hypervisor 实验室 一台笔记本电脑,四个相互隔离的虚拟机,以及在它们之间传递的一块 GPU。 本仓库记录了整个构建过程:配置、启动配置文件,以及我在此过程中遇到的每一个 bug。 ## 你将构建什么 ``` ┌──────────────────────────────────────────────────────────────────┐ │ HOST — Arch Linux (hypervisor-01) │ │ TTY only · systemd-boot · Btrfs+LUKS2 · nftables │ │ iGPU → TTY display · Sway (minimal, for Looking Glass) │ ├──────────────┬──────────────┬──────────────┬─────────────────────┤ │ 🟢 CLEAN │ 🟠 DIRTY │ 🔴 DEV/3D │ 🟡 MALWARE LAB │ │ Gaming │ Gaming │ Work │ Static & dynamic │ │ verified │ mods │ software │ malware analysis │ │ 10.10.1.0 │ 10.10.2.0 │ 10.10.3.0 │ 10.10.4.0 ISOLATED │ ├──────────────┴──────────────┴──────────────┴─────────────────────┤ │ dGPU — one VM at a time via VFIO · Looking Glass │ │ GPU handoff protocol between domains │ └──────────────────────────────────────────────────────────────────┘ ``` 宿主机没有桌面环境。 Sway 仅作为最小化的 Wayland compositor 安装,用于运行 Looking Glass 客户端。 ## 我是如何构建它的 三个阶段。每个阶段都可以独立复现。 **1. 基础安装 → [arch-bootstrap](https://github.com/importriri/arch-bootstrap)** — 🚧 *进行中* 一个从头编写并测试的 bash 安装程序:LUKS2、Btrfs subvolumes、 systemd-boot、带有自定义密钥的 Secure Boot、`linux-hardened`、zram。 从分区到 Secure Boot 签名的每个阶段——外加一个专用于 VM 存储的可选第二块加密磁盘——都已经编写完成,并正按里程碑逐步发布。三个测试层为其提供保障:单元测试(真实的函数、模拟的工具)、真实的 LUKS2 header 检查,以及在 loop 设备上进行的完整分区→挂载 pipeline。剩下的是真机硬件验证。 实时的路线图位于该仓库的 README 中。 **2. 配置 → Ansible roles** — 🚧 *进行中* 基础安装之后的所有内容:网络 domains(nftables)、libvirt VM、 VFIO/GPU passthrough、GPU 交接 hooks、宿主机加固、恶意软件实验室。 编写为可复用的 roles,因此整台机器可以通过一条命令重建。 位于其独立的仓库中: [privatestack-ansible](https://github.com/importriri/privatestack-ansible) — 其 README 中的 brick catalog 记录了已落地的内容。 **3. 实验室 → 本仓库** 随着每个组件上线并在真实硬件上得到验证,配置和文档将发布于此。 目前的工作正集中在**阶段 1 和 2**。 ## 前置条件 - 一台带有专用 NVIDIA GPU 的笔记本电脑(Optimus/hybrid 模式) - 在 BIOS 中启用了 VT-d (IOMMU) 的 Intel CPU - 愿意从零开始安装 Arch Linux ## 特定于笔记本电脑的 bug —— 大多数指南未涵盖 **症状:** 在带有 GPU passthrough 的 VM 启动时,系统立即完全卡死。 **原因:** 笔记本电脑固件强制执行的激进 PCIe 端口电源管理。 **修复:** 在 systemd-boot VFIO kernel 参数中设置 `pcie_port_pm=off`(以及可选的 `pcie_aspm=off`)。 **寻找该问题花费的时间:** 约 2 个月。当时没有可用的 AI 工具。 在台式机上,相同的电源管理系列通常会在失败前在 `dmesg` 中自行报告(`Unable to change power state from D3cold to D0`); 而在这台笔记本电脑上,系统会在写入任何日志之前就卡死。针对笔记本电脑/Optimus 的情况在指南中仍然缺失。 → 完整文档:[`problems/gpu-freeze-power-management.md`](problems/gpu-freeze-power-management.md) ## 仓库结构 ``` arch-hypervisor-lab/ ├── README.md ├── SETUP.md # how to reproduce the lab, stage by stage ├── problems/ # bugs encountered and solved — written as they happen ├── configs/ │ ├── network-domains.md # the four network segments, nftables design │ ├── boot/ # systemd-boot profiles (VFIO entry included) │ ├── libvirt/ # VM XML definitions │ ├── hooks/ # GPU switch scripts │ └── malware-lab/ # REMnux/INetSim configuration └── screenshots/ # proof it works ``` ## 关键词 `KVM laptop` `VFIO laptop` `GPU passthrough laptop` `NVIDIA Optimus passthrough` `pcie_port_pm laptop fix` `KVM freeze laptop` `four domains hypervisor` `Windows VM KVM` `gaming VM Linux` `systemd-boot VFIO` `Arch Linux hypervisor` `Looking Glass KVM` `malware lab KVM` `TTY hypervisor`
标签:Arch Linux, DAST, GPU直通, Linux运维, 应用安全, 恶意软件分析, 系统提示词, 系统配置, 虚拟化, 身份验证强制