TrueNAS 篇一:TrueNAS Core 高级应用:pci 硬件直通
TrunNAS Core 的高级应用
硬件直通的操作
看过某国内博主的TrueNAS介绍,有些大佬虽然粉丝很多,但是对于freebsd系统的了解还是比较简单的,说TrueNAS Core不能直通硬件,所以我这里写一篇 TrueNAS Core的硬件直通指南。
重要的关注点: 不是所有的pci设备都可以直通,这点和主板的支持有关系,还有bios里面相关的设置也要打开,pci设备直通必须要支持硬件中断。TrueNAS Core 的虚拟机底层是 bhyve,软件上来说支持除了“显卡直通”以外的所有pci硬件直通。
首先查找硬件pci id
类似 linux的 lspci,TrueNAS Core的核心是 FreeBSD 相关的命令是
pciconf -lv
root@eth[~]# pciconf -lv
hostb0@pci0:0:0:0: class=0x060000 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5af0 subvendor=0x1849 subdevice=0x5af0
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge'
class = bridge
subclass = HOST-PCI
vgapci0@pci0:0:2:0: class=0x030000 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5a85 subvendor=0x1849 subdevice=0x5a85
vendor = 'Intel Corporation'
device = 'HD Graphics 500'
class = display
subclass = VGA
none0@pci0:0:14:0: class=0x040300 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5a98 subvendor=0x1849 subdevice=0xc892
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster'
class = multimedia
subclass = HDA
none1@pci0:0:15:0: class=0x078000 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5a9a subvendor=0x1849 subdevice=0x5a9a
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine'
class = simple comms
ahci0@pci0:0:18:0: class=0x010601 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5ae3 subvendor=0x1849 subdevice=0x5ae3
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller'
class = mass storage
subclass = SATA
pcib1@pci0:0:19:0: class=0x060400 rev=0xfb hdr=0x01 vendor=0x8086 device=0x5ad8 subvendor=0x1849 subdevice=0x5ad8
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A'
class = bridge
subclass = PCI-PCI
pcib2@pci0:0:19:1: class=0x060400 rev=0xfb hdr=0x01 vendor=0x8086 device=0x5ad9 subvendor=0x1849 subdevice=0x5ad9
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A'
class = bridge
subclass = PCI-PCI
pcib3@pci0:0:19:2: class=0x060400 rev=0xfb hdr=0x01 vendor=0x8086 device=0x5ada subvendor=0x1849 subdevice=0x5ada
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A'
class = bridge
subclass = PCI-PCI
pcib4@pci0:0:19:3: class=0x060400 rev=0xfb hdr=0x01 vendor=0x8086 device=0x5adb subvendor=0x1849 subdevice=0x5adb
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A'
class = bridge
subclass = PCI-PCI
xhci0@pci0:0:21:0: class=0x0c0330 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5aa8 subvendor=0x1849 subdevice=0x5aa8
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI'
class = serial bus
subclass = USB
isab0@pci0:0:31:0: class=0x060100 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5ae8 subvendor=0x1849 subdevice=0x5ae8
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface'
class = bridge
subclass = PCI-ISA
none2@pci0:0:31:1: class=0x0c0500 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5ad4 subvendor=0x1849 subdevice=0x5ad4
vendor = 'Intel Corporation'
device = 'Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller'
class = serial bus
subclass = SMBus
re0@pci0:1:0:0: class=0x020000 rev=0x11 hdr=0x00 vendor=0x10ec device=0x8168 subvendor=0x1849 subdevice=0x8168
vendor = 'Realtek Semiconductor Co., Ltd.'
device = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller'
class = network
subclass = ethernet
ahci1@pci0:3:0:0: class=0x010601 rev=0x02 hdr=0x00 vendor=0x1b21 device=0x0612 subvendor=0x1849 subdevice=0x0612
vendor = 'ASMedia Technology Inc.'
device = 'ASM1062 Serial ATA Controller'
class = mass storage
subclass = SATA
用其中一段来简单介绍下
ahci1@pci0:3:0:0: class=0x010601 rev=0x02 hdr=0x00 vendor=0x1b21 device=0x0612 subvendor=0x1849 subdevice=0x0612`
vendor = 'ASMedia Technology Inc.
device = 'ASM1062 Serial ATA Controller
class = mass storage
subclass = SATA
ahci1@pci0:3:0:0: 是需要直通设备的 pci id 0:3:3:0
这段可以看出来这是一个 sata 控制器
vendor: 生产商
device: 具体型号
subclass: SATA
如果我们要直通这个sata控制器,需要这么做
1. 登录truenas面板
2. 找到系统下面的子菜单 ------ 微调 *这里是调整内核和引导相关参数的地方,我们要直通硬件需要在这里填写相关参数*
3. 选择添加
4. 变量 pptdevs
5. 值 :`"3/3/0"` `注意这里:填写的是pciid, 上文我们获得的 pci id 0:3:3:0;
6. 再举个例子: 上文可以看到 ahci0@pci0:0:18:0: 这也是一个sata控制器,我们需要填写值: 0/18/0
7. 再来个例子:如果要一次直通多个设备 "2/0/0 1/2/6 4/9/0";
接下来需要重启机器
虚拟机相关设置
1. 在已创建的虚拟机子菜单里面找到设备添加设备
2. 类型选择 PCI Passthru Device
3. 如果设置上面的直筒设置成功这里就会出现可以选择的直通设备
最后启动虚拟机就可以在虚拟机看到直通设备了。
其实还是很简单的,比linux的设备简单多了。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
值友4295124786
校验提示文案
值友6077619293
校验提示文案
值友6077619293
校验提示文案
值友4295124786
校验提示文案