6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2018-09-20

はじめに

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

ハードウェア

ロープロファイル ブラケットのL字のところが曲げてない規格になっている。ロープロファイル ブラケットのL字を加工修正するのは大変なので、代わりにフルサイズ ブラケットを以下のように加工すると、何とかなる。斜めのカットは必須では無いが、カードを挿しやすくなるかも。右の写真は実際のQNAPの製品のブラケット。[ ]内は必要な工具。

  1. 下側を5mm(PCIeのスペック的には4.05mm)カットする[金ノコ]
  2. 筐体に合わせて上側のカットする場所を決めてカットする(だいたい90mmぐらいになるように)[金ノコ]
  3. 筐体に合わせてM3のねじ穴を切る[ドリル、ハンドタップ]
Lowprofile_Flat_Bracket.png Lowprofile_Flat_Bracket2.jpg

ソフトウェア

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。

6
6
0

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
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?