まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:raspberrypi

コンテナ環境のスタンダードともいえる docker が、いつの間にかラズパイでも動くようになってました:
DOCKER COMES TO RASPBERRY PI

2017070701


動くようになった当初は導入方法も(コマンドが用意されたり、専用イメージが用意されたり、・・)色々あったようですが、現状では IA 環境と同様の方法でインストールできるようになっていました。具体的にはこの(curl と sh を使った)コマンドだけで導入できます:
$ curl -sSL https://get.docker.com | sh

ただ、この方法で導入しただけだと root ユーザーでないと動かせません。通常の(非 root )ユーザーのままで docker を使うには、そのユーザーを docker グループに所属させる必要があります。具体的には以下のコマンドを実行した上で再ログインすると有効になります(pi ユーザーの場合の例です):
$ sudo usermod -aG docker pi

実際にいくつかのコマンドを実行してみました。まずは docker 環境の確認:
$ docker info
Containers: 1
 Running: 0
 Paused: 0
 Stopped: 1
Images: 2
Server Version: 17.05.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9048e5e50717ea4497b757314bad98ea3763c145
runc version: 9c2d8d184e5da67c95d601382adf14862e4f2228
init version: 949e6fa
Kernel Version: 4.9.28-v7+
Operating System: Raspbian GNU/Linux 8 (jessie)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 923.4MiB
Name: raspberrypi
ID: TI35:OH7M:MCCS:PUBJ:RFNY:O2LP:MA6F:CECD:3BUW:7NFL:LSV2:A3FO
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
WARNING: No cpuset support

↑docker 17.05 が動いていることが分かりました。あと分かっていたことですがメモリは 1GB ・・

ラズパイ(というか ARM )で使えるコンテナを探してみました:
$ docker search armhf-
NAME                                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
container4armhf/armhf-alpine                       Automatically built base images of Alpine ...   67                   [OK]
container4armhf/armhf-busybox                      Automated build of Busybox for armhf devic...   8                    [OK]
orax/alpine-armhf                                  Daily built Alpine-Linux Docker image for ...   7                    [OK]
forumi0721alpinearmhf/alpine-armhf-transmission    alpine-armhf-transmission                       3                    [OK]
forumi0721alpinearmhf/alpine-armhf-minidlna        alpine-armhf-minidlna                           3                    [OK]
forumi0721alpinearmhf/alpine-armhf-nginx           alpine-armhf-nginx                              2                    [OK]
forumi0721alpinearmhf/alpine-armhf-tvheadend       alpine-armhf-tvheadend                          2                    [OK]
forumi0721alpinearmhf/alpine-armhf-jenkins         alpine-armhf-jenkins                            2                    [OK]
forumi0721alpinearmhfbuild/alpine-armhf-gpio-bpi   alpine-armhf-gpio-bpi                           1                    [OK]
forumi0721alpinearmhf/alpine-armhf-gogs            alpine-armhf-gogs                               1                    [OK]
forumi0721alpinearmhf/alpine-armhf-samba           alpine-armhf-samba                              1                    [OK]
forumi0721alpinearmhf/alpine-armhf-owncloud        alpine-armhf-owncloud                           1                    [OK]
forumi0721alpinearmhf/alpine-armhf-vsftpd          alpine-armhf-vsftpd                             1                    [OK]
forumi0721alpinearmhf/alpine-armhf-postgresql      alpine-armhf-postgresql                         1                    [OK]
forumi0721alpinearmhf/alpine-armhf-wordpress       alpine-armhf-wordpress                          1                    [OK]
forumi0721alpinearmhfbuild/alpine-armhf-netatalk   alpine-armhf-netatalk                           1                    [OK]
forumi0721alpinearmhf/alpine-armhf-mariadb         alpine-armhf-mariadb                            1                    [OK]
forumi0721alpinearmhf/alpine-armhf-certbot         alpine-armhf-certbot                            1                    [OK]
forumi0721alpinearmhf/alpine-armhf-noip-curl       alpine-armhf-noip-curl                          0                    [OK]
forumi0721alpinearmhf/alpine-armhf-nodejs          alpine-armhf-nodejs                             0                    [OK]
forumi0721alpinearmhf/alpine-armhf-scepg           alpine-armhf-scepg                              0                    [OK]
forumi0721archarmhf/arch-armhf-dev                 arch-armhf-dev                                  0                    [OK]
forumi0721ubuntuarmhf/ubuntu-armhf-dev             ubuntu-armhf-dev                                0                    [OK]
forumi0721alpinearmhf/alpine-armhf-dev             alpine-armhf-dev                                0                    [OK]
forumi0721debianarmhf/debian-armhf-dev             debian-armhf-dev                                0                    [OK]


