Ghost のバージョンアップ(0.7.8 to 0.11.2)
しばらくサボってたら一気にバージョンが上がっているじゃないですがか、ghost blog platform。
サボりのツケを払うべく、バージョンアップ作業したので参考として記録しておきます。
やってることは過去記事と同じです……。
関連:Ubuntu 15.10 Server 版を 16.04LTSにアップグレード - ながいものには、まかれたくない
続きを読むラズパイでDocker (Raspbian Jessie)
お勉強用にラズパイにDocker をインストールしてみます。というか、公式ブログの手順そのままです。
先に書いておくと素直にx86でやった方がいいです。コマンド一発でインストールできるので。
インストール
コマンド一発です。さすが「楽すぎて何も身につかない」と評判のDebianベースのRaspbian。
$ curl -sSL https://get.docker.com | sh
自動的にセットアップ用のシェルスクリプトが実行されます。内容としては、 Docker のインストール用のパッケージリポジトリが自動で追加され、必要なパッケージが一式インストールされてDockerが起動します。
一気に自動起動の設定まで完了するようです。最終的に下記のメッセージが表示されるはず。
+ sudo -E sh -c docker version Client: Version: 1.12.2 API version: 1.24 Go version: go1.6.3 Git commit: bb80604 Built: Tue Oct 11 17:52:51 2016 OS/Arch: linux/arm Server: Version: 1.12.2 API version: 1.24 Go version: go1.6.3 Git commit: bb80604 Built: Tue Oct 11 17:52:51 2016 OS/Arch: linux/arm If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker pi Remember that you will have to log out and back in for this to take effect!
最後のメッセージは「もし非ルートユーザ権限でDockerを使用したいなら、下記のコマンドで現在のユーザー(pi)をdockerという名前のグループに追加するといいよ。一度ログアウトしないと有効にならないんで気をつけてね」というご託宣(超意訳)。
提示されたコマンドに否やはないので*1、素直に指示通りにする。毎回sudo
コマンドをつけずに実行できるようになります。
$ sudo usermod -aG docker pi
一旦ログアウトしてログインし直す。
動作確認
バージョンの確認など
バージョンとかシステムの状態とか。
``` $ docker version Client: Version: 1.12.2 API version: 1.24 Go version: go1.6.3 Git commit: bb80604 Built: Tue Oct 11 17:52:51 2016 OS/Arch: linux/arm
Server: Version: 1.12.2 API version: 1.24 Go version: go1.6.3 Git commit: bb80604 Built: Tue Oct 11 17:52:51 2016 OS/Arch: linux/arm ```
状態確認。
$ docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 1.12.2 Storage Driver: overlay Backing Filesystem: extfs Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: null host bridge overlay Swarm: inactive Runtimes: runc Default Runtime: runc Security Options: Kernel Version: 4.4.23-v7+ Operating System: Raspbian GNU/Linux 8 (jessie) OSType: linux Architecture: armv7l CPUs: 4 Total Memory: 862.1 MiB Name: raspberrypi ID: VYSO:QMV2:3LGH:ETXK:ZOUL:UBFG:OAEJ:L6VV:Q36H:MQCW:PFA4:UEZR Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ WARNING: No swap limit support WARNING: No kernel memory limit support WARNING: No cpu cfs quota support WARNING: No cpu cfs period support WARNING: No cpuset support Insecure Registries: 127.0.0.0/8
WARNING がちょっと気になりますがスルーします。
いくつかはシステム起動時にカーネルにオプションを渡せば消せるみたいですが、全部消すにはカーネル再構築して差し替える必要ありとのこと。
参考:debian8のdockerでWARNINGが吐かれる件
とりあえず保留。
hello-world
おなじみのやつは実行できません。以下のようになります。
$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world c04b14da8d14: Pull complete Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9 Status: Downloaded newer image for hello-world:latest panic: standard_init_linux.go:175: exec user process caused "exec format error" [recovered] panic: standard_init_linux.go:175: exec user process caused "exec format error" (skip)
そもそも普通のDockerイメージはx86系CPU向けにビルドされているのでラズパイでは動かない。
対策
ARM用にビルドされたイメージを探してくるか、自分で作るかしかありません。
下記のコマンドでARM用のイメージを探します。
$ docker search armhf-
あまり数がない?
とりあえずUbuntu(おそらく非公式)。
$ docker run ioft/armhf-ubuntu Unable to find image 'ioft/armhf-ubuntu:latest' locally latest: Pulling from ioft/armhf-ubuntu 77c45a60f4e6: Pull complete 7d1fb2204ca8: Pull complete 8789c51a4fa7: Pull complete 8ac55180a8d1: Pull complete Digest: sha256:18046759911b86af563d1eb8518d1dc25b873a4c62b8aea2d185e6052e4adf92 Status: Downloaded newer image for ioft/armhf-ubuntu:latest
いやそうじゃなくて……。
$ docker run ioft/armhf-ubuntu /bin/echo 'Hello, World!' Hello, World!
お約束。
今度はコンテナにログインしてみる。
$ docker run -i -t ioft/armhf-ubuntu /bin/bash
プロンプトが表示されるので、OS情報など。
root@ff4401bd71bb:/# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS" root@ff4401bd71bb:/# uname -a Linux ff4401bd71bb 4.4.23-v7+ #913 SMP Tue Oct 4 14:16:19 BST 2016 armv7l armv7l armv7l GNU/Linux root@ff4401bd71bb:/# exit exit
ログアウト。ホスト側のカーネルは下記の通り。
pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.4.23-v7+ #913 SMP Tue Oct 4 14:16:19 BST 2016 armv7l GNU/Linux
参考:Installing, running, using docker on armhf (ARMv7) devices · umiddelb/armhf Wiki · GitHub-devices)
まとめ
とりあえず動きましたが、あまりARM向けのイメージ自体が提供されていないです。ありもののイメージを使うならDocker for Mac とかx86でやる方が良さそうです。
それではまた。
カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる (ブルーバックス)
- 作者: 金丸隆志
- 出版社/メーカー: 講談社
- 発売日: 2016/07/20
- メディア: 新書
- この商品を含むブログを見る
Raspberry Pi 3 MODEL B 【RS正規流通品】
- 出版社/メーカー: Raspberry Pi
- 発売日: 2016/04/28
- メディア: Tools & Hardware
- この商品を含むブログを見る
ラズパイ3 でARM版 Fedora 25 Beta を試す
カーネル4.8でラズパイ向けのドライバがメインラインに*1に取り込まれた関係で、Fedora 25でラズパイを正式にサポートするようです。
以前からFedora 自体はラズパイでも動いていたようですが、今回は構築済みイメージが提供されるよってことのようです。
どうやらラズパイ 2と3のみでCompute Moduleなどはサポート外。
すでにFedora 25 のベータがリリースされているので予備のmicroSDで試してみました。
結論を先に書いておくと、Gnome デスクトップは重いです。動作が緩慢な印象。
何がまずいのかよくわかりませんが、ちょくちょく「Gnome Shell がクラッシュしました」とか「コンポーネント内で問題が発生しました」という表示が出ます。
そんなギャグかまさなくてもいいのに。
セットアップ
結局のところダウンロードしたデータをxz
で展開してdd
で書き込むだけです。
ダウンロードしたイメージファイルをmicroSDに書き込みます。他のOSの場合は公式サイトの説明を参照。
イメージファイルのダウンロード
Raspberry Pi - FedoraProjectからリンクをたどります。
お目当はWaylandベースのデスクトップ環境なのでワークステーション向けのイメージをダウンロード。
もしくはナイトリービルド版。
Index of /pub/fedora/linux/development/25/Workstation/armhfp/images
microSDへの書き込み
microSDのデバイス名を確認する必要があります。mount
コマンドの出力を見て判断しています。Raspbian の動作しているラズパイにUSB接続のmicroSDカードリーダーをつないで作業しました。
ダウンロードしたファイルのチェック。
$ sha256sum Fedora-Workstation-armhfp-25-20161018.n.0-sda.raw.xz f7a5d6f1478eaff89f166c7b0977c0b4594ac5e2f97a0c98d94259e00f00671b Fedora-Workstation-armhfp-25-20161018.n.0-sda.raw.xz
※一昨日ぐらいに落としたナイトリーイメージの方です。随時更新されているのでサイト上のチェックサムとは一致しません。
問題なさそうなので、dd
で書き込み。
$ xzcat Fedora-Workstation-armhfp-25-20161018.n.0-sda.raw.xz | sudo dd bs=4M of=/dev/sda
8GBのmicroSDでも利用可能になっている反面、容量の大きいmicroSDの場合は未使用の領域が発生することになります。
本格的に使用する場合は、(データを消さずに)ルートパーティションのサイズを拡張する必要があるようです(Linuxならgparted
など)。
とりあえず試して見たいだけなので、今回は気にしないことにします。
起動
HDMIディスプレイ、USBマウスとキーボードを接続した状態でmicroSDをセットして電源を入れると初期設定ウィザードが起動するはずです。しばらく待っても表示されない場合は、おそらくdd
コマンドのあたりで失敗しています。SDのフォーマットからやり直せば良いはず。
microSDを使いまわそうとして私は2回ほどやり直しました*2。
初期設定ウィザード
画面の指示に従えば特に問題ないはず。
もうちょっと綺麗な画像を撮りたいところですがしかたない*3。通常版のインストーラの流用だろうと思います。
タイミング障害なのかもしれませんが、地図から東京を選択してもタイムゾーン設定の画面から次へ進めませんでした。
前の画面に戻って「位置情報を有効にする」をONからOFFにした上で「Tokyo/Japan」と入力すれば次の画面に進めるようになりました。
もし同じ箇所で次に進めなくなるようであれば、一旦前の画面に戻ってみると良いのではないでしょうか。
毎回起きるのかどうか検証したわけではないので悪しからず。
デスクトップについて
デフォルトはWayland + mutter(?) + Gnome-shell。こんな感じ。
ちゃんとARMでWaylandしています。
日本語入力
悲しいことに日本語入力がibus+libkkc構成。
私の環境では日本語キーボードを接続しているにもかかわらずキーマップが英語キーボードとなってました。しかも初期状態日本語入力ON。しかもかな漢字変換エンジン側は日本語キーボードを前提にした設定になっているのでオンオフすらマウス操作で行う必要あり。
対処としては、正しいのかよくわかりませんが、直接入力用のキーボードとしてかな漢字変換なしの「日本語」キーボード*4を追加してデフォルトにします。
- デスクトップの背景部分を右クリック
- 設定をクリック
- 「Region & Language」をクリック
- ウィンドウ下段の入力ソースというエリアの左端の「+」をクリックし、「日本語」を追加。
- 真ん中にある不等号のようなボタンを操作して順序を設定
最終的に以下の画像のような状態になっていればOKなはず。
別解その1としてlibkkc
側の設定オプションで、「独自のキーマップを使う」という設定を有効にする方法もあります。上記の手順なしでも日本語キーマップになるはず。
別解その2として設定ファイル自体を変更する手もあるようですが、私は試していません。以下参照。
なお、キーボードの切り替え*5は「Super+Space」です。多分普通の日本語キーボードならWindowsキーが「Superキー」。ぶっちゃけfcitx
入れるのがいいかもしれません。
サウンド
Youtube で動画は再生できますが、公式サイトの記載通り音は鳴りません。メインラインのカーネルが対応してないとかなんとか。
スクリーンショット
デスクトップにログインすれば下記の方法でスクリーンショットが取れます。
制限事項
- ARM版のFedora はそもそも armv6 をサポートしてないので古いモデルはサポート外(Raspberry Pi Models A, A+, B (generation 1), Zero and Compute Module)
- x86_64対応は今回はリソースの関係でなし(Fedora 26 で対応するかも)
- 現時点では無線LAN非対応
- アナログポートおよびHDMI経由のサウンド再生は非サポート
気になった点など
- キーボードのリピート設定がおかしい
- 画面左上の「アクティビティ」をクリックすると画面左端のアイコンの横に輝線がちらつく
libkkc
で「カタカナ・ひらがな」キーの挙動がおかしい?- ログイン画面(gdm)のキーマップはどうなっているのか?
- やたらとGnome Shell がクラッシュする
試していませんが、パスワードに記号を含んでいるとすると、ログイン画面のキーマップ次第では大変面倒です。仮想コンソールとしては/ete/vconsole.conf
で設定できますが、GDMはどうするのでしょうかね?
一年ほど前に似たようなことを書いている方がすでにいるようで。
見た感じでは/etc/sysconfig/keyboard
は存在しないです。それと、一度ログインしてしまうとAlt
+Ctrl
+ファンクションキーで仮想コンソールに移動したくてもできないです。一瞬グレー背景の画面に切り替わりますが、いつものようにログインプロンプトの画面にはなりません。ログイン前の画面からは仮想コンソールにアクセスできるようです。
まとめ
冒頭にも書いた通り、普通に遅いというかもっさりです。他のデスクトップ環境をデフォルトにしているエディション(Fedora 風にいうとFedora Spin)もあるのでそっちの方はマシだろうとは思いますが。
正式版は11月中旬らしいですが、x86_64対応を楽しみにしつつ、来年のFedora 26 を待つのが良さそうな雰囲気です。
それでは。
Netatalk のセットアップ(Raspberry Pi 3 )
macOS とRaspberry Pi のデータ共有用にNetatalk をセットアップする作業メモです。
USBメモリという手もありますが、ネットワーク越しにデータをやり取りする方が便利です。scp
だとちょっとめんどいし、NFSでもいいけどmacOSとLinux間のデータ共有なのでNetatalk (AFP) をインストールすればいいよねってことで。
前置き
Netatalkはunix系OS上でApple のファイル共有プロトコルを利用するためのプログラム(デーモン)です。最新版はバージョン3系ですが、Raspberry Pi の公式OSであるRaspbianで提供されているのはバージョン2.2.5です。
新しいバージョンであればSamba*1との統合が実現できるようです。
ラズパイをファイルサーバーとして使う予定はないので素直に古いですが標準パッケージを使います。 2016年にこの旧バージョンというのも悲しいものがありますが、この記事はNetatalk バージョン 2.2.5 の設定の話です。
なお、macOS 自体が、AFPからWindowsと同じSMBプロトコルベースに移行しようとしているそうなので安定運用したいならSamba+AFP(netatalk) 構成にした方が良いようです。
補足
Netalkのバージョン3系をソースからインストールする方法については他の方が書かれているのでそちらを参照。
- Install Netatalk 3.1.10 on Debian 8 Jessie - Netatalk Wiki
- Raspberry Pi と外付けハードディスクで Time Capsule 互換機を作る
- Raspberry Pi3をMacのTimeMachineのディスクとして利用するまでの手順 - 怪しい物を開発するブログ
- Netatalk 2.xから3.xへ移行する人のための情報
準備
設定手順としては下記のサイトを参考にしました。
まずはファイルシステム側が拡張属性の保存に対応している必要があります。user_xattr
というオプションがフォーマット時に有効にされているかをチェックします。
(アクセスしたい対象である)ラズパイ側のユーザーのホームディレクトリを含むパーティションの状態だけ確認。
$ sudo tune2fs -l /dev/mmcblk0p2 | grep "Default mount options" Default mount options: user_xattr acl
上記の出力であれば、意図的に無効にしない限り、ルートパーティションをマウントする時点でオプションが有効になります。
もし上記のようになっていないなら、マウントオプションにuser_xattr
を追加する必要があります。
デフォルトでは/etc/fstab
は下記の状態で、明示的に無効化されていないので問題はない。
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
/etc/fstab
を修正した場合は再起動するかルートパーティションを再マウント。
インストールと設定
インストール
apt
でインストールするのでコマンド一発です。
$ sudo apt install netatalk
設定ファイルの修正
修正対象の設定ファイルは以下の3つ。
他のディストリビューションの場合は/etc/default/netatalk
ではなく/etec/netatalk/netatalk.conf
になるかと思います。
また、バージョン3系は設定ファイルがシンプルになるとか。
/etc/default/netatalk の修正
まず文字コードとCNID_CONFIG を設定。
#ATALK_UNIX_CHARSET='LOCALE' #ATALK_MAC_CHARSET='MAC_ROMAN'
という箇所を以下のように修正。
ATALK_UNIX_CHARSET='UTF8' ATALK_MAC_CHARSET='MAC_JAPANESE'
ATALK_MAC_CHARSETはMacOS9のためのものなので不要かも。
以下の行を探して行頭のコメント記号を外す。
AFPD_UAMLIST="-U uams_dhx2.so,uams_clrtxt.so" (skip) CNID_CONFIG="-l log_note -f /var/log/netatalk.log"
書式は設定ファイル自体に記載がありますが必要であれば冒頭のサイトか下記参照。
公式ドキュメント:netatalk.conf
/etc/netatalk/afpd.conf の修正
最終行に下記を追加。
- -maccodepage MAC_JAPANESE -setuplog "default log_info /var/log/afpd.log"
公式ドキュメント:afpd.conf
/etc/netatalk/AppleVolumes.default
:DEFAULT
という行を以下のように変更。'maccharset'の項目はMacOS9用だそうなので不要な気もするが一応。
:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys
さらに末尾に以下のような行があることを確認しておく(各ユーザーのホームディレクトリを公開する設定。要パスワード認証)。
~/ "Home Directory"
上記とは別にデータの共有領域を設定するためにファイルの末尾に以下を追加(必須ではない)。
/opt/data
を"Data Directory"という名前で"users"というグループのユーザーからアクセス可能にする設定。
/opt/data "Data Directory" allow:@users
公式ドキュメント:AppleVolumes.default
共有用のフォルダを作成してアクセス権を付与しておきます。
$ sudo mkdir /opt/data $ sudo chmod a+w /opt/data
デーモンの起動
$ sudo systemctl restart netatalk
いつも通り。正常に起動しかは下記で確認。
$ sudo systemctl status netatalk
'active (running)'となっていれば問題なし。必要なら/var/log
配下に上記で設定したログファイルに何か出力されているはず。
接続テスト
ここまで完了したらmacOS側から接続してみます。Finderを起動して、「Shift」+「Cmd」+「K」でネットワークのコンピュータの一覧へ。
アクセスするとラズパイのホスト名が表示されるのでダブルクリック。
ウィンドウの右上に「別名で接続」というボタンがあるのでこれをクリック。
ユーザ名としてpi
、パスワードにラズパイ側のパスワードを入力。
自動起動させる設定
問題がなければサービスとして有効化する。
$ sudo systemctl enable netatalk
まとめ
最新版ではないですが、これでmacOS側から自由にラズパイ側のファイルにアクセスできます。
以上です。
それでは。
Raspbian (Raspberry Pi 3 model B) に OpenCV 3.1 をインストールする
ラズパイ3の環境にOpenCV 3.1をソースからインストールする備忘録(作業メモ)です。 かなり冗長です悪しからず。
Webカメラをつないで終わりではありませんよね、ということでOpenCVです。 Raspbianの標準のパッケージとしてバージョン2.4系が提供されています*1が、新しい物好きなのでバージョン3.1をインストール。
過去記事でmacOS向けにフレームワーク形式でビルドしていますが、今回は共有ライブラリとしてRaspbian 向け(要するにLinux系)にビルドしています。
基本的にUbuntu/Debian系へのインストールと同じ要領です。
- A. 準備
- 環境
- ソースの入手
- 依存するライブラリのインストール
- ビルドに必要なツール
- OpenGL関連ライブラリ
- 静止画用のライブラリ
- 動画関連のライブラリ
- highgui モジュール用
- Protocol Buffer (オプション)
- Visualization Toolkit
- 警告対策
- パフォーマンス向上
- Video4Linux
- Python モジュール
- Qt4
- document 生成用
- B. ビルドとインストール(contrib なし)
- Makefile の生成(cmake)
- ビルド
- インストール
- 動作確認
- アンインストール手順
- C. ビルドとインストール(contribあり)
- Tesseract のインストール。
- Makefile の生成(cmake)
- ビルド
- インストール
- 動作確認
- 申し送り事項
- そのほか
- オプションの一覧
- まとめ
作戦としてまず基本モジュールのみ(B)でビルドできることを確認して、再度拡張モジュール(contrib)ありでビルドした関係で両方書いてあります。参考にする場合は必要に応じてA-Bの順序、またはA-Cの順序で。
*1:libopencv-core2.4という名称で提供されており、GUI付きのOSイメージには最初からインストールされている。また、Python 2.x 系用のバインディングのパッケージも提供されている。