Protectli社製VP2420にUbuntu 22.04 Server版を導入してみた時のメモ

# はじめに

PC Engines社製のAPU2がDiscontinuedになるということなので、バックオーダーの処理が終わる目安の1年以内には後継機種が発表されそうです。とはいえAMDもIntelも後継機の開発に協力してくれないとぼやいているので、別のビジネスに転向する可能性もあるかもしれません。PC Engines社の製品は回路図が公開されているなど、いろいろ手を加えるには良いボードだったので同様の廉価な製品がないことは少し寂しく感じています。

先行きが分からないので後継の候補として、Single Board ComputerなALIX/APUシリーズと比較するとデスクトップにもなる高価なPCですが、Protectli社製のVP2420を購入してみました。

[LinuxLookupのレビュー記事](https://www.linuxlookup.com/review/protectli_vault_pro_vp2410_review) を確認した範囲では、廉価版であるVP4210のメインボードはSHENZHEN ZEAL-ALL TECHNOLOGY社製([Intelのソリューション・マーケットプレース - YL-GMDZ4L-J4125](https://www.intel.co.jp/content/www/jp/ja/partner/showcase/offering/a5b3b000000MMZRAA4/ylgmdz4lj4125-multi-port-motherboard.html))のようなので、VP2420も同メーカーの産業用ボードを利用しているのかもしれません。

ただドキュメントをみるとVP2410とVP2420ではVerified Boot機構用のcoreboot imageへの署名付与の有無といった違いがあるので、ハードウェアは似ていても機能では差別化を図っているようです。

最近はMinisforumやBeelink, Chuwiといった格安Mini-PCが注目されていて、複数NICが搭載されるような本格的なPCもリリースされています。いくつか試していますが、動けば良いといったばかりにfirmwareの更新はほとんど実施されておらず、ネットワークルーターや24時間運用を考慮して設計されている、それなりの仕事をさせるための機器と同じような使い方は難しいかなと感じています。

今回オーダーしたVP2420はBIOSをcorebootにした以外は、メモリも含めて全てのオプションを外しています。corebootを除けば一般的なaliexpressなどで購入できる産業用PCと見た目の違いはほぼありません。前述のように中身も産業用として設計された点を除けば、これらのMini-PCと出自について大きな違いはないでしょう。

Amazon.comなどの通販サイトで購入する際にはAMI BIOSしか選択できませんが、Firmwareの入れ替えは自由にできると書かれています。とはいえAmazon.comの方が1割ほど高いので直販サイト以外を選択する理由はなさそうです。

過去に投稿された記事ではYANLING社製の同形機にProtectliのcorebootイメージが適用できたという報告もありました。実験は否定しませんが、敬意を払ってそういう行為を広く喧伝することは避けるべきだと思います。企業は事業を継続することが難しくなりますし、結果的にエコシステムを維持することができなくなります。

Protectliのネットショップから購入した際の到着までの時系列は次のとおりです。

* 6/18(日)にオーダー (VP2420 x2 via Worldwide Expedited (UPS))
* 6/20(火)に出荷 (現地時間では6/19月曜日の夜)
* 6/25(日)に自宅に配送 (消費税は5800円程度、国内輸送はヤマト)

消費税は荷物と引き換えに支払いました。FedExと同じように後日請求があると思っていたのと到着予定日よりも一日早く、いきなり予告なしに荷物が届いて少し慌てました。

# 参考資料

* [LinuxLookup - Protectli VP2410 レビュー記事](https://www.linuxlookup.com/review/protectli_vault_pro_vp2410_review)
* [インテル・ソリューション・マーケットプレース - YL-GMDZ4L-J4125製品紹介](https://www.intel.co.jp/content/www/jp/ja/partner/showcase/offering/a5b3b000000MMZRAA4/ylgmdz4lj4125-multi-port-motherboard.html)
* [Protectli Official Website](https://protectli.com/)
* [Protectli VP2420 Datasheet](https://protectli.com/wp-content/uploads/2023/03/VP2420-Datasheet-20230103.pdf)
* [Protectli KnowledgeBase](https://kb.protectli.com/)

# 第一印象

以前購入したYANLING社製のハードウェア、IBOX-501 N10P(Intel J1900)と比較すると、シルバーの縁取りがあって外見は高級な印象です。このYANLING社のN10PはFW1のオリジナルのようです。

DDR4メモリと空のM.2 SATA SSDを接続してから起動すると、netboot.xzyを改造したイメージが起動します。
OSを導入してからはF11キーを押して、Utilitiesを選択することでnetboot.xyzが起動します。

netboot.xyzは主要なOSのインストーラーやLiveイメージを選択的に実行できる便利な環境です。
最終的にインストールイメージは自分で作成しますが、一時的な修復のためにLiveCDを簡単に起動できるのは便利な仕様だと思います。

ただ、このカスタマイズされたnetboot.xyzの更新が間に合わないのか、いくつかのインストールイメージはpathの変更などによりダウンロードできない場合がありました。

## Memory

一般的なDDR4-3200 SO-DIMMメモリが1枚利用できます。

VP2410は16GBまでですが、VP2420は32GBまで認識してくれるので、Crucial CT32G4SFD832A (32GB) を差して3200MT/sで認識されています。

```bash:lshw -c memoryの出力抜粋
...
  *-memory
       description: System Memory
       physical id: 9
       slot: System board or motherboard
       size: 32GiB
     *-bank
          description: SODIMM DDR4 Synchronous 3200 MHz (0.3 ns)
          product: CT32G4SFD832A.C16FF
          vendor: Crucial
          physical id: 0
          serial: e778aab7
          slot: Channel-1-DIMM-0
          size: 32GiB
          width: 64 bits
          clock: 3200MHz (0.3ns)
  *-memory UNCLAIMED
       description: RAM memory
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 14.2
       bus info: pci@0000:00:14.2
       version: 11
       width: 64 bits
       clock: 33MHz (30.3ns)
       capabilities: pm bus_master cap_list
       configuration: latency=0
       resources: memory:91110000-91113fff memory:9111a000-9111afff
```

## Storage

Webサイト上では8GBのeMMCと書かれていますが、実際には16GBのeMMC (mmcblk0: mmc0:0001 AJTD4R 14.6 GiB) を搭載していました。Datasheet PDFファイルでは16GB eMMCと明記されていますが、メモリは16GB MaxとなっているのでWebサイトの32GB Maxと逆の表記になっています。

```bash:/dev/mmcblk0のhdparmによる速度計測
$ sudo hdparm -Tt /dev/mmcblk0

/dev/mmcblk0:
 Timing cached reads:   10642 MB in  2.00 seconds = 5326.25 MB/sec
 Timing buffered disk reads: 930 MB in  3.01 seconds = 309.35 MB/sec
```

SSDは2.5インチが/dev/sda, M.2 SATAが/dev/sdbとして認識されています。SATAとしては問題ないパフォーマンスが出せています。

```bash:2.5インチとM.2 SSDのhdparmによる速度計測
## Crucial MX500 1TB 2.5インチ(CT1000MX500SSD1)
$ sudo hdparm -Tt /dev/sda

/dev/sda:
 Timing cached reads:   11294 MB in  2.00 seconds = 5652.56 MB/sec
 Timing buffered disk reads: 1548 MB in  3.00 seconds = 515.95 MB/sec

## Western Digital WD Red 500GB M.2 SSD (WDS500G1R0B)
$ sudo hdparm -Tt /dev/sdb

/dev/sdb:
 Timing cached reads:   11444 MB in  2.00 seconds = 5728.34 MB/sec
 Timing buffered disk reads: 1540 MB in  3.00 seconds = 513.15 MB/sec
```

# Coreboot / Dashro 

Corebootだからどうしたという感じもしますが、APUで使い慣れているのと、シンプルであるがゆえに変更できる項目がないため構成管理が楽な点で好きです。iPXEを利用する際のインタフェースは便利だと思います。とはいえ特徴的な機能はIntel ME Disableぐらいかもしれません。

HDMI/DisplayPortが接続できることもあって、起動時のスプラッシュスクリーンがちゃんとしていたり、メニューの選択肢が少し違っていたりしてAPUとは少し印象が違います。APUではテキストインタフェースが独特な印象でしたが、VP2420はcursesライクなインタフェースでシリアルコンソールで接続しても画面が崩れることなく、外部ディスプレイを接続した時と同様の操作が可能です。

Knowledge Base にはcoreboot/dashro関連だけでなく、ハードウェアについてもドキュメントが整備されているので、CMOSリセットの方法なども簡単に資料が検索できます。

# UART

シリアルコンソールに接続するためにFINTEKのF81232を搭載しています。

Datasheet PDFファイルには次のように仕様がまとめられています。baud rate以外は一般的なので特に意識する必要はないでしょう。

* 115200 baud 
* No parity
* 8 databits
* 1 stopbit

Linuxホストであれば特にドライバがなくても、USBケーブルで接続すれば /dev/ttyUSB0 などのデバイスファイルを経由してアクセスすることが可能です。(チップのリリースが2008年、Linux kernelにドライバが取り込まれたのが2012年頃の模様)

```bash:USBケーブルで接続したUbuntuからシリアルコンソールへのアクセス
## ThinkPad x230 (Ubuntu 22.04)上での操作
$ lsusb
...
Bus 003 Device 002: ID 1934:0706 Feature Integration Technology Inc. (Fintek) USB TO UART BRIDGE 
...

$ sudo screen /dev/ttyUSB0 115200
```

VP2420で動作するUbuntu上ではあらかじめkernelの起動オプションに **console=ttyS0,115200n8** を設定しています。

```bash:
$ cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-5.15.0-75-generic root=UUID=5990360a-7ca1-44f5-baa4-0b49ceb84ce2 ro console=ttyS0,115200n8

$ grep ttyS0 /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,115200n8"
```

もし/etc/default/grubを編集したのであれば、/boot/grub/に反映するため``update-grub2``コマンドの実行が必要です。

APU6にはCP2104を搭載して同様にUSBケーブルを指すだけでコンソールに接続できますが、screenコマンドから利用する自分の環境ではVP2420のコンソールの方が快適に利用できています。

Windows10用のFINTEKドライバーは、Protectli Knowledge Base にリンクと関連情報があります。

* [https://kb.protectli.com/kb/com-port-tutorial/](https://kb.protectli.com/kb/com-port-tutorial/)

# OSのインストール

Ubuntu 22.04のサーバー版をAutoInstallを有効にしたISOイメージをUSBメモリに焼いて指してから電源を入れ、F11キーを押すとUSBメモリの名称が選択肢のリストに表示されます。

いつもどおりのイメージを使いました。

* https://github.com/YasuhiroABE/ub2204-autoinstall-iso

# OS導入後の確認作業

Protectli社のKnowledge Baseにも記載されているように、筐体に印刷されているNICの番号と認識されるenp1s0〜enp4s0の各番号は対応しています。

## dmidecodeコマンドの出力

シリアルナンバーなどは確認できませんが、Firmware(Dashro)のバージョンなどは問題なく確認できます。

```text:dmidecodeの出力抜粋
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.
Table at 0x77532000.

Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
        Vendor: 3mdeb
        Version: Dasharo (coreboot+UEFI) v1.1.0
        Release Date: 04/12/2023
        ROM Size: 16 MB
        Characteristics:
                PCI is supported
                PC Card (PCMCIA) is supported
                BIOS is upgradeable
                Selectable boot is supported
                ACPI is supported
                Targeted content distribution is supported
        BIOS Revision: 1.1
        Firmware Revision: 0.0

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: Protectli
        Product Name: VP2420
        Version: 1.0
        Serial Number: 123456789
        UUID: Not Settable
        Wake-up Type: Reserved
        SKU Number: Not Specified
        Family: Vault Pro

...
```

## lspciコマンドの出力

```text:lspciコマンドの出力全体
00:00.0 Host bridge: Intel Corporation Device 4538 (rev 01)
00:02.0 VGA compatible controller: Intel Corporation Device 4555 (rev 01)
00:08.0 System peripheral: Intel Corporation Device 4511 (rev 01)
00:14.0 USB controller: Intel Corporation Device 4b7d (rev 11)
00:14.2 RAM memory: Intel Corporation Device 4b7f (rev 11)
00:16.0 Communication controller: Intel Corporation Device 4b70 (rev 11)
00:17.0 SATA controller: Intel Corporation Device 4b63 (rev 11)
00:1a.0 SD Host controller: Intel Corporation Device 4b47 (rev 11)
00:1c.0 PCI bridge: Intel Corporation Device 4b38 (rev 11)
00:1c.1 PCI bridge: Intel Corporation Device 4b39 (rev 11)
00:1c.2 PCI bridge: Intel Corporation Device 4b3a (rev 11)
00:1c.4 PCI bridge: Intel Corporation Device 4b3c (rev 11)
00:1f.0 ISA bridge: Intel Corporation Device 4b00 (rev 11)
00:1f.3 Audio device: Intel Corporation Device 4b58 (rev 11)
00:1f.4 SMBus: Intel Corporation Device 4b23 (rev 11)
00:1f.5 Serial bus controller: Intel Corporation Device 4b24 (rev 11)
01:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
02:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
```

NICは01:00.0から順番に並んでいるので、APUと同様にVPP(FD.io)の設定ができそうです。

# 10GBASE-Tとの接続

足元まできているイーサネットケーブルが10GBASE-Tになったので、これに接続すると2.5Gbpsでリンクアップしました。

```ethtoolの出力
$ sudo ethtool enp1s0
Settings for enp1s0:
        Supported ports: [  ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Full
        Auto-negotiation: on
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        MDI-X: off (auto)
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes
```

2.5,5Gbpsが普及する以前のSFP+環境があって互換性に難があるので、実利用時には1000Base-T環境で使っています。

10GBASE-TはDACや光ファイバーと比較するとレイテンシ的に不利ですが、それでも1000Base-Tよりは早いので意味はあります。

2.5GBASE-Tは10GBASE-Tと同程度のレイテンシと10GBASE-Tと比較すれば発熱が低いなどの利点がありますが、期待どおりに動作しない例もそれなりにあるようなのでエコシステム全体を考えると導入の必要性は微妙だなと感じています。

10GBASE-TをメインにLANを構築する事例は1000BASE-Tに倣ってそれなりにあると思いますが、コスト的にはMMFを使ってもそれほど違いがなさそうです。10Gに移行する際はDACや光ケーブル(MMF)を中心にしたいので、こういったPCにSFP+スロットがある方が便利だろうなと考えています。

# さいごに

自社でQAを実施したり、BIOSをcorebootにするだけでなく、ドキュメントを積極的に整備するなど、地味な領域ゆえに頑張って差別化を目指していている様子に好感を持ちました。できるだけ利用していきたいと思っています。

日本製で似たようなコンセプトの製品があると良いのですが、OEM部品を集積しただけだったり、極限まで信頼度を高めた高価な製品がほとんどのようで、いずれにしてもクローズドな雰囲気が漂います。

またALIX, APUシリーズと比べると価格はかなり高いので、Raspberry PiとこういったMini PCの間を埋めるような信頼性の高い機器が入手可能になると良いのになぁとは感じました。

APUのように数を揃えることは難しいですが、これまでネットワーク境界に配置してきたAPUの代りに使っていこうと思います。

> もし10Gbps RJ45ポートを備えたモデルが出たら、ルーターとして使っているAPU2の入れ替えができるのになぁ。でも発熱を考えるとRJ45は1つで十分なので、SFP+を4つぐらい備えたモデルがあると内側ネットワークを光ファイバーとDACケーブルで置き換えられるから嬉しいかな。

最近増えてきた2.5GBASE-Tは裏側の10Gbps SFP+のバックエンドと相性が良くないので、低価格化をもう少し待って光ケーブルを中心にした10Gbpsで統一したいです。

以上