R86S レビューシリーズ
- R86S レビュー (Ubuntu 22.10 編 その1) - 外部記憶装置
- R86S レビュー(Ubuntu 22.10 編 その2 NAPT他) - 外部記憶装置
- R86S レビュー(OpenBSD 編) - 外部記憶装置 ← この記事
- R86S レビュー(pfSense 編 その1 初期設定) - 外部記憶装置
- R86S レビュー(pfSense 編 その2 Firewall, NAT) - 外部記憶装置
- R86S レビュー(pfSense 編 その3 IPSec VPN) - 外部記憶装置
前回までのあらすじ
小型謎PCである R86S に Ubuntu 22.10 をインストールし、iperf3 を使ってネットワーク性能を計測した。
OpenBSD
OpenBSD は NetBSD からフォークされた 4.4 BSD 由来の UNIX ライクなOSである。
The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. As an example of the effect OpenBSD has, the popular OpenSSH software comes from OpenBSD. (OpenBSD より)
私自身、OpenBSD を始めとする FreeBSD や NetBSD には触れたことがほとんどなく、適当なことは書けないため OpenBSD の紹介はここまでとする。
OpenBSD on R86S
R86S では、 OpenBSD は標準ではサポートされていない。 しかし、プロセッサ自体は x86_64 であり、基本的な部分は普通の x86_64 サーバーと変わらないため、起動ぐらいは問題なく行うことができると考えられる。 今回は、OpenBSD 7.2 をインストールし、起動から搭載されている 10G NIC(Mellanox Connect-X3) が動作するかまで検証することにする。
インストールメディアの作成
USBメモリからインストールするため、install.img
のamd64版をダウンロードする。