そんなに数は多くないけど、nginx やら jenkins やら wordpress やら mariadb やら・・・基本的なのは揃ってそうです。


ラズパイはメモリが 1GB しかないので、そもそも docker を動かすにはいろいろ厳しい環境だとは思いますが、一方でケースや SD カード含めて 6~7000 円程度で docker 環境を揃えることができてしまう、ということでもあります。今度はこれのクラスタリングにも挑戦してみようかな・・・

Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)




小型コンピュータである Raspberry Pi(以下「ラズパイ」)のデスクトップ環境をラズパイ以外にも提供するプロジェクト "PIXEL" 、その x86(i386) 版が公開されました:
PIXEL for PC and Mac

まだ実験的な段階であり、バージョン番号にも日付が使われている状態です。僕がダウンロードしたものは 2016-12-13 時点のものでした。デフォルトで LibreOfficeChromium ブラウザ、Scratch を含む各種プログラミングによる統合開発環境が搭載されており、最低限以上のデスクトップ環境になっていました:
2016122501


ラズパイはもともと教育用途に開発された経緯があり、低スペックなマシンでもある程度動作することを目標にしていました。その考え方は PIXEL にも受け継がれているようで、古い PC や Mac 環境を蘇らせることができるかもしれません。

現時点では PIXEL のトップページからブート可能な iso がダウンロードできるような形で公開されています。こいつを DVD や USB メモリに保存してそこから起動するか、あるいは仮想環境下でこの iso を指定してブートするだけです。ハードディスクへのインストールして簡単に起動できるような環境はまだ提供されていない模様ですが、今手元で使っている環境に影響を与えずに試せるようなものが提供されている、と考えられます。

日本語環境についてはカスタマイズで可能なように見えますが、その方法はまた別の機会に。


スウェーデン発祥の世界最大の家具量販店 "IKEA(イケア)"。ここは毎年ジンジャーブレッドハウスコンテストを開催しています:
https://www.smartcontest.jp/system/ikeafoodcontest/pc/

2016122301


イケア店内でも売られているジンジャーブレッドハウスキットを使ったデコレーションコンテストです:
2016122302


板状のジンジャーブレッドを組み立てて家を作って、デコレートして、写真に撮って、その出来栄えを競い合う、というものです。昨年の応募作品を見ると信じられないくらいにレベルが高い・・・
2016122303


もともとこのコンテストを知っていたわけではないのですが、たまたま近所の TOKYO BAY 店(旧船橋店)で実物を見かけた時、ふと
  「この家、ラズベリーパイがちょうど入るくらいのサイズなんじゃね?」
とアレなアイデアが浮かんでしまったのでした。。

いやでもクッキーだし、粉とかラズパイみたいな精密機械にいい影響があるわけないし、何より食べ物を粗末にするのはよくないし・・・うーん、、、


行けばわかるさ!
IMG_0082


ジンジャーブレッドハウスを作るのは初体験です。軽く「組み立てるだけだよね?」と考えて購入しましたが、その「組み立てるだけ」が難しいのなんのって。。 自分は一応は大工の息子ですが、そのDNAはもう残ってないと実感しました(苦笑)。屋根が自分の重みで落ちてきちゃって、、、みんなどうやって固定させるんだろ・・・

苦労しながらもなんとか家が家の形になってきました。外から見たお家の中の様子。一瞬「業務用キッチン?」と見間違えそうですが、USB ポート x 4です:
IMG_0083


煙突立てて、サンタ人形を載せて、外観は完成。なんかケーブルが見えてますが気のせいです:
IMG_0085


気のせいなケーブルをコンセントに挿すと、家の中にほのかな明かりが灯ります。意外と悪くないかも!(慣れない創作作業で結構苦労したせいか、この辺りから判断基準がおかしくなってるかもしれません):
IMG_0086


ラズパイはもちろん無線 LAN で Linux サーバーとしても稼働中なので、GPD WIN 機から ssh で接続してみました。このゲーム機みたいな PC から家の中の様子を覗いてるイメージです:
IMG_0091


最後にシュガーとグミでデコレーションを追加。本当は砂糖の粉雪を降らせたかったのですが、さすがにラズパイの動作への影響と、何より危険だと思ったので断念しました。GPD WIN から IBM Bluemix の Node-RED スターター環境にアクセスして、この家(ラズパイ)からのセンサーデータを取得できるようにしました。わかりにくいのですが、家の中の状態をこの PC から監視しています。一応これが完成品です(コンテストにはこの写真で応募する予定w):
IMG_0097


微妙なタイミングを測って、ラズパイの LED が2つ(赤と緑)点灯した瞬間を撮影してみました。僕の脳内では少女とその両親が、キャンドルの周りで神様にお祈りをしている姿まで見えています:
2016122300


お約束ですが、この後美味しくいただきます!

なお、ジンジャーブレッドハウスコンテストへの投票はこちらから。よろしくお願いします(笑):
ジンジャーブレッドハウスコンテスト | IKEA FOOD


Happy Merry Christmas!

IBM Bluemix のイベント駆動型ランタイムである OpenWhisk 環境をコマンドラインから利用する際に必要な wsk をラズベリーパイに導入してみました。なお最初に SSL でログインするか、ターミナルを開くなどして、ラズベリーパイのコマンドライン操作ができる状態にしておく必要があります。


まずは Python のパッケージ管理ツールである pip を導入します:
$ sudo curl -kL https://bootstrap.pypa.io/get-pip.py | python

そして pip を使って wsk コマンドを導入します:
$ sudo pip install --upgrade https://new-console.ng.bluemix.net/openwhisk/cli/download

wsk コマンドの設定を行います。ここで実行するコマンドは OpenWhisk 画面の②で表示されているコマンドをコピー&ペーストする形で実行してください:

2016080401

$ wsk property set --apihost openwhisk.ng.bluemix.net --auth ********* --namespace "dotnsf@jp.ibm.com_dev"

導入した wsk コマンドが正しく動くことを確認します。以下のコマンドを入力して、青字のような結果が返ってくることを確認してください:
$ wsk action invoke /whisk.system/samples/echo -p message hello --blocking --result
{
    "message": "hello"
}

導入できました!これでまたラズパイ環境が捗ります。

IBM では大学生の皆さんを対象に、メインフレームを使ったプログラミングコンテストを開催中です:
IBM メインフレームコンテスト 2016

2016073101


このコンテストは「メインフレーム」や「汎用機」と呼ばれている IBM zSystems の最新版である z13 環境にリモートログインしてプログラミングを行う、という内容のコンテストです。コンテストといっても最初は与えられた課題をクリアしながらメインフレームの使い方を学び、最終的にはメインフレーム用のアプリケーションを開発して世界中の大学生とその出来を競う、というものです。ちなみにリモートログインする先のシステムはメインフレームのネイティブOSである z/OS に加え、メインフレーム版の Linux(zLinux)も含まれています。旧来型から最新環境までメインフレームを学ぶ面白い機会であると思っています。


で、これだけだとただのコンテスト宣伝になってしまうので、1つ自分なりに挑戦してみました。同コンテストに参加する上で、参加者の個人 PC は Windows/Mac OS/Ubuntu のいずれかであることを前提として解説されています:
2016073102


現実的にほとんどの学生参加者の皆さんが所有している PC はこのいずれかの環境であると思いますが、僕は人気の教育向けシングルボードコンピュータで、比較的最近は IoT デバイスとしても注目されているラズペリーパイ(以下「ラズパイ」)で挑戦してみました。結論から言うと「ラズパイでもできそうです(少なくとも課題のパート1はできます)!」。

準備段階として、z/OS システムにログインして操作するための 3270 エミュレータアプリケーションの導入が必要です:
2016073100
 ↑オッサン感涙のこんなアプリ


ラズベリーパイ向けの 3270 エミュレータの導入はこちらのページの「IBM 3270 環境」を準備している箇所の説明を参考に導入してください:
PiTop で日本語デスクトップ環境構築


ここで紹介している方法では X11 版(x3270)ではなくコマンドライン版(c3270)の導入を紹介しているので、X Window 環境からだけでなくターミナル環境からでも利用できる方法です:
pi_zos_zlinux
 ↑ラズパイのデスクトップ上で z/OS と zLinux に同時にログインしている様子


ただし、この方法で z/OS 環境を用意した場合には2つ注意点があります。1点目は起動方法です。ウィンドウのメニューから実行するのではなく、ターミナルを開いてコマンドラインから以下のように指定して z/OS に接続する必要があります(IPアドレスとポート番号に関しては参加者向けのガイドを参照してください):
$ c3270 (接続先IPアドレス):(接続先ポート番号)

もう1点。IBM からのガイドでは上記3つの GUI 環境から利用することを想定していますが、このラズベリーパイからコマンドライン版 3270 アプリを使う場合はウィンドウ環境を前提としていないため、一部のキーバインドが正しく動きません。例えば z/OS の画面において「1つ前に戻る」という場合は F3 キーを押すようガイドされていますが、c3270 では F3 が正しくバインドされていないので期待通りの結果になりません:
2016073103


c3270 で1つ前の画面に戻るには、F3 ではなく "Exit" と明示的にコマンド入力する必要があります:
2016073104


この辺りはちょっと不便ではありますが、操作そのものには影響はなさそうでした。なお zLinux 環境に関しては普通の Linux と同じ(実体は RedHat Linux Enterprise 7)なので、普段から Linux を使っている方であれば違和感なく使えると思っています。


 

このページのトップヘ