search
LoginSignup
2

More than 3 years have passed since last update.

posted at

updated at

QNAPのPCIeに一般のカードが挿せないので何とかする (How to install my PCIe card in QNAP)

はじめに

PCIeが搭載されているQNAP NASの多く(おそらくエンタープライズ向けでないもの)は、PCIeのブラケットが特殊なものになっていて、ロープロファイル フラット ブラケットと読ばれている。そのため、普通のPCIeカードが挿さらない。(以下のような背面の場合) これによって、省スペースのNASが実現しているのだが。。。

ハードウェア

ロープロファイル ブラケットのL字のところが曲げてない規格になっている。ロープロファイル ブラケットのL字を加工修正するのは大変なので、代わりにフルサイズ ブラケットを以下のように加工すると、何とかなる。斜めのカットは必須では無いが、カードを挿しやすくなるかも。右の写真は実際のQNAPの製品のブラケット。[ ]内は必要な工具。
1. 下側を5mm(PCIeのスペック的には4.05mm)カットする[金ノコ]
2. 筐体に合わせて上側のカットする場所を決めてカットする(だいたい90mmぐらいになるように)[金ノコ]
3. 筐体に合わせてM3のねじ穴を切る[ドリル、ハンドタップ]
Lowprofile_Flat_Bracket.png

ソフトウェア

QNAP上でのカーネルモジュールのコンパイル

一つ目は、PCIeカードを直接、QNAP上で使用する場合。
目的のPCIeカードのカーネルモジュールが存在しない場合には、コンパイル環境を整備してモジュールを作成する必要あり。
1. パッケージ管理ソフトのインストール
https://github.com/Entware/Entware/wiki/Install-on-QNAP-NAS を参考に
http://bin.entware.net/other/Entware_1.00std.qpkg をインストール
2. 以下を実行して、必要なものをインストール
(例)
PATH=/opt/bin:$PATH
opkg install pciutils
opkg install gcc
opkg install diffutils patch
opkg install git git-http
3. カーネルモジュールをコンパイル
https://sourceforge.net/projects/qosgpl/ からファイルをダウンロードしたりする。詳細はググって他で探して。
4. カーネルモジュールをロードするスクリプトを書いて、自動実行の機能により起動時にロードする
https://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup

仮想マシンへのPCI passthrough

二つ目は、PCIeカードを仮想マシンで使用する場合。
QNAP上の仮想マシンへ、PCIeカードのアクセスを許可してやる。

lspci
...
07:00.0 XXXX controller: ...

と出たら、この番号(07, 00, 0)をメモして、

ls /QVS/usr/etc/libvirt/qemu
...
01234567-89ab-cdef-0123-456789abcdef.xml

目的の仮想マシンのID(上の例では、01234567-89ab-cdef-0123-456789abcdef)を取得し、

/QVS/usr/bin/virsh edit 01234567-89ab-cdef-0123-456789abcdef

で、仮想マシンの設定を変更する。具体的には、以下の内容を<devices>の中に追加する。

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
      </source>
    </hostdev>

残念な事にこの方法は、ファームウェアのアップデートで設定が消えてしまうので、必要に応じで再実行しやすい様にシェルスクリプトを作成する。まず、上記の内容<hostdev>...</hostdev>をファイル(pci_device.xml)にし、以下のシェルスクリプトを作成する。

#!/bin/bash
DOMAIN=01234567-89ab-cdef-0123-456789abcdef
/QVS/usr/bin/virsh attach-device $DOMAIN --file pci_device.xml --config
/QVS/usr/bin/virsh reboot $DOMAIN

感想

金属板削ったり、自作PC以上に自作感が味わえる。やるなQNAP。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2