Hatak::Techlog

Verba volant, scripta manent.

RaspberryPi で遊んでみた

思い立って RaspberryPi を注文したら結構早く手に入ったので、早速遊んでみました。

RaspberryPi は、ARMCore プロセッサ搭載の小型基板です。もともと発売開始の頃に買おうとしていたのですが、ただでさえ発送までの時間がかかる上に、販売代理店のサイトで購入中にエラーになってしまってそのままあきらめていたのでした。 ところが、先日 この記事 を見て思い出したので、買ってみたわけでした。

  • 10/25 : 注文
  • 10/30 : 発送通知メール
  • 11/5 : 到着

イギリスからの発送なのでそれなりに時間がかかりますが、それでも元々の代理店よりはかなり早いと思います。値段は £29.99 + £4.99 (送料) の計 £34.98。日本円換算で 4,500 円程度です。

組み立て

ModMyPi は RaspberryPi 専用のカスタムケースなどを取り扱うネットショップです。今回は本体セットを購入したので、本体ボードとケースが送られてきます。が、組み立てというほどではなく載せてはめれば完了です。上下で色を選べるので、上を白、下を青にしてみました。

iPhone と比べると大きさは同じくらいですが、厚さが3倍くらいあります。

あとは OS イメージを書き込んだ SD カードをスロットにいれ、LAN と電源を接続すれば準備完了です。

SD カードの準備

RaspberryPi の公式から OS イメージがダウンロードできます。展開すると 2GB くらいになるので、利用する SD カードは 4GB 以上が推奨されています。今回は手元に余ってた Transcend の SDHC 16GB (Class10) を用意しました。

大容量の SDHC も昔に比べれば値段が安くなっているのでいいですね。

イメージはいくつか種類がありますが、今回はシンプルな ArchLinux を使うことにしました。 SD カードをマウントして書き込めばいいのですが、スクリプトを利用します。Github で公開されているのですが、残念なことに直さないと動きません。 オリジナルのブランチにもいろんな方から PullRequest があるのですが、反映されてない (しかも多すぎてどれが正しいのか分からない) ので、やむを得ず動く状態に直したものを用意しました。

hatak/RasPiWrite · GitHub

コロンが抜けてるところと、インデントのおかしな所を直しただけのバージョンです。MacOSX 10.8.2 の python で動作しました。

ローカルに取得した後、スクリプトを起動してウィザードに沿って SD カードへの展開を進めます。mac の SD カードスロットに差し込み、スクリプトを sudo で実行します。

$ sudo ./raspiwrite.py

これでイメージ完成です。簡単ですね。 スクリプトに sudo が必要なのはマウント周りの操作を行うためかと思いますが、複数ディスクがある場合などは全部フォーマットされてしまう可能性もあるので十分に注意が必要です。

起動

できあがった SD カードを入れ、LAN ケーブルを挿し、電源を挿します。スイッチはないので、電源をつないだら基板の LED がひかり、10秒ほどで起動します。デフォルトは DHCP 取得になっているので、ルータ等で割り当て IP を調べて ssh するのがよさそうです。

