Orange Pi OneにArmbianを導入した

 Orange Pi OneにはAndroid, Lubuntu, Debian8, Fedora22, Raspbian, OpenSuseのOSイメージが公式に公開されています。が、いずれも2015年夏頃の更新で止まっており古そう。
http://www.orangepi.org/downloadresources/

 OSイメージが古くても、導入後にapt-getすればとりあえずいいやと思いつつ、Raspbianを入れてみるつもりでいました。が、各所で国内外の既存ユーザの書き込みを見る限りいろいろ問題があるようで評判が良くないようです。Raspbian以外ならいいのかというとそうでもないようで、公式が公開しているOSイメージで運用しているユーザは少数派のようです。

 で、多くのユーザがArmbianというのを推奨しているようなので、Armbianを導入することにしました。
 

Armbianとは

  • ARMコアのプロセッサを搭載したシングルボードコンピュータ等のOS
  • Debian, Ubuntuを基にしたLinuxディストリビューション
    • 現時点で下記41モデルに対応
    • Banana Pi
    • Banana Pi M2
    • Banana Pi M2+
    • Banana Pi pro
    • Banana Pi+
    • Beelink X2
    • Clearfog
    • Cubieboard 1
    • Cubieboard 2
    • Cubietruck
    • Cubox-i
    • Hummingboard
    • Hummingboard 2
    • Lamobo R1
    • Lemaker Guitar
    • NanoPi M1
    • NanoPi NEO
    • Odroid C0/C1/C1+
    • Odroid C2
    • Odroid XU4
    • Olimex Lime 1
    • Olimex Lime 2
    • Olimex Lime A10
    • Olimex Micro
    • Orange Pi
    • Orange Pi 2
    • Orange Pi Lite
    • Orange Pi mini
    • Orange Pi One
    • Orange Pi PC
    • Orange Pi PC+
    • Orange Pi+
    • Orange Pi+ 2
    • Orange Pi+ 2e
    • pcDuino2
    • pcDuino3
    • pcDuino3 nano
    • Pine64
    • Roseapple Pi
    • Udoo Neo
    • Udoo quad

 

導入手順

 機種ごとにOS導入後のディスクイメージが提供されているので、それをSDに書き込んで起動するだけ。
 ※ディスクイメージなので、単にダウンロードしたファイルをSDカードにコピーするのではなく、Unix系OSで言うところのddコマンドで書き込む必要がある。

 以下、参考までにWindows環境を使った手順を記載(SD Formatter, 7Zip, Rufusが使用可能な前提)。

  1. microSDカードの準備
    1. SD Formatterで論理サイズ調整ONでフォーマット
  2. ディスクイメージのダウンロード
    1. ここから使用機種を選択
    2. 遷移先のページからディストリビューション(Jessie server/Xenial server/Jessie desktop)を選択してダウンロード*1
    3. ダウンロードしたファイル(例. Armbian_5.14_Orangepione_Ubuntu_xenial_3.4.112.7z)を7Zipで展開
  3. microSDカードへ書き込み
    1. Rufusで[不良ブロックを検出します]にチェックし、[フォーマット設定]に"DDイメージ"を選択後、先に7Zipで展開したファイル中のRAWファイル(例. Armbian_5.14_Orangepione_Ubuntu_xenial_3.4.112.raw)を選択し、[スタート]ボタンを押下して書き込む

 これだけで、起動可能なmicroSDカードが準備できます。

 ちなみに、上記手順でmicroSDの論理サイズ調整や不良ブロック検出を行っているのは、SD起因のトラブルを避けるためです。Getting Started - Armbian Documentationには、以下の記載があります。

Important note: Make sure you use a good & reliable SD card. If you encounter boot troubles in 95 percent it’s either insufficient power supply or a bad SD card or a bad card reader. Armbian can simply not run on unreliable hardware so checking your SD card with either F3 or H2testw is a must if you run in boot problems.

 ブート時に遭遇する問題の95%は電力不足か、SDカードまたはカードリーダの不良であると書いてあります。なので、手堅くSD周りの不良を検出・排除しようという狙いで手順に入れています。で、それでもブート時に問題があるようなら、F3やH2testwを使ってSDカードをチェックする必要があるでしょう(F3はLinuxまたはOSX版しかなく、H2testwはWindows版がありますが英語UIが無くドイツ語UIだけなので使い方を説明できません。)
 

