Tiny RTC DS1307 I2C

前からRTC っていうのを触ってみたかったので、モジュールをゲットしてみました。電池付きで140円くらいでゲット。

WIKI

http://www.elecrow.com/wiki/index.php?title=Tiny_RTC

TinyRTC_DS1307

TinyRTC_DS1307b

ちょっと、半田付けして配線する気力がわいてこないので、とりあえずチュートリアルなBLOGを調査。以下がわかりやすそう。

Time and calendar functions with a real time clock module based on the DS1307 and an Arduino

下の画像のトランジスタのシルク印刷の3穴には、DS18B20の温度センサーをつけて温度も取れるようですね。

Tiny RTC DS1307 Real-Time-Clock with an additional temperature sensor DS18B20

こうなると、ちっさなディスプレイに日にちと温度なんか出して遊びたいですね。そうそう、水晶のクロックって日本発なんですってね。古賀カットという、水晶の切り出しによって温度変動が少ない水晶発信子を作った偉人です。

 

この水晶発信子はどこのかはわかりませんが、時を刻んでくれるのでしょうか。楽しみです。

NFS Boot でタイムマシーンから復元

osx 上の nfs で RasPi をブートしているので、タイムマシンからインストール直後に復元できるかやってみました。

 

まず、インストール直後、pi の電源を落とした状態で、タイムマシーンでバックアップを取得。対象は、nfs 直下のところだけにしています。

Time_Machine

現在の、パッケージ数の状態

[root@pi modules 07/26 06:19:54]# dpkg -l | wc -l
875
[root@pi modules 07/26 06:19:57]# 

nginx でも入れてみます。

[root@pi ~ 07/26 07:33:55]# dpkg -l | wc -l
878
[root@pi ~ 07/26 07:33:56]# 

パッケージ数が増えました。

で、設定やら、バージョンやらつついた後に、やっぱりやーめた(よくある事)、ということで初期状態に戻します。

 

pi はあらかじめ、シャットダウンしておきます。

タイムマシーンに入ります。

1

dev を除外して、すべて選択。

2

で、ブート。

[root@pi / 07/26 08:21:25]# dpkg -l | wc -l
875
[root@pi / 07/26 08:21:29]# 

便利ー!

FreeNAS + iSCSIやNFS 環境 でもスナップショットを使えばできるとは思いますが、この手軽さにはかないません。

オンラインバックアップが正常に動作するかは、sync している状態次第だと思うので、どうなるかわかりませんが。nfs のオプションにsync つけておけばいいのかしらね。

 

とりあえず、部屋が暑くてもうPCからは離脱。満喫か、温泉でも行ってきますかねー。空が夏!

apt-get メモ

ubuntu のパッケージ管理は慣れていないので、すぐ忘れちゃうのでとりあえずメモ。

確認後にインストールするオプションみたいなのは、どれですかね?-u とか、-s とか?

コマンド内容
apt-get install [package]パッケージのインストール/更新
apt-get updateパッケージリストの更新
apt-get upgradeインストールされてるパッケージの更新
apt-get dist-upgradeインストールされてるパッケージの更新/ディストリビューションの更新
dpkg -l [package]インストールされてるパッケージの一覧
dpkg -Lインストールした時のファイルの一覧
apt-cache search [query]パッケージの検索
apt-get remove [package]パッケージの削除
apt-get autoremove使ってないパッケージの削除
apt-get purge [package]パッケージの削除(設定ファイルも)
apt-get cleanアーカイブファイルの削除
apt-get clean使ってないパッケージのアーカイブファイルの削除

参考

[Ubuntu] apt-get まとめ
http://qiita.com/white_aspara25/items/723ae4ebf0bfefe2115c

▼オプション

-dパッケージのダウンロードのみを行います。展開・インストールは行いません。
-fパッケージの依存性がおかしくなった場合、その修復を試みます。
-qquietモードです。進捗状況を表示しません。
-uアップデートするパッケージの一覧を表示します。
-sなにが起こるのかのシミュレーションを行い、実際にはシステムの変更を行わない。
-yインタラクティブ(ユーザーへの問い合わせ)に「yes」と答えます。

参考

apt-get – パッケージの操作・管理 – Linuxコマンド
http://webkaru.net/linux/apt-get-command/

