`pci-stub.ids=` 是 Linux 内核启动参数,用于在系统初始化阶段预先将指定 Vendor ID:Device ID 的 PCI 设备绑定到 `pci-stub` 哑驱动,防止宿主机原生驱动加载,常用于 KVM 设备直通隔离 。
参数格式与用法
-
基本语法:`pci-stub.ids=vendor:device:subvendor\[:subdevice\[:class\[:class_mask]]]`
-
多设备分隔:多个 ID 组合用英文逗号分隔(无空格),如 `10de:1b80,8086:100e`
-
配置位置:写入 GRUB 命令行(如 `/etc/default/grub` 中的 `GRUB_CMDLINE_LINUX`),示例:`GRUB_CMDLINE_LINUX="... pci-stub.ids=10de:1b80"`
-
生效方式:修改后需执行 `update-grub`(或 `grub2-mkconfig`)并重启系统方可生效
关键说明
-
驱动状态:该参数仅在内核启动时生效,使 `pci-stub` 驱动在探测阶段直接接管匹配设备,无需后续手动写入 `/sys/bus/pci/drivers/pci-stub/new_id`
-
现代替代方案:`pci-stub` 已逐渐被 `vfio-pci` 取代(更稳定、支持 IOMMU 组隔离),现代直通场景推荐优先使用 `vfio-pci.ids=` 参数配合 `rd.driver.pre=vfio-pci`
-
获取设备 ID:通过 `lspci -nn` 查看目标设备的 `VendorID:DeviceID`(十六进制,如 `10de:1b80`)
注意事项
-
若内核未编译内置 `pci-stub` 或模块未加载,该参数无效(需确认 `CONFIG_PCI_STUB=y` 或模块可用)
-
错误格式(如含空格、大小写错误)会导致参数忽略,需通过 `dmesg | grep pci-stub` 验证是否成功添加 ID