Chumby の中を ssh login して覗いてみる
Posted by yoosee on Gadget at 2008-05-09 00:30 JST1 Chumby の中を ssh login して覗いてみる
繋ぎ方は Chumby日本語Wikiの Chumby へ ssh で接続する方法を参照。中身は普通に小型機器向けにシェイプしたLinuxなので、リナザウ辺りを触ったことがある人ならさほど新鮮味のある話ではないですね。そんなわけでさっそくログイン。BusyBox v1.6.1 (2008-03-25 16:42:01 PDT) Built-in shell (ash) Enter 'help' for a list of built-in commands. chumby:~#組み込みでよく使われている BusyBox が使われている。
chumby:~# uname -a Linux (none) 2.6.16-csb #1 Tue Mar 25 16:41:23 PDT 2008 armv5tejl unknownlinux kernel は 2.6.16 が入っているようだ。Chumbyのハードウェアスペックは公開されている通りだが、lsmod すると意外とchumby独自のドライバが入っている。
chumby:~# lsmod Module Size Used by Not tainted rt73 428896 0 chumby_accel 12048 2 chumby_timer 4800 2 usbhid 37828 0 snd_usb_audio 69152 0 snd_hwdep 7524 1 snd_usb_audio snd_usb_lib 13888 1 snd_usb_audio snd_seq_midi 6496 0 snd_rawmidi 20512 2 snd_usb_lib,snd_seq_midi chumby_udma 6968 0 chumby_sense1 7004 2 chumby_tsc2100 75368 0source code は後述の一部ファイルを除き、GPLv2 で公開されている。
2 Chumby のCPU
CPU は ARM9 の FreeScale MX21 350MHz が搭載されている。chumby:~# cat /proc/cpuinfo Processor : ARM926EJ-Sid(wb) rev 4 (v5l) BogoMIPS : 174.89 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 4 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 16384 I assoc : 4 I line length : 32 I sets : 128 D size : 16384 D assoc : 4 D line length : 32 D sets : 128 Hardware : Freescale MX21ADS Revision : 0000 Serial : 0000000000000000大したことをしていないとは言え、よくこれで動くなという感じのスペックではある。実際、Chumby Widget 作成時のパフォーマンス考慮点といったドキュメントもあるというくらいにはリソースはシビアなわけだが。
3 FlashROM と RAM
Chumby には 64MB の NAND Flash ROM, 64MB SDRAM が搭載されている。chumby:/# df Filesystem Size Used Available Use% Mounted on /dev/mtdblock5 34.6M 34.6M 0 100% / none 30.2M 4.0k 30.2M 0% /dev none 32.0M 488.0k 31.5M 1% /tmp none 32.0M 64.0k 31.9M 0% /var none 32.0M 0 32.0M 0% /mnt /dev/mtdblock1 2.0M 108.0k 1.9M 5% /psp内蔵FlashROM上の / は cramfs が read-only mount されているため、ここをいじるには cramfs を取り出して変更して remount する必要がある。そんな必要は殆ど無いだろうが。設定ファイル類は /psp の下。自作のファイル等を置く場合は、基本的にUSBドライブを使うことになる。なお /tmp, /dev, /mnt は tmpfs, /sys, /proc, /dev/pts はそれぞれ sysfs, proc, devpts で mount されている。
chumby:~# free total used free shared buffers Mem: 61928 48416 13512 0 7660 Swap: 0 0 0 Total: 61928 48416 13512RAMは 64MB しかない。
4 Chumby のプロセス
プロセスを見てみると、VSZ では chumhowld と flashplayer が大きい。chumby:~# ps www PID Uid VSZ Stat Command 1 root 1648 SW init 2 root SWN [ksoftirqd/0] 3 root SW [watchdog/0] 4 root SW< [events/0] 5 root SW< [khelper] 6 root SW< [kthread] 14 root SW< [kblockd/0] 17 root SW< [khubd] 59 root SW [pdflush] 60 root SW [pdflush] 62 root SW< [aio/0] 61 root SW [kswapd0] 679 root SW [mtdblockd] 680 root SW [ftld] 681 root SW [nftld] 975 root SWN [jffs2_gcd_mtd1] 983 root 1848 SW /sbin/syslogd -C200 991 root 1588 SW< /sbin/udevd --daemon 1002 root 3164 SW mountmon --daemon 1343 root 1512 SWN headphone_mgr 1604 root DW [rt73] 1605 root DW [rt73] 1755 root 1648 SW /usr/sbin/httpd -h /www 1820 root 20808 SW chumbhowld 1832 root 4136 SW /usr/sbin/crond -c /etc/cron/crontabs 1911 root SWN [jffs2_gcd_mtd6] 1984 root 5516 SW /usr/sbin/btplayd 1994 root 1652 SW /bin/sh /usr/chumby/scripts/start_control_panel 1999 root 1648 SW init 2073 root 26644 SW /usr/bin/chumbyflashplayer.x -i /tmp/controlpanel.swf 2074 root 1648 SW sh -c chumbpipe /tmp/.fpcmdsend /tmp/.fpcmdrecv 2075 root 2972 SW chumbpipe /tmp/.fpcmdsend /tmp/.fpcmdrecv 3021 root 1652 SW udhcpc -t 5 -n -p /var/run/udhcpc.rausb0.pid -i rausb0 3285 root 2876 SW /sbin/sshd 9612 root 5508 SW sshd: root@pts/0 9616 root 4144 SW -sh 15763 root 5240 SW /usr/sbin/btplayd 25400 root 4140 RW ps wwwChumby の widget (FlashLite3) を再生しているのは /usr/bin/chumbyflashplayer.x と言うプログラムのようだ。これ自体に Verdana が埋め込みになっているように見えるので、swfにフォントを埋め込む方法ではなく本体側を日本語化するならこの部分をいじるひつようがありそうに思うのだが、残念ながら他のものと違い、chumbyflashplayer.x はソースの公開もされていないし再配付も許可されていない。Adobe とのライセンスの都合だろうと思うが、非常に残念。
その他だと chumbhowld, httpd, crond, syslogd, sshd(有効にした場合), btplaydなどが動作している。ハードウェア系は udev と mountmon が動いている。
5 LISTEN しているポートとネットワーク
LISTEN している port を見てみる。chumby:~# netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.localdom:2148 *:* LISTEN tcp 0 0 localhost.localdom:2094 *:* LISTEN tcp 0 0 *:http *:* LISTEN tcp 0 0 *:8082 *:* LISTEN tcp 0 0 *:ssh *:* LISTEN80(http) へは普通にブラウザでアクセスすると chumby のロゴと Wireless のステータスが表示される。8082 は chumbhowld が listen しているようだ。同daemonは zeroconf/Bonjour のために動作しており、http で同ポートにアクセスすると幾つかの identify 情報が xml で出力される。現時点で有効に使われているのかよく分からないのだが、今後の拡張用途だろうか。
chumby から外向けでは
tcp 0 0 192.168.0.33:2289 69.43.206.68:http TIME_WAITchumby.com のサーバへの http アクセスがほぼ常時張られていて、My Chumby で設定した channel 情報等を取得するようになっている。
ワイヤレスは普通に iwconfig で。
chumby:~# iwconfig rausb0 RT73 WLAN ESSID:"XXXXXXXXXXXXXXXXXXXX" Mode:Managed Frequency=2.442 GHz Access Point: 00:0D:02:XX:YY:ZZ Bit Rate=9 Mb/s RTS thr:off Fragment thr:off Encryption key:.......................................... Link Quality=78/100 Signal level:-48 dBm Noise level:-79 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0無線LANデバイスはUSB接続されている。日本で使う場合には日本で発売されているUSB接続の無線LANデバイスを使うのが電波法的には良さそう。ドライバの設定をすれば100BaseTX-USBアダプタも使えるものがあるらしい。
6 主なディレクトリ構造
ディレクトリ構成を見てみるとchumby:~# ls -F / LICENSES/ dev/ lib/ mnt/ root/ tmp/ www/ bin/ drivers/ linuxrc@ proc/ sbin/ usr/ bitmap/ etc/ lock@ psp/ sys/ var//proc や /sys は普通に mount されていてアクセスも可能。Chumby本体用の設定は先述の通り、主に /psp の下にあるようだ。リソース関係は /usr/chumby の下などにある。ストレージの都合だろうが、/var/log は空っぽ。ついでに init.d/ の下を覗いてみると
chumby:~# ls /etc/init.d/ chumbhowld.sh chumbradiod.sh inetradio.sh zeroconf.sh chumbipodd.sh daemon-utils.sh rcS chumbradio.sh hotplug sshd.sh必ずしも全て boot 時に起動するわけではなく、ControlPanel から activate されるものも結構あるようだ。起動処理は rcS に記載されているので、興味がある人は一度読んでみるといいだろう。