AUFSとか

正式名称は、wiki によるとAnotherUnionFSというのだそうな。

Docker とかにも使われているそうで、こんなわかりやすいページがあった。

Dockerイメージの差分管理についてまとめてみた

http://tanksuzuki.com/post/docker-image-filesystem/

Docker とかは、見聞きしたことはあるんだけども、実際に使ったことはなくどんなものなのかはよく知りません。

一言でいえば、

異なるファイルシステムのファイルやディレクトリを透過的に重ねて、ひとつのファイルツリーを構成できるファイルシステム

ということのようです。BerryBoot のファイルシステムはまさにこれのようですね。このカーネルをあげてchroot すれば最新に追随できそうな感じです。この週末はそんなことにチャレンジしてみるか、気分一新、工作に手を出すかですね。

ほんと、知らないことがたくさんがたくさんありますね。奥が深いというか、知れば知るほど、深みにはまるというか。

NFS でルートファイルシステムをブートさせる記事があったので、

raspberryPiをNFSで起動する

http://takuya-1st.hatenablog.jp/entry/2014/10/14/002617

Boot Raspberry Pi over NFS

http://www.whaleblubber.ca/boot-raspberry-pi-nfs/

とりあえず、これを週末に実験してみますか。

 

ちょっとづつこのあたりは、永続的に押さえていこうかと思います。RasPi をゲットしなければこういうことも、ずっと知らないままだったのかもしれないことを考えると、価値があったと思います。

NFS Boot に成功した

とりあえず、NFS Boot は本当にできるのか試してみました。結果、できました。
実際やってみると、いろいろとはまるところがありましたが、おおむね以下の手順。忘れないうちにメモしておきます。

▼環境

NFS Server・・・・osx 10.9.5

Boot OS・・・・・ 2015-05-05-raspbian-wheezy

 

▼操作の流れ

・NFS サーバでシェアする用意

・arm 用の img のルートファイルシステムを NFS へコピー(大体は第2パーティションにあり。Fedora とは3番目)

・SDCard の FATフォーマットの boot の cmdline.txt へ nfs boot する設定と、IP の設定

 

▼osx の NFS Server 側

NFSの設定を入れて、nfsd を再起動。操作はroot でやっています。オンラインマニュアルはここ

—- /etc/exports
/nfs/fedora22 -rw -mapall=root:wheel -network 192.168.1.0 -mask 255.255.255.0

exports ファイルがあればnfsd が起動しますが、手動で操作したい場合は

# nfsd start | stop

NFS で提供しているパスの確認。

# showmount -e localhost
Exports list on localhost:
/nfs/fedora22                       192.168.1.0
::

最初fedora22 入れようとして、失敗して、RASPIAN 入れたので名前があれですが。

それで、boot したい img をコピー。以下は、centos6.x で、osx の NFS をマウントして、rsync しています。centos6はバーチャルボックスでosx を同じネットワークセグメントにいます。

[root@cent66 etc]# df -hT
Filesystem                   Type     Size  Used Avail Use% Mounted on
::
hope.junkhack:/exports       nfs      466G  390G   76G  84% /nfs
hope.junkhack:/nfs/fedora22  nfs      466G  390G   76G  84% /mnt/fedora22

hope.junkhack は名前解決できるようにしてあります。ちなみに、fstab はこんな感じのデフォルト。

—- /etc/fstab
::
hope.junkhack:/exports    /nfs        nfs        defaults    0 0
hope.junkhack:/nfs/fedora22    /mnt/fedora22    nfs        defaults    0 0

で、RASPIAN のイメージをマウント。

[root@cent66 RASPBIAN]# kpartx -av 2015-05-05-raspbian-wheezy.img
add map loop0p1 (253:2): 0 114688 linear /dev/loop0 8192
add map loop0p2 (253:3): 0 6277120 linear /dev/loop0 122880

[root@cent66 RASPBIAN]# mount /dev/mapper/loop0p2 /mnt/raspi/

[root@cent66 RASPBIAN]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
::
hope.junkhack:/exports        466G  388G   78G  84% /nfs
hope.junkhack:/nfs/fedora22   466G  388G   78G  84% /mnt/fedora22
/dev/mapper/loop0p2           3.0G  2.4G  451M  85% /mnt/raspi
[root@cent66 RASPBIAN]#

