nginx
petalinux
zybo

ZYBO + Petalinuxでnginxを動作確認するまでのメモ

やりたいこと

手元にPetalinuxの動作確認済みのZYBOがある。
このZYBOをウェブサーバとして使いたい。
また、LANを2つ割り当てられるようにしたい。

ウェブサーバにはnginxを使用。
nginxである理由は私が使ってみたいというだけだ。

LANを2つ用意する理由はただのこだわり。
構成にこだわらない(つまり、LANが1つだけでよい)のであれば、
後述の手順"2つ目のLANの設定"は不要。

きっかけ

ZYBOをウェブサーバとして使用できるようになればIoTデバイスの勉強もできるのでは?
という思いのもとでやってみようと思いました。

また、もしも、ウェブサーバを公開して動かすなら、
セキュアなウェブの勉強もいつかできたらいいなという思いもあります。
LANを2つ用意しようとしているのは、
インタフェースごとにアクセス制限を変えるなどの体験(?)もできたらいいなといった思いもあるからです。

用意したもの

ハードウェア

  • ZYBO (Petalinux動作確認済み)
  • Windows PC ※OSは10 - 1709
  • スイッチングハブ

ソフトウェア

  • VMware Workstation 12.5 Player
  • CentOS 7.3 ※Petalinuxツール (v2017.3)インストール済み

作成

参考にした資料

  • Xilinx INC. ( June 29, 2017 )『PetaLinux Tools Documentation Reference Guide UG1144 (v2017.2)』

Petalinuxのプロジェクト作成からカーネルコンフィグまで

まずコマンドを記載(出力は長いので未記載)

ex.)
$ petalinux-create -t project --template zynq -name <プロジェクト名>
$ cd <プロジェクト名>
$ petalinux-config --get-hw-description=<HDFが入っている場所>

1つ目のLANの設定

  • とくに設定は不要。
    • ZYBOのEthernet PHYを使用するため。

2つ目のLANの設定

参考にした資料
- wiki - developer.ridgerun.com『How to use USB device networking
- Zynq + Yocto で USB デバイスをつくってみた

  • ZYBOのUSB OTGをLANとして使用する。

    • "Kernel configuration" -> "Device Drivers" -> "USB support" -> "USB Gadget Support" -> "USB Gadget Drivers" の中の "Ethernet Gadget" を有効('m')にする。
  • 詳しく調べていませんが、下記の内容でファイルへ上書き保存。

project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
/include/ "system-conf.dtsi"
/ {
    usb_phy0: phy0 {
        #phy-cells = <0>;
        compatible = "usb-nop-xceiv";
        reset-gpios = <&gpio0 46 1>;
    };
};

&usb0 {
    dr_mode = "peripheral";
    usb-phy = <&usb_phy0>;
};

nginx の追加からビルドまで

  • 下記の内容をファイルに追記。
project-spec/meta-user/recipes-core/image/petalinux-image.bbappend
IMAGE_INSTALL_append = " nginx"
  • Petalinuxツールでrootfsを設定し、ビルド。
    • rootfsの設定画面で、"user packages"の中の"nginx"を有効にする。
ex.)
$ petalinux-config -c rootfs
$ petalinux-build

動作確認

1つ目のLANの動作確認

接続確認

  • ZYBOとWindowsPCをスイッチ経由でイーサネット接続する。
  • pingなどで接続を確認。

ウェブサーバの動作確認

  • ブラウザで動作を確認。

image.png

2つ目のLANの動作確認

接続

  • ZYBOとWindowsPCをUSB接続する。

モジュールの読み込みからIPアドレスの設定/設定確認まで

  • telnetでZYBOに接続し、下記のコマンドを実行。
    • "modprobe g_ether"を実行したときに、Windows PC側でイーサネット接続を検出する。
    • 詳しく調べていないが、メモを作成している時点では、Windows PCにドライバのインストールが必要であり、自動認識はしなかった(状況が変わりやすいと思われる為、都度、最新の情報を探すようにした方が良いと思われる)。
ex.)
# modprobe g_ether
# ifconfig usb0 <2つ目のLANのIPアドレス> up
# ifconfig usb0
usb0      Link encap:Ethernet  HWaddr ■:■:■:■:■:■
          inet addr: <2つ目のLANのIPアドレス>

ウェブサーバの動作確認

  • 1つ目のLANの動作確認と同様に確認できた。