PVE ASM1166 直通

本文最后更新于 2025年9月10日 晚上

本文只是一个记录,所用的方法未必是最优的,即某些步骤可能没有实质作用

环境

PVE 9.0
内核版本 6.14.8-2-pve
CPU: AMD R9

背景

上周六买了点硬盘组阵列,由于主板没有足够的 SATA 接口,买了一个 ASM1166 的扩展卡,把 M.2 转成 SATA 接口。
谁料原本能直通的主板 SATA 控制器,在使用了这个扩展卡后,二者上的硬盘都无法直通了。

过程

1. 找到 SATA 控制器的 PCI 设备

1
lspci | grep SATA
1
2
3
4
5
6
lspci -nnk -d 1b21:1166 
04:00.0 SATA controller [0106]: ASMedia Technology Inc.
ASM1166 Serial ATA Controller [1b21:1166] (rev 02)
Subsystem: ZyDAS Technology Corp. Device [2116:2116]
Kernel driver in use: ahci
Kernel modules: ahci

发现控制器被 ahci 驱动占用

2. 查看 IOMMU 组

确保控制器在单独的 IOMMU 组中

1
find /sys/kernel/iommu_groups/ -type l

3. 把设备绑定到 vfio-pci 驱动

1
2
# /etc/modprobe.d/vfio.conf
options vfio-pci ids=1b21:1166

4. 更新 grub

在 /etc/default/grub 的 GRUB_CMDLINE_LINUX_DEFAULT 中加:

1
amd_iommu=on iommu=pt vfio-pci.ids=1b21:1166

5. 开机时加载 VFIO 所需的核心内核模块

1
2
3
4
5
# /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

6. 禁用 ahci 驱动

这一步会导致宿主机无法识别 SATA 硬盘,慎重操作

1
2
# /etc/modprobe.d/blacklist-ahci.conf
blacklist ahci

7. 重启

1
2
3
update-grub
update-initramfs -u
reboot

8. 验证

1
lsblk

确认硬盘无法被宿主机识别


PVE ASM1166 直通
https://term-inator.github.io/2025/09/10/asm1166-passthrough/
作者
Sicong Chen
发布于
2025年9月10日
更新于
2025年9月10日
许可协议