USBメモリへの書き込みは、Rufusを利用した。 公式には対応していないように見えるが、正常に書き込むことができた。
インストール
USBメモリとUSBキーボード、HDMIディスプレイを接続した。 ブート順はUbuntu 22.10のインストール時にUSBメモリ→eMMCの順に変更しているため、 特に設定変更なしにUSBメモリからインストーラーを起動することができた。
RJ45ポートにUTPケーブルを指しておくことで、DHCPでIPアドレスを自動で割り当ててくれる。 ホスト名やSSHサーバー、インストール先のディスクレイアウト、利用するミラーサーバー等の設定を行うことで、インストールが進む。 インストール完了後に再起動し、USBメモリを抜去した状態で起動すればローカルディスクからOpenBSDが起動する。
初回ログイン
$ ssh root@192.168.13.118 root@192.168.13.118's password: OpenBSD 7.2 (GENERIC.MP) #758: Tue Sep 27 11:57:54 MDT 2022 Welcome to OpenBSD: The proactively secure Unix-like operating system. Please use the sendbug(1) utility to report bugs in the system. Before reporting a bug, please try to reproduce it with the latest version of the code. With bug reports, please try to ensure that enough information to reproduce the problem is enclosed, and if a known fix for it exists, include that as well. r86s-openbsd# uname -a OpenBSD r86s-openbsd 7.2 GENERIC.MP#758 amd64
必要なパッケージ類のインストール
lspci
を使うために、pciutils
パッケージをインストールしておく。
r86s-openbsd# pkg_add pciutils quirks-6.42 signed on 2023-02-27T17:27:27Z pciutils-3.6.4: ok
Mellanox ConnectX-3 の確認
r86s-openbsd# lspci 00:00.0 Host bridge: Intel Corporation Device 4e24 00:02.0 VGA compatible controller: Intel Corporation Device 4e61 (rev 01) 00:14.0 USB controller: Intel Corporation Device 4ded (rev 01) 00:14.2 RAM memory: Intel Corporation Device 4def (rev 01) 00:16.0 Communication controller: Intel Corporation Device 4de0 (rev 01) 00:1a.0 SD Host controller: Intel Corporation Device 4dc4 (rev 01) 00:1c.0 PCI bridge: Intel Corporation Device 4db8 (rev 01) 00:1c.1 PCI bridge: Intel Corporation Device 4db9 (rev 01) 00:1c.2 PCI bridge: Intel Corporation Device 4dba (rev 01) 00:1c.4 PCI bridge: Intel Corporation Device 4dbc (rev 01) 00:1f.0 ISA bridge: Intel Corporation Device 4d87 (rev 01) 00:1f.3 Audio device: Intel Corporation Device 4dc8 (rev 01) 00:1f.4 SMBus: Intel Corporation Device 4da3 (rev 01) 00:1f.5 Serial bus controller [0c80]: Intel Corporation Device 4da4 (rev 01) 01:00.0 Ethernet controller: Intel Corporation Device 15f3 (rev 03) 02:00.0 Ethernet controller: Intel Corporation Device 15f3 (rev 03) 03:00.0 Ethernet controller: Intel Corporation Device 15f3 (rev 03) 04:00.0 Ethernet controller: Mellanox Technologies MT27500 Family [ConnectX-3]
r86s-openbsd# ifconfig lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 32768 index 5 priority 0 llprio 3 groups: lo inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5 inet 127.0.0.1 netmask 0xff000000 igc0: flags=808843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4> mtu 1500 lladdr 00:f0:cb:ef:d9:45 index 1 priority 0 llprio 3 groups: egress media: Ethernet autoselect (1000baseT full-duplex) status: active inet 192.168.13.118 netmask 0xffffff00 broadcast 192.168.13.255 igc1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:f0:cb:ef:d9:46 index 2 priority 0 llprio 3 media: Ethernet autoselect (none) status: no carrier igc2: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:f0:cb:ef:d9:47 index 3 priority 0 llprio 3 media: Ethernet autoselect (none) status: no carrier enc0: flags=0<> index 4 priority 0 llprio 3 groups: enc status: active pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33136 index 6 priority 0 llprio 3 groups: pflog
しかし、NICとしては認識できていないようである。
カーネルのログを確認すると、
r86s-openbsd# dmesg OpenBSD 7.2 (GENERIC.MP) #758: Tue Sep 27 11:57:54 MDT 2022 deraadt@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP real mem = 8341798912 (7955MB) avail mem = 8071569408 (7697MB) random: good seed from bootblocks mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 3.3 @ 0x74c7a000 (116 entries) bios0: vendor American Megatrends International, LLC. version "JSP18418" date 09/27/2022 bios0: GoWin Solution R86S acpi0 at bios0: ACPI 6.2 acpi0: sleep states S0 S3 S4 S5 acpi0: tables DSDT FACP MCFG FIDT SSDT SSDT SSDT HPET APIC PRAM SSDT SSDT NHLT LPIT SSDT SSDT DBGP DBG2 SSDT DMAR SSDT TPM2 WSMT FPDT acpi0: wakeup devices PEGP(S4) PEGP(S4) PEGP(S4) PEGP(S4) RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) PXSX(S4) RP05(S4) PXSX(S4) RP06(S4) PXSX(S4) [...] acpitimer0 at acpi0: 3579545 Hz, 24 bits acpimcfg0 at acpi0 acpimcfg0: addr 0xc0000000, bus 0-255 acpihpet0 at acpi0: 19200000 Hz acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Celeron(R) N5105 @ 2.00GHz, 2793.96 MHz, 06-9c-00 cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu0: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges cpu0: apic clock running at 38MHz cpu0: mwait min=64, max=64, C-substates=0.2.0.2.2.1.1.1, IBE cpu1 at mainbus0: apid 2 (application processor) cpu1: Intel(R) Celeron(R) N5105 @ 2.00GHz, 2793.96 MHz, 06-9c-00 cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu1: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache cpu1: smt 0, core 1, package 0 cpu2 at mainbus0: apid 4 (application processor) cpu2: Intel(R) Celeron(R) N5105 @ 2.00GHz, 2793.95 MHz, 06-9c-00 cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu2: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache cpu2: smt 0, core 2, package 0 cpu3 at mainbus0: apid 6 (application processor) cpu3: Intel(R) Celeron(R) N5105 @ 2.00GHz, 2793.96 MHz, 06-9c-00 cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu3: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache cpu3: smt 0, core 3, package 0 ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 120 pins acpiprt0 at acpi0: bus 0 (PC00) acpiprt1 at acpi0: bus 1 (RP01) acpiprt2 at acpi0: bus 2 (RP02) acpiprt3 at acpi0: bus 3 (RP03) acpiprt4 at acpi0: bus -1 (RP04) acpiprt5 at acpi0: bus 4 (RP05) acpiprt6 at acpi0: bus -1 (RP06) acpiprt7 at acpi0: bus -1 (RP07) acpiprt8 at acpi0: bus -1 (RP08) acpiprt9 at acpi0: bus -1 (RP09) acpiprt10 at acpi0: bus -1 (RP10) acpiprt11 at acpi0: bus -1 (RP11) acpiprt12 at acpi0: bus -1 (RP12) acpiprt13 at acpi0: bus -1 (RP13) acpiprt14 at acpi0: bus -1 (RP14) acpiprt15 at acpi0: bus -1 (RP15) acpiprt16 at acpi0: bus -1 (RP16) acpiprt17 at acpi0: bus -1 (RP17) acpiprt18 at acpi0: bus -1 (RP18) acpiprt19 at acpi0: bus -1 (RP19) acpiprt20 at acpi0: bus -1 (RP20) acpiprt21 at acpi0: bus -1 (RP21) acpiprt22 at acpi0: bus -1 (RP22) acpiprt23 at acpi0: bus -1 (RP23) acpiprt24 at acpi0: bus -1 (RP24) acpiec0 at acpi0: not present acpipci0 at acpi0 PC00: 0x00000000 0x00000011 0x00000001 "ACPI000E" at acpi0 not configured "INT34C8" at acpi0 not configured com4 at acpi0 UAH2 addr 0xfe036000/0x8 irq 34: ns16550a, 16 byte fifo acpibtn0 at acpi0: SLPB "PNP0C14" at acpi0 not configured "PNP0C14" at acpi0 not configured "INT33A1" at acpi0 not configured acpibtn1 at acpi0: PWRB tpm0 at acpi0 TPM_ 2.0 (CRB) addr 0xfed40000/0x5000, device 0x00000000 rev 0x0 "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured acpipwrres0 at acpi0: WRST acpicpu0 at acpi0: C1(@1 halt!), PSS acpicpu1 at acpi0: C1(@1 halt!), PSS acpicpu2 at acpi0: C1(@1 halt!), PSS acpicpu3 at acpi0: C1(@1 halt!), PSS acpipwrres1 at acpi0: FN00, resource for FAN0 acpipwrres2 at acpi0: FN01, resource for FAN1 acpipwrres3 at acpi0: FN02, resource for FAN2 acpipwrres4 at acpi0: FN03, resource for FAN3 acpipwrres5 at acpi0: FN04, resource for FAN4 acpitz0 at acpi0: critical temperature is 119 degC acpipwrres6 at acpi0: PIN_ acpivideo0 at acpi0: GFX0 acpivout0 at acpivideo0: DD1F acpivout1 at acpivideo0: DD2F cpu0: Enhanced SpeedStep 2793 MHz: speeds: 2001, 2000, 1900, 1800, 1700, 1600, 1500, 1400, 1300, 1200, 1100, 1000, 900, 800 MHz pci0 at mainbus0 bus 0 0:31:5: mem address conflict 0xfe010000/0x1000 pchb0 at pci0 dev 0 function 0 "Intel Jasper Lake Host" rev 0x00 inteldrm0 at pci0 dev 2 function 0 "Intel UHD Graphics" rev 0x01 drm0 at inteldrm0 inteldrm0: msi, JASPERLAKE, gen 11 xhci0 at pci0 dev 20 function 0 "Intel Jasper Lake xHCI" rev 0x01: msi, xHCI 1.10 usb0 at xhci0: USB revision 3.0 uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00 addr 1 "Intel Jasper Lake Shared SRAM" rev 0x01 at pci0 dev 20 function 2 not configured "Intel Jasper Lake HECI" rev 0x01 at pci0 dev 22 function 0 not configured sdhc0 at pci0 dev 26 function 0 "Intel Jasper Lake eMMC" rev 0x01: apic 2 int 16 sdhc0: SDHC 3.0, 200 MHz base clock sdmmc0 at sdhc0: 8-bit, sd high-speed, mmc high-speed, ddr52, dma ppb0 at pci0 dev 28 function 0 "Intel Jasper Lake PCIE" rev 0x01: msi pci1 at ppb0 bus 1 igc0 at pci1 dev 0 function 0 "Intel I225-V" rev 0x03, msix, 4 queues, address 00:f0:cb:ef:d9:45 ppb1 at pci0 dev 28 function 1 "Intel Jasper Lake PCIE" rev 0x01: msi pci2 at ppb1 bus 2 igc1 at pci2 dev 0 function 0 "Intel I225-V" rev 0x03, msix, 4 queues, address 00:f0:cb:ef:d9:46 ppb2 at pci0 dev 28 function 2 "Intel Jasper Lake PCIE" rev 0x01: msi pci3 at ppb2 bus 3 igc2 at pci3 dev 0 function 0 "Intel I225-V" rev 0x03, msix, 4 queues, address 00:f0:cb:ef:d9:47 ppb3 at pci0 dev 28 function 4 "Intel Jasper Lake PCIE" rev 0x01: msi pci4 at ppb3 bus 4 vendor "Mellanox", unknown product 0x1003 (class network subclass ethernet, rev 0x00) at pci4 dev 0 function 0 not configured pcib0 at pci0 dev 31 function 0 "Intel Jasper Lake eSPI" rev 0x01 azalia0 at pci0 dev 31 function 3 "Intel Jasper Lake HD Audio" rev 0x01: msi azalia0: no supported codecs ichiic0 at pci0 dev 31 function 4 "Intel Jasper Lake SMBus" rev 0x01: apic 2 int 16 iic0 at ichiic0 "Intel Jasper Lake SPI" rev 0x01 at pci0 dev 31 function 5 not configured isa0 at pcib0 isadma0 at isa0 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 vmm0 at mainbus0: VMX/EPT efifb at mainbus0 not configured scsibus1 at sdmmc0: 2 targets, initiator 0 sd0 at scsibus1 targ 1 lun 0: <SD/MMC, SCA128, 0000> removable sd0: 119296MB, 512 bytes/sector, 244318208 sectors vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets root on sd0a (5fca080fa3ba5689.a) swap on sd0b dump on sd0b inteldrm0: 1024x768, 32bpp wsdisplay0 at inteldrm0 mux 1 wsdisplay0: screen 0-5 added (std, vt100 emulation)
vendor "Mellanox", unknown product 0x1003 (class network subclass ethernet, rev 0x00) at pci4 dev 0 function 0 not configured
とあり、カーネルが対応するデバイスドライバを持っていないのか、残念ながら認識できていないようである。
Mellanox のNICドライバは、mcx(4)
として実装されている。
The mcx driver supports Mellanox 5th generation Ethernet devices. Chipsets and cards in this group include: - ConnectX-4 Lx EN - ConnectX-4 EN - ConnectX-5 EN - ConnectX-6 EN
ConnectX-4, 5, 6 についてはサポートしているが、ConnextX-3 についてはサポートされていない。 実際に、デバイスドライバのソースコードを確認すると、
static const struct pci_matchid mcx_devices[] = { { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT27700 }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT27700VF }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT27710 }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT27710VF }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT27800 }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT27800VF }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT28800 }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT28800VF }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT28908 }, { PCI_VENDOR_MELLANOX, PCI_PRODUCT_MELLANOX_MT2892 }, };
とあり、ConnectX-3 MT27500
は含まれない。
そのため、標準の OpenBSD では R86S に搭載されている ConnectX-3 は利用できない。
ドライバにパッチを当てることで利用できるかもしれない。
まとめ
R86S に OpenBSD 7.2 をインストールし、起動までは確認することができた。 しかし、ConnectX-3 に対応するドライバが存在しないことから、R86S に搭載されている 10G NIC は利用できないことが分かった。 どうしても利用したい場合は、別途ドライバにパッチを当てる必要があり、NIC 独自のオフロード機能の利用等は容易ではないと考えられる。