Orange Pi One Plus用のUbuntu Serverをインストールしてみた


Orange Pi One Plus用のUbuntu Serverがいつの間にかにでていたのでダウンロードしてみた。

公式ダウンロードページ」から入手して、microSDに書き込み。
初期ユーザは「root」でパスワードは「orangepi」

X-Windowsが設定されていないので、HDMI出力はコンソール画面のまま起動し、loginプロンプトが表示されます。

で・・・
実は、ちょっと不可解なことが起きてまして
うちの環境だとUSBコネクタにキーボードをつけた状態だと電源オン状態から起動せず、途中でエラーメッセージを出力しつづけてるという状態に・・・
Androidの時は5V2.3Aだと起動しなかったので、5V3Aにしてたんですが、今回は5V 3Aでも起動が完了しないという問題が発生

loginプロンプトが表示された後にキーボードつなぐと使えるんですけどね・・・

それはさておき、ログインするとこんな感じ

Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 3.10.65 aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Last login: Tue Jan 23 10:56:10 2018 from 192.168.1.150
root@OrangePi:~# uname -a
Linux OrangePi 3.10.65 #35 SMP PREEMPT Tue Jan 23 18:13:02 CST 2018 aarch64 aarch64 aarch64 GNU/Linux
root@OrangePi:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p2  1.1G  520M  488M  52% /
devtmpfs        481M     0  481M   0% /dev
tmpfs           489M     0  489M   0% /dev/shm
tmpfs           489M  6.6M  483M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           489M     0  489M   0% /sys/fs/cgroup
/dev/mmcblk0p1   50M   29M   22M  58% /boot
root@OrangePi:~#

Kernel 3.10.64のUbuntu 16.04.1 LTS

root@OrangePi:~# cat /proc/cpuinfo
Processor       : AArch64 Processor rev 4 (aarch64)
processor       : 0
processor       : 1
processor       : 2
processor       : 3
Features        : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: AArch64
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

Hardware        : sun50iw6
Serial          : 0c000141091e3822014b
root@OrangePi:~# cat /proc/meminfo
MemTotal:        1001472 kB
MemFree:          888120 kB
Buffers:            6000 kB
Cached:            38080 kB
SwapCached:            0 kB
Active:            21844 kB
Inactive:          31092 kB
Active(anon):       8968 kB
Inactive(anon):     6576 kB
Active(file):      12876 kB
Inactive(file):    24516 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                24 kB
Writeback:             0 kB
AnonPages:          8872 kB
Mapped:             8984 kB
Shmem:              6692 kB
Slab:              20168 kB
SReclaimable:       8648 kB
SUnreclaim:        11520 kB
KernelStack:        1600 kB
PageTables:          380 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      500736 kB
Committed_AS:      53372 kB
VmallocTotal:   251658176 kB
VmallocUsed:       48964 kB
VmallocChunk:   251607312 kB
root@OrangePi:~#

で、アップデートしてみようと、「apt update」を実行

