PVE直通2

 

帮我重新写一个详细的配置流程。
主机:N305
系统:PVE9.1,VM系统是 LibreELEC
要求:将VM 视音频通过HDMI直通到电视;ROM文件:ADL-N_TWL_GOPv21_igd.rom, 已放入到PVE系统的:/usr/share/kvm/ 下。

 

 

### 配置流程:Proxmox VE 9.1 中实现 Intel N305 核显和音频直通至 LibreELEC 虚拟机

以下是为 Intel Processor N305 主机(运行 Proxmox VE 9.1)配置 LibreELEC 虚拟机(VM)的详细流程。该流程旨在实现核显(集成 UHD Graphics,PCI ID 0000:00:02.0)和音频控制器(PCI ID 0000:00:1f.3)的直通,从而允许 VM 通过主机 HDMI 接口输出视音频信号至电视。前提是 VT-d 已启用(基于先前诊断),且指定 ROM 文件 `ADL-N_TWL_GOPv21_igd.rom` 已置于 `/usr/share/kvm/` 目录下。此方法基于 Proxmox 官方文档和社区验证的实践,确保兼容 Alder Lake-N 平台。

#### 前提条件
- **硬件验证**:确认主机 BIOS 中已启用 VT-d(Intel Virtualization Technology for Directed I/O)和 iGPU 作为主显卡。禁用 Legacy/CSM 模式,并将 Boot Mode 设置为 UEFI 以优化兼容性。进入 BIOS(通常按 Del 或 F2 键),保存更改后重启。
- **软件环境**:Proxmox VE 9.1 已安装,内核版本至少为 6.17(支持自动 IOMMU)。LibreELEC 镜像已下载(推荐最新稳定版,如 LibreELEC 12.x)。
- **文件准备**:ROM 文件 `ADL-N_TWL_GOPv21_igd.rom` 已上传至 `/usr/share/kvm/`。如果文件权限不足,执行 `chmod 644 /usr/share/kvm/ADL-N_TWL_GOPv21_igd.rom`。
- **风险注意**:直通后,主机将失去核显控制(无本地显示输出)。通过 Proxmox Web 界面(https://<主机IP>:8006)或 SSH 管理主机。备份 VM 配置以防意外。
- **所需工具**:SSH 访问主机 shell,或通过 Web 控制台执行命令。

#### 步骤 1: 配置主机内核模块
确保 VFIO 模块加载,以支持 PCI 设备直通。
1. 编辑 `/etc/modules` 文件(使用 nano 或 vim):
```
sudo nano /etc/modules
```
添加以下行:
```
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
```
2. 更新 initramfs 以应用更改:
```
sudo update-initramfs -u -k all
```
3. 重启主机:
```
sudo reboot
```
4. 验证模块加载:
```
lsmod | grep vfio
```
预期输出应显示上述模块已加载。

#### 步骤 2: 创建或编辑 LibreELEC 虚拟机
通过 Proxmox Web 界面创建新 VM 或编辑现有 VM。
1. 登录 Proxmox Web 界面。
2. 创建 VM:
- 选择 “Create VM”。
- 节点:选择当前节点。
- VM ID:分配一个唯一 ID(如 100)。
- Name:输入 “LibreELEC-HDMI”。
- OS:上传 LibreELEC ISO 镜像,或使用网络引导(LibreELEC 支持 PXE,但推荐 ISO)。
3. 配置 VM 硬件:
- **System** 选项卡:
- BIOS:OVMF (UEFI) – 必需,支持 ROM 初始化和 HDMI 输出。
- Machine:q35 – 推荐,支持 PCIe 直通。
- **Display** 选项卡:设置 Graphic card 为 “None” – 避免与直通 iGPU 冲突,导致 VM 挂起。
- **CPU** 选项卡:Type 为 “host” – 传递主机 CPU 特性。
- **Memory**:分配至少 2GB(推荐 4GB 以支持高清视频)。
- **Disk**:添加存储磁盘(至少 8GB,用于 LibreELEC 安装)。
- **Network**:添加网络接口(桥接或 NAT,根据需求)。
4. 完成创建后,安装 LibreELEC:
- 启动 VM,连接 ISO 并引导。
- 完成安装后,关闭 VM 并移除 ISO。

#### 步骤 3: 添加 PCI 设备直通
在 VM 的 Hardware 选项卡中添加直通设备。
1. 编辑 VM 配置(VM 必须处于关闭状态)。
2. 添加 PCI Device:
- 第一个设备:选择 “0000:00:02.0” (核显)。
- 勾选:All Functions(如果可用)、ROM-Bar、PCI-Express、Primary GPU。
- 第二个设备:选择 “0000:00:1f.3” (音频控制器,用于 HDMI 音频)。
- 勾选:ROM-Bar、PCI-Express。
3. 保存更改。

#### 步骤 4: 编辑 VM 配置文件以指定 ROM 和高级参数
Web 界面配置可能不足以完全启用 ROM,因此需手动编辑配置文件。
1. 编辑配置文件(替换 <VMID> 为实际 ID,如 100):
```
sudo nano /etc/pve/qemu-server/<VMID>.conf
```
2. 添加或修改以下行(确保覆盖现有 hostpci 条目):
```
bios: ovmf
machine: q35
vga: none
hostpci0: 0000:00:02.0,pcie=1,romfile=ADL-N_TWL_GOPv21_igd.rom,x-igd-opregion=on
hostpci1: 0000:00:1f.3,pcie=1
args: -device vfio-pci,host=00:02.0,legacy-igd=1
```
- 解释:
- `romfile`:指定自定义 ROM 以确保 GOP 初始化和 HDMI 输出。
- `x-igd-opregion=on`:启用 Intel iGPU 操作区域,支持 UEFI 显示。
- `legacy-igd=1`:可选参数,提升 Alder Lake-N 在 Legacy 模式下的兼容性(如果 UEFI 模式下无输出,可尝试移除)。
- `args`:附加 QEMU 参数,确保直通稳定性。
3. 保存文件并验证语法(无命令,但可重启 VM 测试)。

#### 步骤 5: 启动 VM 并测试 HDMI 输出
1. 连接 HDMI 电缆:将电视 HDMI 输入连接至主机 HDMI 输出端口。
2. 启动 VM:
- 通过 Web 界面启动。
- VM 引导后,电视应显示 LibreELEC 界面(包括 UEFI 引导阶段,如果 ROM 配置正确)。
3. 在 LibreELEC 中验证:
- 检查视频输出:播放媒体文件,确认高清分辨率和刷新率正常。
- 检查音频:通过 HDMI 播放声音,确认电视扬声器输出(LibreELEC 默认支持 Intel Display Audio)。
- 如果无输出,检查 LibreELEC 设置:System > Audio > 输出设备,选择 “HDMI” 或 “Intel Audio”。
4. 监控日志:
- 主机端:执行 `journalctl -u pve-vm-<VMID>.service -f` 查看启动日志。
- VM 内:通过 SSH(LibreELEC 默认启用,用户名 root,密码 libreelec)执行 `dmesg | grep i915` 验证 iGPU 驱动加载。

#### 常见故障排除
- **无 HDMI 输出**:确认 ROM 文件路径正确;尝试仓库其他 ROM 变体;确保主机 BIOS 禁用 CSM。
- **黑屏或挂起**:移除 VM Display 设置;验证 IOMMU 组隔离(先前输出显示 Group 0 和 13 独立)。
- **音频问题**:确认直通了 00:1f.3;LibreELEC 中重置音频设置。
- **错误代码(如 Code 43,在 Windows VM 中常见)**:不适用于 LibreELEC,但若出现驱动问题,重启 VM 或更新 LibreELEC。
- **性能问题**:分配更多 CPU 核心/内存;确保主机无其他负载。

此流程应实现完整的视音频直通。如果在执行中遇到具体错误,请提供相关日志输出以便进一步诊断。参考 Proxmox PCI Passthrough 文档和 GitHub 仓库 README 以获取补充信息。