Areca系RAIDコントローラの時計をNTPを使わずに修正する手法


Areca社のRAIDコントローラにはイーサネットが付いており、そこから管理操作などを行うことができる。
コントローラが持つ時計は、起動直後は電源ON時点からカウントされる相対的な時間表示になっている。

この相対的な時間表示は、RAIDコントローラが何らかの手段により現在の時刻情報を得ることができた段階から、普通の時刻表示になる。

「なんらかの手段」というのは「NTPによる時間取得」と「管理画面にブラウザでアクセスした際に、ブラウザが動作しているホストの時刻をJava Scriptを使って取得」の2種類となっている。
つまり、自動的に時刻を合わせる手段というのはNTPを使用するしかない。

しかし、クローズドの環境で使用する場合、どうしても時刻を合わせたいという要求はある。
では、どうするか?

後者の「管理画面にブラウザでアクセスした際に、ブラウザが動作しているホストの時刻をJava Scriptを使って取得」に相当する動作をコマンドで実現し、他のホストから定期的に実行するようにする。

調査した結果、下記のコマンドを実行することで実現できた。

$ curl --user admin:0000 --digest  http://IPアドレス/SETTIME --data
"TYR=`date +%Y`" --data "TMT=`date +%m`" --data "TDA=`date +%d`" --data
"THR=`date +%k`" --data "TMN=`date +%M`" --data "TSC=`date +%S`"

上記はAreca系の標準設定である、ユーザ名「admin」、パスワード「0000」の場合の例である。
これをshell scriptにでもしてから、cronに登録すればよい。

Allwinner H3搭載のOrange piの機種間差異について(Orange pi 2 / pi mini 2 / pi PC)


Allwinner H3搭載のOrange piシリーズの違いについて、ハードウェアとOSの互換性に絞って解説。

2015/09/16現在、リリースされているAllwinner H3搭載のOrange piシリーズは下記の4機種
・Orange pi PLUS(OPi-PLUS)
Orange pi 2(OPi2)
Orange pi mini 2
Orange pi PC(OPi-PC)

まず、「Orange pi 2」と「Orange pi mini 2」はWiFi対応のためのチップの有無で、基盤自体は共通になるためどちらも「OPi2」としてとして扱われる。

「Orange pi PLUS」は、内蔵ストレージがある(eMMC)、SATAコネクタがある、など、差異が大きく、別扱いとなっている。

「Orange pi 2/mini 2」と「Orange pi PC」は、だいたい同じだが、特にUSB周りの構成が異なっている。
「Orange pi 2/mini2」では、基板上にUSBハブのチップが載っており、そこを経由してUSB機器を接続している。
「Orange pi PC」では、H3チップの持つUSBコントローラ機能を直接コネクタにつないでいる。
コスト削減になっているが、USB機器側でなにか変な動作した場合に、直接H3チップに影響がいくことになるため、壊れやすくはなっていると思われる。

機種間の差異はLinux起動時に読み込まれる「script.bin」と「uImage」にて対応している。
/bootディレクトリか/media/bootディレクトリに配置されている。
また、HDMI出力時の解像度変更は「script.bin」内の設定で行われている。

script.binについては、ある程度汎用性があるようで、他の機種用に出ているOSのscript.binを置き換えて、無理やり対応させる、ということは可能。

uImageのほうは、Linux kernelと関係しているので、置き換えてもうまく動かない可能性の方が高い。

Orange pi PCをLinuxで使う方法 / lobris版UbuntuをOrange pi 2などで使う


Allwinner H3搭載のOrange pi PC(OPi-PC)でLinux OSを使う方法は2つあります。

1つは、公式がリリースしているLubuntu 14.04 LTSイメージを使用する。
もう1つは、フォーラムでloborisさんが公開しているUbuntu 15.04 / Debian 8イメージを使用する。

公式のLubuntu 14.04は、一見、特に問題なく動くように見えますが
よくよく見てみると/lib/modules/ディレクトリの下とか、/bootの下のファイルとかに整合性がとれて無い部分があってちょっとアレです。

もう1つのloborisさんが公開している方がちゃんとしている感じがします。
公開場所「Debian & Ubuntu for Orange PI H3 boards

このイメージは下記のAllwinner H3搭載機で動作します。
・Orange pi plus(WiFi,内蔵フラッシュストレージ,SATAコネクタ搭載)
・Orange pi 2(WiFi搭載)
・Orange pi mini 2(WiFi無し)
・Orange pi PC(WiFi無し)

機種間で差異がありますが、それは機種毎に用意されている「script.bin」と「uImage」を適切に配置することで対処できます。

初心者に優しくない導入手順

1. 配布ディレクトリから必要なイメージファイルを入手
 「~.img.xz」がディスクイメージファイルです。
 目的とするOSのものをダウンロードします。

2. 配布ディレクトリから、最新のscriptbin_kernel.tar.gzを入手
 ディスクイメージの日付とscriptbin_kernel.tar.gzの日付を比較し
 scritbinの方が新しい場合、これもダウンロードします。

3. xzファイルを解凍
 「7-Zip」などを使ってファイルを解凍します

4. Win32 Disk Imager などを使ってmicroSDにディスクイメージを書き込みます
 書き込み後のmicroSDは、FAT32のパーテーションと、ext4のパーテーションにわかれます。

