Saturday, May 28, 2016

Raspberry Piのバックアップ

SDカードは信用ならないということで、バックアップの方法を考えたのだが、結論から言うとrsyncが一番良さそうだということになった。

SDカードに書く時は、1GBかそこらを書くだけだが、カード全部をコピーしてバックアップとするには、カードのサイズ全体を読むことになるので、何時間かかかる。

dump/restoreというのも頭をかすめたが、どのようにdumpしたのか覚えておかねばならないし、restoreできる気がしないので、忘れることにした。

結論としてはsshでrsyncで、リモートに必要なデータ(とりあえず/etcの下だね)を取っておくこととした。10秒の単位で終わる。データ量もMBの単位。小さいことはいいことだ。


話はバックアップを離れるけれど、IoTでこの手のデバイスを使う話があるわけだが、たくさんのデバイスに合理的にインストールするのは、それだけで商売になるのではないだろうか。SDカード一枚焼くのにパソコン一台占領して20分とかかかるわけですよ。100枚焼くには30時間以上。

人工知能とデバッグ

少し前に、NHKスペシャルの「天使か悪魔か羽生善治、人工知能を探る」というのを見たのだけど、将棋の羽生がAlphaGoのDeepMindに行ってDemiss Hassabisにインタビューする内容だった。

この番組の1シーンで、Lee SedolがAlphaGoに一勝したときの記者会見で、記者がHassabisに「碁の場合はマシンが暴走した、と言って許されるかもしれないが、ヘルスケアでそれで許されるのか」という趣旨の質問をしていた。これはなかなか良い質問だと思った。DeepMindはヘルスケアをやって行くと言っているのだ。Hassabisの答えは、AlphaGoは完成品ではなく、ヘルスケアの場合は完全にテストしたものを製品とする、という優等生的なものだった。

このやり取りについて考えていたのだが、人工知能で非常に正解率が高い判断をするものの、当然失敗がある。結果を人間が直接見るのが前提なケースは良いだろう。しかしこれを取り込むシステム全体はどうなんだろう?番組の中では「良心回路」を持った人工知能の研究が出てきていたが、私が言いたいのはもっと単純なエラーについてだ。道が右に曲がっているという判断に基づき、自動運転車が右に曲がろうとする。この成果率は非常に高い。しかし100%ではない。間違えるとしたらシステム全体からするとバグだ。複数のロジックを用いて確率を下げる、映画2001年のHALみたいに。でもエラーはゼロとは言えない。どう判断するのだろう。人間の正解率と同等なら良しとするのだろうか。

エラーからの回復方法は、テストを完全にするとかどうという以前に、どうやってシステムをつくるかの思想の問題になる。実際にはケースごとにいろいろ逃げ道あるのだろうが。記者がこのつもりで質問したのかどうかは定かではないが、私も聞いてみたい。

Monday, May 23, 2016

Raspberry Pi FreeBSD。ScanSnapのサーバにする

Saneという名前は聞いたことがあったが、ScanSnapのデータが読めるとは思わなかった。

まず、sane-backendsをインストールする。

pkgが最後に使い方についていろいろ言ってくるが、まず以下の出力を見るように言われる。

root@rpi-b:/home/freebsd # usbconfig list
(略)ugen0.5: at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (98mA)




この0.5ということを調べて、デバイスの情報を得る。
root@rpi-b:/home/freebsd # usbconfig -d 0.5 dump_device_desc
ugen0.5: at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (98mA)

(略)
 idVendor = 0x04c5
 idProduct = 0x11a2


そしてこの情報をsaned.conf というところに入れて、

root@rpi-b:/home/freebsd # cat /usr/local/etc/devd/saned.conf
notify 100 {
       match "system" "USB";
       match "subsystem" "INTERFACE";
       match "type" "ATTACH";
       match "cdev" "ugen[0-9].[0-9]";
       match "vendor" "0x04c5";
       match "product" "0x11a2";

       action "chown -L cups:saned /dev/\$cdev && chmod -L 660 /dev/$cdev";
};


devdをリスタートする。

root@rpi-b:/home/freebsd # /etc/rc.d/devd restart