Ubuntu Manpage_ apt-get

http://manpages.ubuntu.com/manpages/lucid/ja/man8/apt-get.8.html

 

apt-get upgrade のとき何が起きるのか不明で確認したかったので、-s でシュミレーション。

以下のようになった。とりあえず、これでいいや。

[root@pi ~ 07/26 07:01:35]# apt-get upgrade -s
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  bind9-host cups-bsd cups-client cups-common fuse libbind9-80 libcups2 libcupsimage2 libdns88 libfuse2 libisc84 libisccc80 libisccfg82 liblwres80
  libsdl1.2debian libsqlite3-0 libssl1.0.0 openssl
18 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst libssl1.0.0 [1.0.1e-2+rvt+deb7u16] (1.0.1e-2+rvt+deb7u17 Raspbian:7.0/oldstable [armhf])
Inst libsqlite3-0 [3.7.13-1+deb7u1] (3.7.13-1+deb7u2 Raspbian:7.0/oldstable [armhf])
Inst libcupsimage2 [1.5.3-5+deb7u5] (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [armhf]) []
Inst cups-common [1.5.3-5+deb7u5] (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [all]) []
Inst cups-bsd [1.5.3-5+deb7u5] (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [armhf]) []
Inst cups-client [1.5.3-5+deb7u5] (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [armhf]) []
Inst libcups2 [1.5.3-5+deb7u5] (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [armhf])
Inst fuse [2.9.0-2+deb7u1] (2.9.0-2+deb7u2 Raspbian:7.0/oldstable [armhf]) []
Inst libfuse2 [2.9.0-2+deb7u1] (2.9.0-2+deb7u2 Raspbian:7.0/oldstable [armhf])
Inst libsdl1.2debian [1.2.15-5] (1.2.15-5+rpi1 Raspberry Pi Foundation:oldstable [armhf])
Inst bind9-host [1:9.8.4.dfsg.P1-6+nmu2+deb7u4] (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf]) []
Inst libisc84 [1:9.8.4.dfsg.P1-6+nmu2+deb7u4] (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf]) []
Inst libdns88 [1:9.8.4.dfsg.P1-6+nmu2+deb7u4] (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf]) []
Inst libisccc80 [1:9.8.4.dfsg.P1-6+nmu2+deb7u4] (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf]) []
Inst libisccfg82 [1:9.8.4.dfsg.P1-6+nmu2+deb7u4] (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf]) []
Inst libbind9-80 [1:9.8.4.dfsg.P1-6+nmu2+deb7u4] (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf]) []
Inst liblwres80 [1:9.8.4.dfsg.P1-6+nmu2+deb7u4] (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf])
Inst openssl [1.0.1e-2+rvt+deb7u16] (1.0.1e-2+rvt+deb7u17 Raspbian:7.0/oldstable [armhf])
Conf libssl1.0.0 (1.0.1e-2+rvt+deb7u17 Raspbian:7.0/oldstable [armhf])
Conf libsqlite3-0 (3.7.13-1+deb7u2 Raspbian:7.0/oldstable [armhf])
Conf libcups2 (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [armhf])
Conf libcupsimage2 (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [armhf])
Conf cups-common (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [all])
Conf cups-client (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [armhf])
Conf cups-bsd (1.5.3-5+deb7u6 Raspbian:7.0/oldstable [armhf])
Conf libfuse2 (2.9.0-2+deb7u2 Raspbian:7.0/oldstable [armhf])
Conf fuse (2.9.0-2+deb7u2 Raspbian:7.0/oldstable [armhf])
Conf libsdl1.2debian (1.2.15-5+rpi1 Raspberry Pi Foundation:oldstable [armhf])
Conf libisc84 (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf])
Conf libdns88 (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf])
Conf libisccc80 (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf])
Conf libisccfg82 (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf])
Conf libbind9-80 (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf])
Conf liblwres80 (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf])
Conf bind9-host (1:9.8.4.dfsg.P1-6+nmu2+deb7u5 Raspbian:7.0/oldstable [armhf])
Conf openssl (1.0.1e-2+rvt+deb7u17 Raspbian:7.0/oldstable [armhf])
[root@pi ~ 07/26 07:02:12]# 

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)

PS1 のフォーマット

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

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

これで、ターミナルは、

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

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

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