[root@alarmpi ~]# pacman -Sy
[root@alarmpi ~]# pacman -Syu
[root@alarmpi ~]# uname -a
Linux alarmpi 3.2.27-5-ARCH+ #1 PREEMPT Fri Sep 14 13:23:44 UTC 2012 armv6l GNU/Linux
[root@alarmpi ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
rootfs rootfs 1.8G 523M 1.2G 32% /
/dev/root ext4 1.8G 523M 1.2G 32% /
devtmpfs devtmpfs 92M 0 92M 0% /dev
tmpfs tmpfs 92M 0 92M 0% /dev/shm
tmpfs tmpfs 92M 304K 92M 1% /run
tmpfs tmpfs 92M 0 92M 0% /sys/fs/cgroup
tmpfs tmpfs 92M 0 92M 0% /tmp
/dev/mmcblk0p1 vfat 94M 21M 74M 22% /boot
[root@alarmpi ~]# free
total used free shared buffers cached
Mem: 446888 48856 398032 0 9268 20624 -/+
buffers/cache: 18964 427924
Swap: 0 0 0
[root@alarmpi ~]# ps auxf
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 16:47 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 16:47 0:00 _ [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 16:47 0:00 _ [kworker/u:0]
root 6 0.0 0.0 0 0 ? S< 16:47 0:00 _ [cpuset]
root 7 0.0 0.0 0 0 ? S< 16:47 0:00 _ [khelper]
root 8 0.0 0.0 0 0 ? S 16:47 0:00 _ [kdevtmpfs]
root 9 0.0 0.0 0 0 ? S< 16:47 0:00 _ [netns]
root 10 0.0 0.0 0 0 ? S 16:47 0:00 _ [sync_supers]
root 11 0.0 0.0 0 0 ? S 16:47 0:00 _ [bdi-default]
root 12 0.0 0.0 0 0 ? S< 16:47 0:00 _ [kblockd]
root 13 0.0 0.0 0 0 ? S 16:47 0:00 _ [khubd]
root 14 0.0 0.0 0 0 ? S< 16:47 0:00 _ [rpciod]
root 15 0.0 0.0 0 0 ? S 16:47 0:00 _ [kworker/0:1]
root 16 0.0 0.0 0 0 ? S 16:47 0:00 _ [khungtaskd]
root 17 0.0 0.0 0 0 ? S 16:47 0:02 _ [kswapd0]
root 18 0.0 0.0 0 0 ? S 16:47 0:00 _ [fsnotify_mark]
root 19 0.0 0.0 0 0 ? S< 16:47 0:00 _ [nfsiod]
root 20 0.0 0.0 0 0 ? S< 16:47 0:00 _ [crypto]
root 30 0.0 0.0 0 0 ? S< 16:47 0:00 _ [kthrotld]
root 31 0.0 0.0 0 0 ? S< 16:47 0:00 _ [VCHIQ-0]
root 32 0.0 0.0 0 0 ? S< 16:47 0:00 _ [VCHIQr-0]
root 33 0.0 0.0 0 0 ? S< 16:47 0:00 _ [dwc_otg]
root 34 0.0 0.0 0 0 ? S< 16:47 0:00 _ [DWC Notificatio]
root 35 0.0 0.0 0 0 ? S 16:47 0:00 _ [kworker/u:1]
root 36 2.6 0.0 0 0 ? S 16:47 1:59 _ [mmcqd/0]
root 37 0.0 0.0 0 0 ? S 16:47 0:01 _ [jbd2/mmcblk0p2-]
root 38 0.0 0.0 0 0 ? S< 16:47 0:00 _ [ext4-dio-unwrit]
root 82 0.0 0.0 0 0 ? S< 16:47 0:00 _ [bcm2708_spi.0]
root 384 0.0 0.0 0 0 ? S 17:23 0:00 _ [kworker/0:2]
root 28528 0.0 0.0 0 0 ? S 17:54 0:00 _ [flush-179:0]
root 1 0.0 1.2 4596 2396 ? Ss 16:47 0:01 /usr/lib/systemd/systemd --system --deserialize 28
root 46 0.0 0.6 3736 1208 ? Ss 16:47 0:00 /usr/lib/systemd/systemd-udevd
root 50 0.0 1.0 5208 1996 ? Ss 16:47 0:00 /usr/lib/systemd/systemd-journald
root 95 0.0 0.6 2772 1200 ? Ss 16:47 0:00 /usr/sbin/crond -n
root 97 0.0 1.1 6248 2160 ? Ss 16:47 0:00 /usr/sbin/sshd -D
root 163 0.0 1.6 9968 3140 ? Ss 16:49 0:02 _ sshd: root@pts/0
root 165 0.0 0.9 3272 1744 pts/0 Ss 16:49 0:00 _ -bash
root 28579 0.0 0.5 2648 944 pts/0 R+ 18:03 0:00 _ ps auxf dbus 99 0.0 0.7 2808 1396 ? Ss 16:47 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root 106 0.0 0.3 1752 676 tty1 Ss+ 16:47 0:00 /sbin/agetty --noclear tty1 38400
root 144 0.0 0.2 1928 516 ? Ss 16:47 0:00 /sbin/dhcpcd -A -q -w eth0 ntp 146 0.0 0.4 3508 792 ? S 16:47 0:00 /usr/sbin/ntpd -s
root 147 0.0 0.3 3676 572 ? Ss 16:47 0:00 /usr/sbin/ntpd -s
root 319 0.0 0.6 2996 1240 ? Ss 17:00 0:00 /usr/lib/systemd/systemd-logind
root 385 0.0 1.5 7076 2900 ? Ss 17:23 0:00 /usr/sbin/syslog-ng -F

起動するとこんな感じです。ひとまず pacman でパッケージをアップデートしてあげたら、あとは好みに環境構築すればいいです。 うまく動かなくなったら、また SD カードを作り直せばいいですよね。

[root@alarmpi ~]# cat /proc/meminfo
MemTotal: 446888 kB
MemFree: 397924 kB
Buffers: 9300 kB
Cached: 20624 kB
SwapCached: 0 kB
Active: 16772 kB
Inactive: 17684 kB
Active(anon): 4564 kB
Inactive(anon): 168 kB
Active(file): 12208 kB
Inactive(file): 17516 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1048572 kB
SwapFree: 1048572 kB
Dirty: 12 kB
Writeback: 0 kB
AnonPages: 4528 kB
Mapped: 7264 kB
Shmem: 208 kB
Slab: 11436 kB
SReclaimable: 8652 kB
SUnreclaim: 2784 kB
KernelStack: 384 kB
PageTables: 360 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1272016 kB
Committed_AS: 12868 kB
VmallocTotal: 188416 kB
VmallocUsed: 1004 kB
VmallocChunk: 186592 kB
[root@alarmpi ~]# cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 697.95
Features : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : BCM2708
Revision : 000f
Serial : xxxxxxxxxxxxxxxx

とても手軽です。類似のものとしては Openblocks がありますが、桁一つ違うのは大きいですね。 Openblocks が一般的なサーバ機器で、RaspberryPi がパソコンくらいのイメージでしょうか。

参考