银河麒麟v10中禁用pci设备须通过内核参数、运行时绑定或bios/uefi三级方式实现:方法一(永久)用pciback.hide=添加grub参数;方法二(临时)绑定pci-stub或卸载驱动并黑名单;方法三(底层)在bios中直接禁用。

银河麒麟V10系统中需禁用特定PCI设备(如多余网卡、集成声卡、USB控制器或存在冲突的GPU)时,不能依赖图形界面开关,必须通过内核参数或运行时绑定控制实现——错误操作可能导致设备无法恢复、系统启动失败或关键服务中断。
方法一:通过内核启动参数禁用PCI设备(永久生效)
该方式在GRUB引导阶段即阻止内核枚举和驱动加载目标设备,适用于已知设备ID且需彻底隔离的场景。若禁用错误设备,系统可能无法启动,【务必先确认设备ID并备份GRUB配置】。
第一步:打开终端,执行 lspci -nn 列出所有PCI设备及其厂商/设备ID(格式如 02:00.0 0200: 8086:1539)。
第二步:定位目标设备行,记下其Bus:Device.Function地址(如 0000:02:00.0)及ID对(如 8086:1539)。
第三步:编辑GRUB配置:sudo nano /etc/default/grub,在 GRUB_CMDLINE_LINUX 行末尾空格后追加 pci=disablemsi,ignore_hotplug pciback.hide=(0000:02:00.0)(注意括号与空格不可省略)。
第四步:更新GRUB并重启:sudo update-grub && sudo reboot。重启后执行 lspci -s 02:00.0 -vv,若返回“Device not found”,说明禁用成功。
方法二:运行时卸载驱动并绑定到pci-stub(临时生效)
适用于测试性禁用或需保留设备物理存在但切断系统访问的场景。此操作不修改启动项,重启后自动恢复,但要求设备当前未被任何进程占用。
方法一:直接绑定到pci-stub模块(需提前加载)
执行 sudo modprobe pci-stub;
查出目标设备的vendor:device ID(如 8086 1539);
运行 echo "0000 1539" | sudo tee /sys/bus/pci/drivers/pci-stub/new_id;
再执行 sudo echo "0000:02:00.0" > /sys/bus/pci/devices/0000:02:00.0/driver/unbind;
【注意:unbound后若设备正被NetworkManager或Xorg使用,会立即报错退出】。
方法二:卸载对应驱动模块(更粗暴但有效)
先查驱动名:lspci -k -s 02:00.0 | grep "Kernel driver in use"(如输出 igb);
执行 sudo modprobe -r igb;
为防止模块自动重载,创建屏蔽文件:echo "blacklist igb" | sudo tee /etc/modprobe.d/blacklist-igb.conf;
最后运行 sudo update-initramfs -u 确保initramfs中也不加载该驱动。
方法三:BIOS/UEFI级禁用(最底层,无需操作系统参与)
当PCI设备由主板集成且支持固件级开关时,此法最可靠,完全绕过Linux内核。常见于服务器主板(如H3C R4930 G5、浪潮NF5280M6)的板载网卡、串口或SATA控制器。
开机反复按Del或F2进入BIOS设置 → 定位到“Advanced” → “Onboard Devices Configuration”或“Integrated Peripherals” → 找到对应设备名称(如“LAN Controller”、“USB 3.0 Controller”、“SATA Controller”)→ 设为“Disabled” → 保存退出。
该操作生效后,lspci 将完全无法列出该设备,dmesg | grep -i pci 中也不会出现相关初始化日志。部分国产主板需同时关闭“Fast Boot”才能使设置生效。