初回起動手順

 sshで接続して設定を行うため、HDMIにモニタを接続する必要はありません。
 ※前述の通り、私はserver版を導入しているため、desktop版では異なる可能性があります。

 以下、参考までに既存のLAN内にOrange Pi Oneを接続する前提で手順を記載します(DHCPが利用できるネットワークで、sshクライアントが使用可能な前提)。

  1. OSイメージを書き込んだmicroSDカードをOrange Pi Oneに挿入
  2. Orange Pi OneにLANケーブルを接続
  3. Orange Pi Oneに給電(電源ケーブルを指すと勝手に電源も入ります)
  4. ルーター管理画面等を確認し、Orange Pi One(初期ホスト名:orangepione)のIPアドレスを特定する
    f:id:kachine:20160906094716p:plain
  5. sshでOrange Pi Oneに接続
  6. rootでログイン(初期パスワード:1234)
  7. rootパスワード変更を求められるので変更する
    f:id:kachine:20160906094845p:plain
  8. OSユーザ作成を求められるので新規OSユーザを作成する
  9. 画面解像度を720pから変更するか聞かれるが変更しない
    (もちろん必要に応じて変更。私はモニタを繋ぐ予定は無いので変更せず。)
  10. apt-get updateを実行
  11. apt-get upgradeを実行
    (Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?的なエラーが出たらしばらく待ってから再実行)
  12. apt-get autoremoveを実行
  13. 再起動(reboot)する
  14. sshでOrange Pi Oneに再接続
  15. 新規作成したOSユーザでログインできることを確認する
  16. シャットダウン(shutdown)する

 とりあえず、最低限はこれだけでいいと思います。
 あとは各種用途に応じてハードニングしたり、ロケール文字コード設定したり、アプリケーションを導入したり好きなように活用するだけです。
 

どんな感じの環境か

cpuinfo
Processor       : ARMv7 Processor rev 5 (v7l)
processor       : 0
BogoMIPS        : 2285.71

processor       : 1
BogoMIPS        : 2285.71

processor       : 2
BogoMIPS        : 2285.71

processor       : 3
BogoMIPS        : 2285.71

Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : sun8i
Revision        : 0000
Serial          : xxxxxxxxxxxxxxxxxxxx(※掲載のため伏せました)

 ARMv7のクアッドコアなのが確認できます。Allwinnerのプロセッサを使ったことはありませんでしたが、Allwinner H3がCortex A7のQuad-coreであるのは間違いないようですね。
 

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
1200000

 きっちり仕様通りの1.2GHzが最大動作周波数になっています(高負荷時に正常連続動作するのかは別の話)。
 

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
480000

 最低クロックは480MHzのようです。
 

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
480000

 特に負荷をかけていないので、現状も最低クロック。
 

cat /sys/devices/virtual/hwmon/hwmon1/temp1_input
53

 この状態でCPU温度は53℃。まだヒートシンクやファンは何も付けていません。
 

grep Mem /proc/meminfo
MemTotal:         506168 kB
MemFree:          272272 kB

 Totalが512MBに満たないのはVRAMとして持ってかれている分だと思います。
 

lsusb
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 外部にコネクタが設けられているフルサイズのUSBポートは1つ(と、USB OTG用のmicroUSBが1つ)ですが、内部的には4ポート存在するようです。
 

uname -a
Linux orangepione 3.4.112-sun8i #14 SMP PREEMPT Tue Jul 5 16:28:14 CEST 2016 armv7l armv7l armv7l GNU/Linux

 

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

 

hostname
orangepione

 イメージファイルを書き込む都合上、初期状態では自分でホスト名を決められません。一度に複数台のセットアップを行うと名前重複しますので、1台ずつセットアップしながら個別にホスト名を変更する必要がありそうですね。
 

netstat -atu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0    256 orangepione:ssh         192.168.1.133:53329     ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
udp        0      0 orangepione:ntp         *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp        0      0 *:bootpc                *:*
udp6       0      0 orangepione:ntp         [::]:*
udp6       0      0 localhost:ntp           [::]:*
udp6       0      0 [::]:ntp                [::]:*

 初期状態ではsshしかLISTENしてません。他に通信系はntpとdhcpだけ。
 


 といった感じ。
 使い込んでいないので性能云々はまだ未知数なところが多いですが、これ立派にPCですな。千円ちょっとでこんなものが入手できるとは凄い時代になったものですね。

 Orange Pi One上でCaddyを動かしてみようと思い、ARM用のCaddyを突っ込んで叩いてみたところ、とりあえず普通に動きそうなことは解ったという段階。クラウドを使った10円サーバーとかありましたが、シングルボードコンピュータなら約1000円サーバー(物理)って時代なんですねー。パフォーマンス測定とか何もしてませんけど、イントラ用の小規模なポータルとかなら十分実用になりそうな予感。運用も含めたコストパフォーマンス的にはどちらが良いのかは微妙ですけど。

 また、PCには無く、シングルボードコンピュータならではのGPIOを使わないのももったいないので、使用方法も含めてもう少し調べてみたいと思います。市販品を購入するには高価ですが、よくあるログ監視してアラート検知したらパトライト点灯させる装置のようなものも、安価かつ簡単に作れるはずです。
 



以上。

*1:server版はいわゆるCLIのみ、desktop版はGUI有。私はUbuntu系のXenial serverを選択。