で、コピー。

[root@cent66 RASPBIAN]# rsync -av /mnt/raspi/ /mnt/fedora22/
sending incremental file list
./
bin/
bin/bash
bin/bunzip2

::

var/spool/cron/crontabs/
var/spool/rsyslog/
var/tmp/

sent 2304687346 bytes  received 1293752 bytes  4274293.05 bytes/sec
total size is 2299569061  speedup is 1.00
[root@cent66 RASPBIAN]#

 

で、NFS でブートするときに fstab の中がそのままだと、SD カードのパーティションをchroot してしまうのでコメントアウト。

[root@cent66 etc]# vim fstab

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

NFS側のイメージ展開は以上で終わり。

 

▼Boot するcmdline.txt の中に以下を追加

root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.17:/nfs/fedora22,udp,vers=3,nolock ip=192.168.1.24:192.168.1.17:192.168.1.1:255.255.255.0:rpi:eth0:off

nolock のオプションは必要ないかもしれません。とりあえず、これで動いてはいます。IPのところは以下の書式。

ip=<raspberrypi_ip>:<nfs_server_ip>:<default_gateway>:<mask>:rpi:eth0:off

シリアルコンソールのブートログは、

[    4.638898] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1

[    4.674857] IP-Config: Complete:

[    4.680180]      device=eth0, hwaddr=b8:27:eb:97:45:fb, ipaddr=192.168.1.24, mask=255.255.255.0, gw=192.168.1.1

[    4.694694]      host=rpi, domain=, nis-domain=(none)

[    4.701878]      bootserver=192.168.1.17, rootserver=192.168.1.17, rootpath=

[    4.719859] VFS: Mounted root (nfs filesystem) readonly on device 0:14.

[    4.729328] devtmpfs: mounted

[    4.735147] Freeing unused kernel memory: 400K (80786000 - 807ea000)

[    5.132474] random: nonblocking pool is initialized

[    6.228285] udevd[177]: starting version 175



Raspbian GNU/Linux 7 pi ttyAMA0



pi login: 

となっています。

NFS Boot させたあと、uname したら、

root@pi:~# uname -a

Linux pi 4.0.7-v7+ #801 SMP PREEMPT Tue Jun 30 18:38:23 BST 2015 armv7l GNU/Linux

root@pi:~#

げ、fedora の initramfs からブートしてます。SDCard の boot は、初回にスクリプトで作ったやつだった。。。。

root@pi:/boot# ll *.img

-rwxr-xr-x 1 root root 39176850 Jul  4 17:40 initramfs-0-rescue-18b4f0b4546f49828e1ef5e652cc7b9a.img

-rwxr-xr-x 1 root root 16475761 Jul  4 17:36 initramfs-4.0.6-300.fc22.armv7hl+lpae.img

-rwxr-xr-x 1 root root  3987856 Jul  2 23:35 kernel7.img

-rwxr-xr-x 1 root root  4016696 Jul  2 23:35 kernel.img

root@pi:/boot#

たぶん、RASPIAN のimg の boot からやれば、良いはず。まだ試していませんが。

df はこんな感じで、ルートがnfs になっています。76Gも空きがあるー(osx 側のディスクですが)

root@pi:~# df -hT

Filesystem                 Type      Size  Used Avail Use% Mounted on

192.168.1.17:/nfs/fedora22 nfs       466G  390G   76G  84% /

devtmpfs                   devtmpfs  459M     0  459M   0% /dev

tmpfs                      tmpfs      93M  216K   93M   1% /run

tmpfs                      tmpfs     5.0M     0  5.0M   0% /run/lock

tmpfs                      tmpfs     186M     0  186M   0% /run/shm

/dev/mmcblk0p1             vfat      200M   98M  102M  50% /boot

このままだと、モジュールを読み込んでいないので使えませんが、、、

root@pi:~# lsmod

Module                  Size  Used by

root@pi:~# ll /lib/modules/

total 8

drwxr-xr-x 14 root root 476 May  6 22:22 3.18.11+

drwxr-xr-x 14 root root 476 May  6 22:22 3.18.11-v7+

root@pi:~#

Boot の img を RASPBIAN のに入れ替えて、リブート

[root@pi ~ 07/25 20:40:51]# ll /boot/*.img

-rwxr-xr-x 1 root root 3930004 Apr 27 13:40 /boot/kernel7.img

-rwxr-xr-x 1 root root 3974884 Apr 27 13:40 /boot/kernel.img

これでkernel も ローダブルモジュールもOK な感じ。

[root@pi ~ 07/25 20:41:40]# uname -a

Linux pi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux

[root@pi ~ 07/25 20:44:14]# lsmod

Module                  Size  Used by

cfg80211              386508  0

rfkill                 16651  1 cfg80211

rpcsec_gss_krb5        20958  0

nfsd                  263569  2

snd_bcm2835            18649  0

snd_pcm                73475  1 snd_bcm2835

snd_seq                53078  0

snd_seq_device          5628  1 snd_seq

snd_timer              17784  2 snd_pcm,snd_seq

snd                    51038  5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device

8192cu                528365  0

joydev                  8879  0

evdev                   9950  2

uio_pdrv_genirq         2958  0

uio                     8119  1 uio_pdrv_genirq

PS1 のフォーマット

ターミナルの書式を設定しようとするとき、毎回忘れてググるのでメモしておこう。

PS1="[\u@\h \W \D{%m/%d} \t]\\$ "

これで、ターミナルは、

[root@pi ~ 07/25 11:32:53]#

となる。日付と時分秒を出してるだけなんですが、何かと実行終了の日時が出るので便利。

NFS Boot の IOPS

fio の手順が載っていたので、以下でNFS Boot の IO性能を計測。

母艦のosx の DISK は SSD です。Samsung MZ-7TD500BW 840 SSD

