Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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。

tadakado
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした