Orange Pi Zero に Armbian をインストールしてみた


##Orange Pi Zero とは
PC watch で[約700円の超小型開発ボード](http://pc.watch.impress.co.jp/docs/news/1028628.html)として紹介されていた Orange Pi Zero を [AliExpress](https://www.aliexpress.com/) で購入してみました。
Raspberry Pi互換を謳う GPIO 付きの超小型 Linux ボードです。とっても小さいです。
(ただし、GPIO ポートは空きパターンのみでピンヘッダは付いていませんでした)

Orange Pi Zero にはメモリサイズの違いで 256M / 512M の 2種類があるようです。今回は 512M 版を購入しました。

・Orange Pi
http://www.orangepi.org/orangepizero/
http://linux-sunxi.org/Xunlong_Orange_Pi_Zero

動作確認を兼ねて、OSインストールから Webサーバの起動までを行ってみました。

##Armbian のインストール
###イメージのダウンロード
http://www.armbian.com/download/
機種の一覧から、[Orange Pi Zero](https://www.armbian.com/orange-pi-zero/) を選択します。

Stable releases から jessie server か Xenial server を選んでダウンロードします。
今回は jessie server を選択しました。

###ファイルの展開
ダウンロードしたイメージは 7zip で圧縮されているので、展開します。
7z の展開に対応したアーカイバがない場合は、p7zip を brew でインストールします。

```bash
$ brew install p7zip
$ 7z e Armbian_5.24_Orangepizero_Debian_jessie_3.4.113.7z
```

###SDカードのフォーマット
用意した microSD を [SD Formatter](https://www.sdcard.org/jp/downloads/formatter_4/) でフォーマットします。

Mac で作業をしている場合、フォーマット完了後自動的にマウントされるので、アンマウントします。

```bash
$ sudo diskutil unmountdisk /dev/disk2
```

###イメージの書き込み
dd コマンドでイメージを書き込みます。of= に指定するデバイス名を間違えないように。

```bash
$ sudo dd if=Armbian_5.24_Orangepizero_Debian_jessie_3.4.113.img of=/dev/rdisk2 bs=1m
```

###起動
イメージを書き込んだ microSD を装着します。
また、LANケーブルを挿しておきます。電源の Micro USB ケーブルをつなぐと電源が入ります。

しばらくすると DHCP でアドレスが割り当たるので、DHCPサーバのログからIPアドレスを探します。

###ログイン
ssh でログインします。
初回ログインでは、デフォルトのパスワードで rootログインできます。

Login: root
Password: 1234

```
  ___                               ____  _   _____
 / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_) |__  /___ _ __ ___
| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | |   / // _ \ '__/ _ \
| |_| | | | (_| | | | | (_| |  __/ |  __/| |  / /|  __/ | | (_) |
 \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_| /____\___|_|  \___/
                       |___/

Welcome to ARMBIAN Debian GNU/Linux 8 (jessie) 3.4.113-sun8i
System load:   0.15             Up time:       9 min
Memory usage:  9 % of 494Mb     IP:            192.168.1.101
CPU temp:      53°C
Usage of /:    7% of 15G

root@orangepizero:~$
```

ログイン後、rootパスワードの変更と、一般ユーザの作成を求められるのでそれぞれ指示に従って対応します。
ユーザを作成したあと、一般ユーザから sudo で root に昇格できるので、rootユーザのパスワードは無効にしておくと良いでしょう。

```bash
$ sudo passwd -l root
```


##無線LANの停止
Orange Pi Zero には wifi が内蔵されていますが、技適認証がないので日本国内では使用できません。
そのため、wifi を停止します。

```bash
$ sudo echo "blacklist xradio_wlan" > /etc/modprobe.d/disable_xradio_wlan.conf
$ sudo reboot
```

再起動した後、ログインして　wlan0 インタフェイスが無効になっていることを確認します。

```bash
$ ifconfig wlan0
wlan0: error fetching interface information: Device not found
```

## Avahiのインストール
Orange Pi Zero に固定IPアドレスを割り振らない場合、毎回IPアドレスを探すのは面倒なので mDNS でアクセスできるようにします。

```bash
$ sudo apt-get install avahi-daemon libnss-mdns
$ sudo systemctl enable avahi-daemon
$ sudo systemctl start avahi-daemon
$ ps -ef |grep orangepi
avahi    12345     1  0 07:04 ?        00:00:00 avahi-daemon: running [orangepizero.local]
```
これで、Orange Pi Zero へ "orangepizero.local" でアクセスできるようになりました。

##CADDY のインストール
動作確認を兼ねて Webサーバをセットアップしてみます。

CADDY: The HTTP/2 web server with automatic HTTPS
https://caddyserver.com

###ダウンロード
```bash
$ cd ~
$ mkdir caddy
$ cd caddy
$ curl https://caddyserver.com/download/build\?os=linux\&arch=arm\&features=|tar zxpf -
```

###インストール
```bash
$ cd ~/caddy
$ sudo cp caddy /usr/local/bin/
$ sudo cp init/linux-systemd/caddy.service /etc/systemd/system/
$ sudo mkdir -p {/etc,/etc/ssl,/var/log}/caddy
$ sudo chown www-data:www-data {/etc/ssl,/var/log}/caddy
```

###セットアップ
以下の内容で Caddyfile を作成します。

```Caddyfile
*:8080
gzip
log /var/log/caddy/access.log
root /var/www/html
```

Caddyfile を配置します。

```bash
$ sudo cp Caddyfile /etc/caddy/
```

ダミーの HTMLファイルを作成しておきます。

```bash
$ sudo mkdir -p /var/www/html
$ sudo echo "Hello orange pi!" > /var/www/html/index.html
```

systemd へサービス登録します。

```bash
$ systemctl enable caddy
$ systemctl start caddy
```

###動作確認
Webブラウザでアクセスしてみます。
http://orangepizero.local:8080/

```
Hello orange pi!
```