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が使用可能な前提)。
- microSDカードの準備
- SD Formatterで論理サイズ調整ONでフォーマット
- ディスクイメージのダウンロード
- ここから使用機種を選択
- 遷移先のページからディストリビューション(Jessie server/Xenial server/Jessie desktop)を選択してダウンロード*1
- ダウンロードしたファイル(例. Armbian_5.14_Orangepione_Ubuntu_xenial_3.4.112.7z)を7Zipで展開
- microSDカードへ書き込み
これだけで、起動可能な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クライアントが使用可能な前提)。
- OSイメージを書き込んだmicroSDカードをOrange Pi Oneに挿入
- Orange Pi OneにLANケーブルを接続
- Orange Pi Oneに給電(電源ケーブルを指すと勝手に電源も入ります)
- ルーター管理画面等を確認し、Orange Pi One(初期ホスト名:orangepione)のIPアドレスを特定する
- sshでOrange Pi Oneに接続
- rootでログイン(初期パスワード:1234)
- rootパスワード変更を求められるので変更する
- OSユーザ作成を求められるので新規OSユーザを作成する
- 画面解像度を720pから変更するか聞かれるが変更しない
(もちろん必要に応じて変更。私はモニタを繋ぐ予定は無いので変更せず。) - apt-get updateを実行
- apt-get upgradeを実行
(Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?的なエラーが出たらしばらく待ってから再実行) - apt-get autoremoveを実行
- 再起動(reboot)する
- sshでOrange Pi Oneに再接続
- 新規作成したOSユーザでログインできることを確認する
- シャットダウン(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
特に負荷をかけていないので、現状も最低クロック。
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を使わないのももったいないので、使用方法も含めてもう少し調べてみたいと思います。市販品を購入するには高価ですが、よくあるログ監視してアラート検知したらパトライト点灯させる装置のようなものも、安価かつ簡単に作れるはずです。
以上。