今日も微速転進

ここではないどこかへ

Ghost のバージョンアップ(0.7.8 to 0.11.2)

しばらくサボってたら一気にバージョンが上がっているじゃないですがか、ghost blog platform。

ghost.org

サボりのツケを払うべく、バージョンアップ作業したので参考として記録しておきます。

やってることは過去記事と同じです……。

a244.hateblo.jp

関連:Ubuntu 15.10 Server 版を 16.04LTSにアップグレード - ながいものには、まかれたくない

続きを読む

ラズパイでDocker (Raspbian Jessie)

お勉強用にラズパイにDocker をインストールしてみます。というか、公式ブログの手順そのままです。

www.raspberrypi.org

先に書いておくと素直に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 3 MODEL B 【RS正規流通品】

Raspberry Pi 3 MODEL B 【RS正規流通品】

*1:「なろう系」のラノベでちょくちょく見かける表現。なんか違和感ありますが使ってみました。

ラズパイ3 でARM版 Fedora 25 Beta を試す

カーネル4.8でラズパイ向けのドライバがメインラインに*1に取り込まれた関係で、Fedora 25でラズパイを正式にサポートするようです。

以前からFedora 自体はラズパイでも動いていたようですが、今回は構築済みイメージが提供されるよってことのようです。
どうやらラズパイ 2と3のみでCompute Moduleなどはサポート外。

fedoramagazine.org

すでにFedora 25 のベータがリリースされているので予備のmicroSDで試してみました。

結論を先に書いておくと、Gnome デスクトップは重いです。動作が緩慢な印象。


何がまずいのかよくわかりませんが、ちょくちょく「Gnome Shell がクラッシュしました」とか「コンポーネント内で問題が発生しました」という表示が出ます。

f:id:atuyosi:20161020225434j:plain

そんなギャグかまさなくてもいいのに。

セットアップ

結局のところダウンロードしたデータをxzで展開してddで書き込むだけです。

ダウンロードしたイメージファイルをmicroSDに書き込みます。他のOSの場合は公式サイトの説明を参照。

イメージファイルのダウンロード

Raspberry Pi - FedoraProjectからリンクをたどります。

お目当はWaylandベースのデスクトップ環境なのでワークステーション向けのイメージをダウンロード。

f:id:atuyosi:20161020234517p:plain


もしくはナイトリービルド版。

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

初期設定ウィザード

画面の指示に従えば特に問題ないはず。

f:id:atuyosi:20161020232049j:plain

もうちょっと綺麗な画像を撮りたいところですがしかたない*3。通常版のインストーラの流用だろうと思います。

タイミング障害なのかもしれませんが、地図から東京を選択してもタイムゾーン設定の画面から次へ進めませんでした。

前の画面に戻って「位置情報を有効にする」をONからOFFにした上で「Tokyo/Japan」と入力すれば次の画面に進めるようになりました。

f:id:atuyosi:20161020233135p:plain

もし同じ箇所で次に進めなくなるようであれば、一旦前の画面に戻ってみると良いのではないでしょうか。

毎回起きるのかどうか検証したわけではないので悪しからず。

デスクトップについて

デフォルトはWayland + mutter(?) + Gnome-shell。こんな感じ。

f:id:atuyosi:20161020224659p:plain

f:id:atuyosi:20161020224731p:plain

ちゃんとARMでWaylandしています。

日本語入力

悲しいことに日本語入力がibus+libkkc構成。

私の環境では日本語キーボードを接続しているにもかかわらずキーマップが英語キーボードとなってました。しかも初期状態日本語入力ON。しかもかな漢字変換エンジン側は日本語キーボードを前提にした設定になっているのでオンオフすらマウス操作で行う必要あり。


対処としては、正しいのかよくわかりませんが、直接入力用のキーボードとしてかな漢字変換なしの「日本語」キーボード*4を追加してデフォルトにします。

  1. デスクトップの背景部分を右クリック
  2. 設定をクリック
  3. 「Region & Language」をクリック
  4. ウィンドウ下段の入力ソースというエリアの左端の「+」をクリックし、「日本語」を追加。
  5. 真ん中にある不等号のようなボタンを操作して順序を設定


最終的に以下の画像のような状態になっていればOKなはず。
f:id:atuyosi:20161020230138p:plain


別解その1としてlibkkc側の設定オプションで、「独自のキーマップを使う」という設定を有効にする方法もあります。上記の手順なしでも日本語キーマップになるはず。

f:id:atuyosi:20161020230112p:plain

別解その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はどうするのでしょうかね?

一年ほど前に似たようなことを書いている方がすでにいるようで。

参考:平衡点(2015-10-15)

見た感じでは/etc/sysconfig/keyboardは存在しないです。それと、一度ログインしてしまうとAlt+Ctrl+ファンクションキーで仮想コンソールに移動したくてもできないです。一瞬グレー背景の画面に切り替わりますが、いつものようにログインプロンプトの画面にはなりません。ログイン前の画面からは仮想コンソールにアクセスできるようです。

まとめ

冒頭にも書いた通り、普通に遅いというかもっさりです。他のデスクトップ環境をデフォルトにしているエディション(Fedora 風にいうとFedora Spin)もあるのでそっちの方はマシだろうとは思いますが。

正式版は11月中旬らしいですが、x86_64対応を楽しみにしつつ、来年のFedora 26 を待つのが良さそうな雰囲気です。


それでは。

*1:Linux Torvalds 氏の管理する Linux のソースツリーのこと。

*2:フォーマットしたはずなんだけどなぁ

*3:qemuあたりを使ってPC上でブートすれば綺麗に撮れると思う

*4:こういう変な表現になるのはiBusの仕様のせい

*5:これだからiBusは嫌なんだ

Netatalk のセットアップ(Raspberry Pi 3 )

macOSRaspberry Pi のデータ共有用にNetatalk をセットアップする作業メモです。

USBメモリという手もありますが、ネットワーク越しにデータをやり取りする方が便利です。scpだとちょっとめんどいし、NFSでもいいけどmacOSLinux間のデータ共有なのでNetatalk (AFP) をインストールすればいいよねってことで。

前置き

Netatalkunix系OS上でApple のファイル共有プロトコルを利用するためのプログラム(デーモン)です。最新版はバージョン3系ですが、Raspberry Pi の公式OSであるRaspbianで提供されているのはバージョン2.2.5です。

新しいバージョンであればSamba*1との統合が実現できるようです。

ラズパイをファイルサーバーとして使う予定はないので素直に古いですが標準パッケージを使います。 2016年にこの旧バージョンというのも悲しいものがありますが、この記事はNetatalk バージョン 2.2.5 の設定の話です。


なお、macOS 自体が、AFPからWindowsと同じSMBプロトコルベースに移行しようとしているそうなので安定運用したいならSamba+AFP(netatalk) 構成にした方が良いようです。

情報元:Netatalk and Samba

補足

Netalkのバージョン3系をソースからインストールする方法については他の方が書かれているのでそちらを参照。

準備

設定手順としては下記のサイトを参考にしました。

まずはファイルシステム側が拡張属性の保存に対応している必要があります。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」でネットワークのコンピュータの一覧へ。

アクセスするとラズパイのホスト名が表示されるのでダブルクリック。

f:id:atuyosi:20161018165500p:plain

f:id:atuyosi:20161018165709p:plain
ウィンドウの右上に「別名で接続」というボタンがあるのでこれをクリック。

f:id:atuyosi:20161018165452p:plain
ユーザ名としてpi、パスワードにラズパイ側のパスワードを入力。

自動起動させる設定

問題がなければサービスとして有効化する。

$ sudo systemctl  enable netatalk

まとめ

最新版ではないですが、これでmacOS側から自由にラズパイ側のファイルにアクセスできます。

以上です。


それでは。

*1:Windows用のファイル共有プロトコルに対応したファイル共有ソフトウェア

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)
    • ビルド
      • インストール
      • 動作確認
  • 申し送り事項
    • 遭遇したエラーなど
      • GL Driver
      • CMake 関係
    • 有効にできていないモジュール
      • opencv_sfm
      • opencv_hdf
      • opencv_cvv
      • やろうと思えば有効化できそうだがしていない機能
      • 不明(というか不要)
  • そのほか
    • オプションの一覧
  • まとめ

作戦としてまず基本モジュールのみ(B)でビルドできることを確認して、再度拡張モジュール(contrib)ありでビルドした関係で両方書いてあります。参考にする場合は必要に応じてA-Bの順序、またはA-Cの順序で。

*1:libopencv-core2.4という名称で提供されており、GUI付きのOSイメージには最初からインストールされている。また、Python 2.x 系用のバインディングのパッケージも提供されている。

続きを読む

広告