すると、scanimageでスキャナが認識できる。
root@rpi-b:/home/freebsd # scanimage -L
device `fujitsu:ScanSnap S1500:14489' is a FUJITSU ScanSnap S1500 scanner

GUIを使うつもりはないので、コマンドラインで操作する。
テストの紙をスキャナに一枚入れて、以下のコマンドを実行すると、あら不思議。
root@rpi-b:/home/freebsd # scanimage --device-name='fujitsu:ScanSnap S1500:14489' --format tiff > test.tiff

紙が吸い込まれて、tiffのイメージができた。

なかなか愉快だ。
まあLinuxでも同じでしょう。

Sunday, May 22, 2016

Raspberry Pi FreeBSD pkgの設定

とりあえずうちのRPi B+にはRaspbianを入れてファイルサーバとして使えるようになったのだが、最初はFreeBSDを入れたかったのだった。

FreeBSDのイメージは、RPi用のやつを本家からダウンロードすることができ、立ち上がる。ダウンロードするイメージは80MBくらいしかなく、お手軽だ。ちなみにパスワードはroot/root, freebsd/freebsd。問題はpkgが本家ではまだ整備されていないこと。また、ports collectionをRPiの上でコンパイルするのは非常に時間がかかる。

いろいろ探していると、10.X系ではこちらにhttp://pkg.uzsolt.hu/準備してくれていることがわかった。pkgのリポジトリの情報を/etc/pkg/FreeBSD.confに入れてpkg updateすると、 使えるようになった。とりあえずpython, curlなどを入れた。


いろいろな人が取り組んでいることがわかったが、組み込みシステムと同じで、クロスコンパイルの環境を作るのが一筋縄ではないようだ。

Saturday, May 14, 2016

Chromebookからファイルサーバへのアクセス & .ssh/known_hostsの編集

さて、RPiであらたに立てたsambaサーバだが、ここにChromebookからアクセスするにはどうすればよいか。

ChromeのExtensionで"File System for Windows"なるものがあって、これを使う。認証の情報を入れると、マウントされて見えるようになる。



ところで、.ssh/known_hostsの情報がダメになって、sshできなくなることがあるが、Chromebookの場合はどうするか。つまりこういうことを言われたとき:
Add correct host key in /.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /.ssh/known_hosts:4
Chromebookに自分のファイルを編集するエディタはないので、一瞬途方にくれたが、このようにするそうだ。JavaScript console をひらき(CTRL +Shift +J) 以下を入力する。
term_.command.removeKnownHostByIndex(INDEX);("INDEX"をknown_hosts行番号に置き換える。)

Raspberry Pi B+ Raspbianでファイルサーバの設定

Raspberry Piで、うちのMac Miniのタイムマシン用の外付けRAIDのうちの1個を使ってファイルサーバを作る(私はハードディスク4本、それで作ったRAID2個持っているのである)。HFS+が認識できて、smbサーバが立てられれば良い。

FreeBSDでやろうと思ったのだけど、先が長そうだったので、Raspbianでやることにした。便利さに負けた感じ。

まず、Raspbianのパーティションが満杯になった。32GBのカードなのだけど、ファイルシステムは3GB(だったかな?)しかなかったので、拡張する。こういうところにやり方が書いてある。用心深くfdiskして、resize2fsするだけである。

hfsplusの設定はここに書いてあった。だいたい同じことをやった。hfsplus, hfsprog, hfsutilsを入れる。raspbianは/mediaの下に/dev/sda2をマウントしてしまっていたが、fstabを適当に書き換えて好きな場所に移した。

sambaの設定はこれを読んだ。まあ普通ですね。raspberry pi固有のことはない。


これで他のマシンからsmbの共有できたので喜んでいる。SDカードのバックアップを取っているところ。これには時間かかる。大した設定していないので、もっと簡単なバックアップの方法が欲しいです。(ddを使ったやり方で200 minかかった)


この作業で気づいたのだけど、MacOSXが作るディスクには、隠しディレクトリがあって、Macでは見えないけれど、Linuxから見える。".HFS+ Private Directory Data"という名前になっている。このRAIDには5TBが2本でRAID1になっているのだが、全部で700GB程度使用済みだが、実際にはそんなに使ってないはず。調べると、この隠しフォルダが700GBの半分使っていることが判明した。容量に余裕あるので消したりはしないけど。



Monday, May 09, 2016

Raspberry PiのSSDのバックアップ

Raspberry PiのFreeBSDにportsを入れたので、そろそろバックアップをとろうと思った。ddで戻して、xzで圧縮しておく。

tsuchiyamac:~ tsuchiyayoshihiro$ time sudo dd if=/dev/disk2 bs=1m | xz -c > RPI20160509.img.xz
3781+1 records in
3781+1 records out
3965190144 bytes transferred in 1225.829539 secs (3234699 bytes/sec)

real 20m25.867s
user 10m20.797s

sys 1m12.236s

tsuchiyamac:~ tsuchiyayoshihiro$ ls -lh RPI20160509.img.xz 
-rw-r--r--  1 tsuchiyayoshihiro  staff   315M  5  9 19:12 RPI20160509.img.xz

4GBのSDカードなので、およそ1/10になっている。


Saturday, May 07, 2016

MacOSXのTrim

MacMiniはSSDに換装して使っているのだけど、それに関係してだったかApplicationフォルダにTrim Enablerが入れたのだったと思う。これ何だろうなと思ったので、Trimがどうなっているか調べた。

Trimはファイルを消した時などに、OSがSSDにその領域を解放して良いとお知らせするもので、解放すればSSD内では使用済みの領域が減り、減った分を他のことに使えるので性能が上がるメリットがある。理屈の上では、だけど。

まあ換装した人だけですね。気にしなければいけないのは。元からSSDになってるマシンでは設定済みの筈です。

El Capitanではtrimforceを使えば良いらしい。つまりTrim Enablerはいらない。

まず、trimforce使用前。
Trimはオフになっている。(TRIMサポートの行)





ターミナルからtrimforce実行。

tsuchiyamac:~ tsuchiyayoshihiro$ sudo trimforce enable
IMPORTANT NOTICE:  This tool force-enables TRIM for all relevant attached
devices, even though such devices may not have been validated for data
integrity while using TRIM.  Use of this tool to enable TRIM may result in
unintended data loss or data corruption.  It should not be used in a commercial
operating environment or with important data. Before using this tool, you
should back up all of your data and regularly back up data while TRIM is
enabled.  This tool is provided on an “as is” basis. APPLE MAKES NO WARRANTIES,
EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES,
SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE
EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND
THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND
EFFORT IS WITH YOU.
Are you sure you wish to proceed (y/N)? y
Your system will immediately reboot when this is complete.

Is this OK (y/N)? 

Enabling TRIM...

.

.
Operation succeeded. Your system will reboot momentarily, please wait...


使用後。


アカウント整理

連休で考えるところがあり、アカウントの整理をした。


続けるもの
gmail
linkedin
github
このブログ。


やめたもの
facebook(deactivateなので元に戻せる)
aws.com
MS Azure
qiita
delicious.com
yahoo.com
yahoo.co.jp
twitter
囲碁クエスト

facebookはいきなりやめて良いかどうかわからなかったので、
いつでも復活できるようになっている。