root@OrangePi:~# apt update
Get:1 http://mirrors.ustc.edu.cn/ubuntu-ports xenial InRelease [247 kB]
Get:2 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-updates InRelease [102 kB]
Get:3 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-backports InRelease [102 kB]
Get:4 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-security InRelease [102 kB]
Get:5 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-updates/main arm64 Packages [576 kB]
Get:6 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-updates/main Translation-en [295 kB]
Get:7 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-updates/universe arm64 Packages [510 kB]
Get:8 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-updates/universe Translation-en [233 kB]
Get:9 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-security/main arm64 Packages [321 kB]
Get:10 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-security/main Translation-en [189 kB]
Get:11 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-security/universe arm64 Packages [181 kB]
Get:12 http://mirrors.ustc.edu.cn/ubuntu-ports xenial-security/universe Translation-en [102 kB]
Fetched 2960 kB in 12s (228 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
20 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@OrangePi:~# apt list --upgradable
Listing... Done
base-files/xenial-updates 9.4ubuntu4.5 arm64 [upgradable from: 9.4ubuntu4.3]
bsdutils/xenial-updates 1:2.27.1-6ubuntu3.3 arm64 [upgradable from: 1:2.27.1-6ubuntu3.2]
coreutils/xenial-updates 8.25-2ubuntu3~16.04 arm64 [upgradable from: 8.25-2ubuntu2]
dpkg/xenial-updates 1.18.4ubuntu1.3 arm64 [upgradable from: 1.18.4ubuntu1.1]
libapparmor1/xenial-updates 2.10.95-0ubuntu2.7 arm64 [upgradable from: 2.10.95-0ubuntu2.6]
libblkid1/xenial-updates 2.27.1-6ubuntu3.3 arm64 [upgradable from: 2.27.1-6ubuntu3.2]
libcryptsetup4/xenial-updates 2:1.6.6-5ubuntu2.1 arm64 [upgradable from: 2:1.6.6-5ubuntu2]
libfdisk1/xenial-updates 2.27.1-6ubuntu3.3 arm64 [upgradable from: 2.27.1-6ubuntu3.2]
libmount1/xenial-updates 2.27.1-6ubuntu3.3 arm64 [upgradable from: 2.27.1-6ubuntu3.2]
libseccomp2/xenial-updates 2.3.1-2.1ubuntu2~16.04.1 arm64 [upgradable from: 2.2.3-3ubuntu3]
libsmartcols1/xenial-updates 2.27.1-6ubuntu3.3 arm64 [upgradable from: 2.27.1-6ubuntu3.2]
libsystemd0/xenial-updates 229-4ubuntu21 arm64 [upgradable from: 229-4ubuntu15]
libtasn1-6/xenial-updates,xenial-security 4.7-3ubuntu0.16.04.3 arm64 [upgradable from: 4.7-3ubuntu0.16.04.2]
libuuid1/xenial-updates 2.27.1-6ubuntu3.3 arm64 [upgradable from: 2.27.1-6ubuntu3.2]
makedev/xenial-updates 2.3.1-93ubuntu2~ubuntu16.04.1 all [upgradable from: 2.3.1-93ubuntu1]
mount/xenial-updates 2.27.1-6ubuntu3.3 arm64 [upgradable from: 2.27.1-6ubuntu3.2]
systemd/xenial-updates 229-4ubuntu21 arm64 [upgradable from: 229-4ubuntu15]
systemd-sysv/xenial-updates 229-4ubuntu21 arm64 [upgradable from: 229-4ubuntu15]
util-linux/xenial-updates 2.27.1-6ubuntu3.3 arm64 [upgradable from: 2.27.1-6ubuntu3.2]
zlib1g/xenial-updates 1:1.2.8.dfsg-2ubuntu4.1 arm64 [upgradable from: 1:1.2.8.dfsg-2ubuntu4]
root@OrangePi:~#

Orange Pi 公式のいつものubuntuの公式arm64バイナリだけがアップデートでき、kernelなどの機種依存部分はアップデートできないタイプの設定でした。

HPE 5700 スイッチの日付設定


旧H3C系の流れをくむ「HPE 5700 Switch」の設定をしていたところ、現在時刻の設定を手動で行う場合の手順がよくわからなかったのでメモ

なお、使用したfirmwareのバージョンは「HPE Comware Software, Version 7.1.045, Release 2432P01」です

・現在時刻の確認

<HPE>display clock
18:01:34 Tokyo Fri 01/26/2018
Time Zone : Tokyo add 09:00:00
<HPE>

・NTPを設定している場合の確認

<HPE>display ntp-service status
 Clock status: unsynchronized
 Clock stratum: 16
 Reference clock ID: none
 Clock jitter: 0.000000 s
 Stability: 0.000 pps
 Clock precision: 2^-17
 Root delay: 0.00000 ms
 Root dispersion: 101.79138 ms
 Reference time: 00000000.00000000  Thu, Feb  7 2036 15:28:16.000
<HPE>

上記だと「Clock status: unsynchronized」なので、NTPサーバとの同期が取れていない。

・NTPサーバに関しての情報確認

<HPE>display ntp-service session
       source          reference       stra reach poll  now offset  delay disper
********************************************************************************
    [5]xxx.xxx.xx.xx1  INIT              16     0   64    - 0.0000 0.0000 0.0000
    [5]xxx.xxx.xx.xx2  INIT              16     0   64    - 0.0000 0.0000 0.0000
    [5]xxx.xxx.xx.xx3  INIT              16     0   64    - 0.0000 0.0000 0.0000
Notes: 1 source(master), 2 source(peer), 3 selected, 4 candidate, 5 configured.
 Total sessions: 3
<HPE>

上記はNTPサーバを3つ指定している場合の出力。
接続できていないのでreferenceが「INIT」となっている。

・時刻の設定
標準のモード(system-viewを実行してない状態)でclock datetimeコマンドを実行して設定する

<HPE>clock datetime 16:09:00 2018/01/26
<HPE>%Jan 26 16:09:00:008 2018 HPE DEV/5/DEV_CLOCK_CHANGE: -User=**-IPAddr=** ; System clock changed from 14:48:09 Tokyo Wed 01/05/2011 to 16:09:00 Tokyo Fri 01/26/2018.
<HPE>

なお、NTP設定がされている場合は、下記のように「clock protocol none」を設定してから実行しろと表示される。

<HPE>clock datetime 16:09:00 2018/01/26
To manually set the system time, execute the clock protocol none command first.
<HPE>

clock protorolはsystem-viewでないと設定できなかったので、下記のように実行する。

<HPE>system-view
System View: return to User View with Ctrl+Z.
[HPE]clock protocol none
[HPE]quit
<HPE>clock datetime 16:09:00 2018/01/26
<HPE>system-view
System View: return to User View with Ctrl+Z.
[HPE]clock protocol ntp
[HPE]quit
<HPE>

・タイムゾーンの設定
日本で使う場合は9時間ずらす設定を入れる

<HPE>system-view
System View: return to User View with Ctrl+Z.
[HPE]clock timezone Tokyo add 09:00:00
[HPE]quit
<HPE>

・NTPサーバの設定
NTPによる時刻同期を行う場合は「clock protocol ntp」を実行し、
「ntp-service unicast-server IPアドレスまたはホスト名」でNTPサーバを指定する。
NTPサーバの指定が複数ある場合は複数回実行する。

<HPE>system-view
System View: return to User View with Ctrl+Z.
[HPE]clock protocol ntp
[HPE]ntp-service unicast-server xxx.xxx.xx.xx1
[HPE]ntp-service unicast-server xxx.xxx.xx.xx2
[HPE]ntp-service unicast-server xxx.xxx.xx.xx3
[HPE]quit
<HPE>

なお、誤って登録してしまった場合は「undo ntp-service unicast-server xxx.xxx.xx.xx1」と実行すると削除できる。

オープンソースのSDR HF帯無線機mcHFと、コピー品Recent RS-918


SDRによるHF帯CW/SSB無線機mcHFというのがあるらしい。
mcHF QRP transceiver

回路図などは上記のDownloadページにあり、またキットもオーダーすることができる。
SDRのソフトウェアはhttps://github.com/df8oe/UHSDRで公開されている。

で・・・こうやって公開されたものを、そのまま製品化してしまった企業があるようで・・・
瑞森电子「RS-918 HF SDR单边带对讲机
Aliexpressで約5万円で入手可能。→ 「販売店リンク集

写真を見るとかなりちっちゃい。

mcHF公式としては「The full kit on Ebay」にて、当方は関与してないし、サポートもしない、とのコメントを出している。

実際に入手してみた人の話がいくつかある
JH1LHVの雑記帳
 「RS-918SSB HF SDR Transceiver(mcHF)で遊ぶ ~その1~
 RS-918をいろいろ使ってみた話とfirmwareアップデートの手法についての説明などが関連記事にある

ありがとうって伝えたくって
 「mcHF保証認定終了!
 mcHFの国内仕様ファーム及び申請書のひな型を提供してもらうことができるようです

まあべるのほわほわ日記
 「mcHF QRP SDRトランシーバのJARD保証認定通過
 タイトルはmcHFとあるが、実際にはRS-918についてのもので、保証認定に関して書かれている

万年準備中のブログ
 「mcHFのLPFプチ改造
 まあべるのほわほわ日記で参考にしたそうです

ただ、いろいろ見てみると、ちゃんとスプリアスが計測できるような計測器環境を整えていない状態で使うと、変な電波を飛ばしてしまうことになってしまうようです。
送信にはやっぱり気をつける必要がありそうです。


おまけの備忘録
WindowsパソコンにつなげてSDRするソフト「HDSDR

Orange Pi One PlusにAndroidを入れてみた


Allwinner H6搭載の「Orange Pi One Plus」を買った。

12/28の発売開始直後に購入手続きをしたものの、向こうが発送をミスったらしく、2回誤った配送番号を連絡され、しかも、誤ったという連絡寄こさずに新しい番号を送ってきたりしまして、
配送が動き始めたのが1/11に・・・

届かない間にRJ45を抜いて、その替わりにWiFi+BTとUSB3.0コネクタをつけた「Orange Pi Lite 2」なんてのがでたりしてますが、RJ45が無いと設定しにくい、というのと、合法的に使用するのが難しいので、まぁ、Orange Pi One Plusでよかったかな、という感じではあります。

Orange Pi One Plusは、小型Orange Pi共通の箱(One,Lite,Zero用)で届きました。

公式ダウンロードページ」からAndroidイメージをダウンロードして、PhoenixCardツールにて書き込みを実施します。

1点はめられまして、ダウンロードページには「updated:2018-01-03」と書いてありますが、リンク先のMEGA Cloud上にあるファイルが1/10にアップロードされたOrangePi_OnePlus_Android_EN_V1.2.tar.gzに置き換わっているという・・・
最初、気がつかず、置き換え前のbetaを使ったところ、MACアドレスが設定されていない状態(00:00:00:00:00:00:00)となっており、通信ができない状態になっていました。

また、PhoenixCardツールの書き込みは非常に失敗しやすいです。
何度も書き込みをトライしてみてください。
遅いmicroSDだと失敗する確率が高いような気がします。

書き込みが終わったら結線して電源を入れます。

正常に起動が始まると緑のLEDがつきます

Orange Pi One Plusは、電源消費量が大きいようで
5V2.3AのACアダプタを使用したところ「H6」ロゴを大きく表示しているところで停止した状態になりました。
5V3AのACアダプタに変更したところ、「H6」ロゴ、サウンドとアニメーション付きの「Allwinner」ロゴを表示したあと、2分弱置いて、ホーム画面を表示しました。

初回起動時は処理が特に重く、電源も消費しているようで、LANポート付きのUSBハブを使ってキーボードとマウスを繋いでいると、Allwinnerロゴのサウンドとアニメーションが飛び飛びになる、なんてことも発生していました。

Androidは、ほんとに何も入っていない状態です。
Google Playストアなし、メディア再生系ソフトウェア(Kodiなど)なし、ブラウザすら無しでWebView testerが使えるだけなのでapkファイルのダウンロードもできない、という状態です。
CIFS,NFS経由の外部アクセスにも対応したファイラーがインストールされているので、それをつかって他のマシンからapkファイルをインストールする必要があります。

これでAmazonアプリストアのapkをインストールして、そこからAmazon Videoをインストールすることでビデオ再生できることは確認できたのですが、
Amazonアプリストアからブラウザ系をいくつかインストールしてみてもちゃんと起動しないものがあるという現象が・・・
どうやらWebViewを使う系のソフトウェアでうまく動かない、ということが発生しているようでした。
Google Playストアをなんとかしてインストールしないと駄目ですかねぇ・・・

CephのOSD毎のPlacement Groupの数を確認する


Cephのテスト環境を構築してみた。

シナリオ通りに構築を進めていき、とりあえずは問題なくは終わった。
終わったんだけど、最後にステータスでも確認してみるかとceph healthを実行してみたところHEALTH_WARNが・・・

[root@ceph01 ~]# ceph health
HEALTH_WARN too many PGs per OSD (480 > max 300)
[root@ceph01 ~]#

OSDにたくさんのPGが割り当てられてる、といってるけど、具体的にはどれくらいあるんだろう?

と調べていくと、stackoverflowにある、下記のPGとOSDの関係性に関する質問を発見
Ceph too many pgs per osd: all you need to know

そこで紹介されている「Get the Number of Placement Groups Per Osd」に、OSD毎のPG数をコマンドで確認する手法が掲載されていた。

「ceph pg dump」の出力結果を整形して見やすいようにしている、というものだった。

ceph pg dump | awk '
BEGIN { IGNORECASE = 1 }
 /^PG_STAT/ { col=1; while($col!="UP") {col++}; col++ }
 /^[0-9a-f]+\.[0-9a-f]+/ { match($0,/^[0-9a-f]+/); pool=substr($0, RSTART, RLENGTH); poollist[pool]=0;
 up=$col; i=0; RSTART=0; RLENGTH=0; delete osds; while(match(up,/[0-9]+/)>0) { osds[++i]=substr(up,RSTART,RLENGTH); up = substr(up, RSTART+RLENGTH) }
 for(i in osds) {array[osds[i],pool]++; osdlist[osds[i]];}
}
END {
 printf("\n");
 printf("pool :\t"); for (i in poollist) printf("%s\t",i); printf("| SUM \n");
 for (i in poollist) printf("--------"); printf("----------------\n");
 for (i in osdlist) { printf("osd.%i\t", i); sum=0;
   for (j in poollist) { printf("%i\t", array[i,j]); sum+=array[i,j]; sumpool[j]+=array[i,j] }; printf("| %i\n",sum) }
 for (i in poollist) printf("--------"); printf("----------------\n");
 printf("SUM :\t"); for (i in poollist) printf("%s\t",sumpool[i]); printf("|\n");
}'

これをテスト環境で実行してみると下記の様な出力を得られた

[root@ceph01 ~]# ceph pg dump | awk '
BEGIN { IGNORECASE = 1 }
 /^PG_STAT/ { col=1; while($col!="UP") {col++}; col++ }
 /^[0-9a-f]+\.[0-9a-f]+/ { match($0,/^[0-9a-f]+/); pool=substr($0, RSTART, RLENGTH); poollist[pool]=0;
 up=$col; i=0; RSTART=0; RLENGTH=0; delete osds; while(match(up,/[0-9]+/)>0) { osds[++i]=substr(up,RSTART,RLENGTH); up = substr(up, RSTART+RLENGTH) }
 for(i in osds) {array[osds[i],pool]++; osdlist[osds[i]];}
}
END {
 printf("\n");
 printf("pool :\t"); for (i in poollist) printf("%s\t",i); printf("| SUM \n");
 for (i in poollist) printf("--------"); printf("----------------\n");
 for (i in osdlist) { printf("osd.%i\t", i); sum=0;
   for (j in poollist) { printf("%i\t", array[i,j]); sum+=array[i,j]; sumpool[j]+=array[i,j] }; printf("| %i\n",sum) }
 for (i in poollist) printf("--------"); printf("----------------\n");
 printf("SUM :\t"); for (i in poollist) printf("%s\t",sumpool[i]); printf("|\n");
}'
dumped all in format plain

pool :  4       5       6       7       8       9       10      11      12      13      14      1       2       15      3       | SUM
----------------------------------------------------------------------------------------------------------------------------------------
osd.4   39      29      25      36      27      24      35      34      30      28      34      33      35      29      32      | 470
osd.5   36      35      28      31      21      29      27      37      37      30      32      36      37      27      37      | 480
osd.6   38      37      30      35      30      24      37      33      32      31      27      32      33      31      27      | 477
osd.7   33      34      30      31      25      34      35      42      32      33      21      30      31      28      33      | 472
osd.8   29      32      39      35      28      39      31      34      36      35      38      34      35      24      21      | 490
osd.9   32      34      33      33      37      38      39      27      30      31      28      29      27      26      26      | 470
osd.10  39      31      34      24      35      36      35      40      34      37      37      45      32      31      37      | 527
osd.11  25      26      30      33      36      42      27      30      42      31      28      32      28      35      31      | 476
osd.0   27      39      38      29      35      24      34      26      28      31      38      23      33      31      32      | 468
osd.1   29      30      29      28      43      24      34      30      22      34      30      37      34      44      29      | 477
osd.2   27      32      35      33      31      38      21      24      30      26      37      26      26      36      33      | 455
osd.3   30      25      33      36      36      32      29      27      31      37      34      27      33      42      46      | 498
----------------------------------------------------------------------------------------------------------------------------------------
SUM :   384     384     384     384     384     384     384     384     384     384     384     384     384     384     384     |
[root@ceph01 ~]#

また、NAKAMURA Minoru’s Home Pageにある「RADOS の概略 (RADOS と CRUSH と Placement Group の関係)」は、Cephの理解に役に立った