cd /usr/local/src/
sudo apt-get install -y libaio-dev
git clone -b fio-2.2.5 git://git.kernel.dk/fio.git
cd fio
./configure && make && sudo make install
cd ..
wget http://www.winkey.jp/downloads/visit.php/fio-crystaldiskmark
fio fio-crystaldiskmark | perl -ne ‘
print "$1 : " if(/(.+): \(groupid=/);
print "$1 " if(/bw=([\d. ]+[KM]?B\/s)/);
print "[ $1 IOPS]\n" if(/iops=(\d+)/)’

4K の読み書きが SDCard よりだんぜん速いです。

Seq-Read : 9555.8KB/s [ 9 IOPS]
Seq-Write : 10250KB/s [ 10 IOPS]
Rand-Read-512K : 9145.4KB/s [ 17 IOPS]
Rand-Write-512K : 10085KB/s [ 19 IOPS]
Rand-Read-4K : 3624.8KB/s [ 906 IOPS]
Rand-Write-4K : 3300.5KB/s [ 825 IOPS]
Rand-Read-4K-QD32 : 8885.1KB/s [ 2221 IOPS]
Rand-Write-4K-QD32 : 10492KB/s [ 2622 IOPS]

なるほどー。いいかも。

 

参考

discypus.jp/wiki/

fio – Flexible I/O Tester (2015-02-22)

テレビを見たければ運動せよ! PT3 をGET

PT3 の存在は前から知っていたのですが、友人のところに遊びにいったらnasune でリモートで録画してあるTED を見せてもらい触発されて思わずポチりました。nasune というのは、nass にTVチューナーが付いて録画できるというもの。

 

Sony

nasne(ナスネ) CECH-ZNR2J

 

お値段は、2万弱くらいで購入できるんですが、出来合いの製品だけに面白さにかけるところがあり、またチューナが1チャンネルなので同時録画はできません。

 

そこで、アースソフトさんがハードとWINDOWS 用のドライバだけ作っている面白い機器が以下。これをポチりました。

 

アースソフト

PT3 仕様

 

ISDB-S 2TS と ISDB-T 2TS の合計 4TS を同時に受信可能です。要するに、衛星デジタル放送用のISDB-S、地上デジタル放送用のISDB-Tがそれぞれ2チャンネルづつ、受信できるという代物。

PT3_img

PC とそれらを受信するソフトウェアやB-CAS カードと読み取るカードリーダなどが必要です。当初はこれらを完全自作しようと思っていましたが、ハードルが高すぎて断念。いつかチャレンジしてみたいお題ではあります。

 

PT3 を活用するには、いろんな手法がありますが、今のところ方針としてOSはLinuxにし、Chinachu というEPG閲覧と、予約+Webストリーミング用のUIを備えたソフトウェアの組み合わせで使ってみようと思います。幸い、入れるマシンは余っているものがあるので、追加投資はHDDくらいです。が、これも使ってみないと自分のライフスタイルでどのくらいの容量が必要かはわかりません。今付いているHDDで事足りるかもしれません。

 

もともと、テレビはほとんど見ませんが、今回はTEDなど面白い番組もやるのでそういうのを予約して視聴するのが目的です。あと、PCに向かいすぎて腰が悪くなので、息抜きを強制的に行うためリビングのTVでごろ寝しながら見て体を休めるという目的もあります。また休めるの反対に鍛えるという目的も盛り込んでも面白いかもしれません。

 

インストールやセットアップなどの情報はごろごろと出るので、困ることはなさそうです。ただ、自分が使うシーンというのが想像できません。とりあえず、箇条書きにしてみます。出来るといいなと思っている要点は以下です。

 

・番組予約はPCからさくさくと簡単にやりたい

・外出先のちょっとした空き時間にみたい

・録画した映像は見たら消す感じ or 古いものは自動的に消えるように

・CMをカットするか飛ばせるといいな。またその逆にCMだけコレクションできるようにしたい。

・i-Phone や タブレットで気軽に見たい

・普段使いはOSXのモニタで見て、ゆっくり見たいときはリビングのTVからも見たい

・寝る前に、タブレットでみたい

・録画したデータは飛んでもいいので、RAID1 や5 などはしない。安さ優先

・PCの電源は録画直前に入り、終了したら消える(スリープとか)ようにしたい

・今作成中のWiFi E-ink に録画した番組を表示できるようにしたい。

・電気代を節約するために、自転車の室内ローラで発電し、電力供給をしたい

trainerlaptop ※イメージですが、まぁこんな感じ

indoor-cycling_0

Indoor Bike Trainer make とかで検索

 

・ローラーの前には体重計があって、載れば自動的に記録される仕組みも作りたい。あと10Kg減量したいのです。

 

こんな工夫が出来れば、テレビが見たければ、運動しなさいというスタイルにできるかもと思っています。座りっぱなしの生活から、少しは運動もでき、そして結果的にTVの情報ソースを今より見れればと思います。

 

このプロジェクトは少しづつ進行していきます。

テレビを見たければ運動せよの、ネーミングを考えないとですね。Running Tv ですかね?

PT3 到着

PT3 が ドスパラより到着。

10,480円也。PCBの厚みは、1.6mm で金色に光る胴箔部分が綺麗です。

6

Rev.A で2012.04.24 のようです。3年前ですか。なかなか息の長い商品ですね。

5 S と T のアンテナ端子。

S    衛星
T    地上

 

4 TOSHIBAのチップ TC90522XBG と、向かい側に見えるのは何でしょうか?

3チューナー部分は銀色のボックスの中にあります。これはモジュール化されているパーツのようですね。シャープのVA4M6JC2103

東芝のICは、このモジュールとつながっているようですので、何か電波の調整をやっているのでしょう。

レギュレータICも大きなのが2つあるようです。200WN3M(PQ200WN3MZPH) ともうひとつは、012ENB1 (PQ012ENB1ZPH)シャープのようです。他にもレギュレータはあって全部シャープのを使っているようです。

2 ALTERA Cyclone IV と書いてありますかね?EP4CGX15BF14C8N

これは横のSDRAMとがっつり、つながっているようです。PCI-EX からのラインがこのICに入っているようです。

インダクタも2つありますね。何かスイッチングして電源を生成しているのかな?

1 これはちょっと作れそうにもありません。仮に作れたとしても中のソフトウェアがわかりません。解析にはかなりの技術と知識が必要でしょう。デジタルの電波の知識が必須となりそうです。

 

PCの中に組み込んだらこうして、基板をみるのもこれが最後になりそう。