5. FAT32パーテーションをマウントし「script.bin」と「uImage」をコピーする
 FAT32パーテーションの中にscript.bin.OPI-2_1080p50などのファイルがあります。
 必要なファイルをコピーして配置します。
 Orange pi 2とOrange pi mini 2の場合
  「script.bin.OPI-2_~」から使いたいHDMIの解像度のファイルを「script.bin」としてコピー
  「uImage_OPI-2」を「uImage」としてコピー
 Orange pi PCの場合
  「script.bin.OPI-PC_~」から使いたいHDMIの解像度のファイルを「script.bin」としてコピー
  「uImage_OPI-2」を「uImage」としてコピー
 Orange pi plusの場合
  「script.bin.OPI-PLUS_~」から使いたいHDMIの解像度のファイルを「script.bin」としてコピー
  「uImage_OPI-PLUS」を「uImage」としてコピー

6. Orange piにmicroSDを入れて起動

7. Orange piにログイン
 ユーザ名「orangepi」、パスワード「orangepi」

8. ファイルシステムの拡張
 そのままだとmicroSDの一部しか使われていないので、未使用領域も使える様にコマンドを実行
 「sudo fs_resize」
 パスワードは「orangepi」

9. 再起動
 「sudo reboot」

10. 再起動後、scriptbin_kernel.tar.gzをOrange piに転送

11. scriptbin_kernel.tar.gzを展開

12. 配布物にあるlib/modules/3.4.39/を/lib/modules/3.4.39/にコピーして置き換え

13. script.binとuImageを/media/boot/ にコピーして置き換え

14. 再起動

送料込みで18.15ドルのOrange pi PCが届いた


2016/11/07追記

わずか2000円強でAndroidやLinuxを動かせるギガビットLAN搭載のシングルボードコンピューター「Orange Pi PC2」が登場」で紹介されている、Orange Pi PC2に関する記事はこちら
  ↓
Allwinner H5搭載のOrange Pi PC2が$23.13で発売開始


送料込みで$18.15のRaspberry piみたいなやつの「Orange pi PC」が届いた。

(Orange pi PCについての情報は「Kickstarter案件つぶしのAllwinner H3搭載Orange pi PC $15」も参照のこと。)

8/26にFree shippingの「China Post Registered Air Mail」配送で発注を行い
8/31に発送連絡があり
9/2から日本郵政のEMSトラッキングで追跡できるようになり
9/6に通関し、9/7に到着しました。

IMG_5483s

箱と添付の紙はOrange Pi 2の時と同じものでした。
中身だけが違う

20150907_200506s

プラケースに入ってない方がOrange pi PC。
部品レイアウトが似た感じがあるものの、位置がいろいろ違い、Orange Pi 2用に穴開けたケースの流用はそのままでは無理そうだ。

HDMIコネクタと、USB2ポートとLANは同じような位置だけど
電源コネクタと、オーディオ/VIDEO端子の位置が大きくずれている。
また、基盤固定用のネジの位置も全然違う
20150908_011012s

さて、Orange pi PCは、OS部分をmicroSDに入れて起動する。
現在、使えるのはAndroidとLubuntu 14.0.4の2つ。
Orange pi 2と共通、というような記述が一部に見られたが、配布イメージ名がそれぞれ別なので、たぶん、違うんでしょう。
(例えばpi mini 2用のを使うと、起動して使えそうな感じはするものの、実際はUSBポートが一部動作しない、とかあるようです)

で、ダウンロードページには「Google Drive」と「Baidu Cloud」の2つが書いてありますが、Googleのリンクが動いていません。
Orange piのページでは良くあることで、基本Baiduからダウンロードで、Google Driveがあればラッキー、ぐらいに考えてください。

まぁ、Baiduは非常に遅い、というのもありますので、私がdropboxに転載したのも置いときます。
Lubuntu_1404_For_OrangePiPC_v0_8_0_.img.xz

Lubuntuは起動するとUbuntu 14.04.1 LTSです。
apt-get upgradeとapt-get updateを実行すると14.04.3 LTSになります。

20150907_204158

sshでログインすると、こんな感じです。

Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.4.39 armv7l)

 * Documentation:  https://help.ubuntu.com/

Last login: Mon Sep  7 19:54:20 2015 from 192.168.1.xxx
orangepi@orangepi:~$ su -
Password:
root@orangepi:~# uname -a
Linux orangepi 3.4.39 #41 SMP PREEMPT Sun Jun 21 13:09:26 HKT 2015 armv7l armv7l armv7l GNU/Linux
root@orangepi:~#

ちなみに、初期パスワードは「orangepi」です。

root@orangepi:~# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 5 (v7l)
processor       : 0
BogoMIPS        : 1920.00

processor       : 1
BogoMIPS        : 1920.00

processor       : 2
BogoMIPS        : 1920.00

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          : 1400519007185c240a8e
root@orangepi:~# cat /proc/meminfo
MemTotal:        1026864 kB
MemFree:          524968 kB
Buffers:           52156 kB
Cached:           260984 kB
SwapCached:            0 kB
Active:           270396 kB
Inactive:         175108 kB
Active(anon):     132964 kB
Inactive(anon):     8248 kB
Active(file):     137432 kB
Inactive(file):   166860 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:        270336 kB
HighFree:          48768 kB
LowTotal:         756528 kB
LowFree:          476200 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        132444 kB
Mapped:            32356 kB
Shmem:              8848 kB
Slab:              32096 kB
SReclaimable:      21912 kB
SUnreclaim:        10184 kB
KernelStack:        2360 kB
PageTables:         3224 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      513432 kB
Committed_AS:    1249212 kB
VmallocTotal:     245760 kB
VmallocUsed:       29312 kB
VmallocChunk:     212992 kB
root@orangepi:~#

中身自体は、Linux kernelにかかわるところが独自なだけで、あとは普通にRaspberry用のUbuntu/Lubuntuです。
aptの設定に、Allwinner H3搭載のOrange pi用の設定がないので、機種依存となるkernel周りは、aptではアップデートされません。
なので、現状、インターネットに公開するサーバとしてOrange piを使用するには、不安なところです。