東芝の無線LAN機能付きSDHCメモリーカードFlashAir™をRaspberry Piの起動ディスクとして使ってみた。
http://www.raspberrypi.org/download/で配布されているブートメディアのRaw Image(2014-01-07-wheezy-raspbian.zip)を、FlashAirにddコマンドで書き込み、Raspberry Piに差し込んで電源を入れると普通に起動する。一般的なSDカードを使った場合と何ら変わりない。
Raspberry Piの起動イメージファイルを書き込んだFlashAirは再設定してやる必要があるので、Raspberry Piが起動した後、FlashAirをフォーマットした際に行う設定手順を実行する。(参考:「FlashAir™の初期化と設定」)
FlashAirの初期設定が終わったら、MacからFlashAirアクセスポイントにWi-Fi接続し、Webブラウザで http://flashair.local/ を開くと、RasPiの/bootディレクトリーの内容が表示される。
Raspberry Pi、FlashAirともに正常に動作することを確認したら、一旦、Raspberry Piをシャットダウンする。FlashAirを抜き取って、MacのSDカードリーダー/ライターに差し込み、設定ファイルを編集する(そのままRasPi側で編集してもいいけど、設定変更を認識させるには、どっちにしろ電源を入れ直す必要がある)。
- アップロードを許可する
-
無線LANを介して/bootの内容を書き換えられるようにするにはFlashAirへのアップロードを許可する必要がある。設定方法は、FlashAirデベロッパーズのWebサイトで解説されている。https://www.flashair-developers.com/ja/documents/api/uploadcgi/
好みのテキストエディタを使って、MacにマウントしたFlashAirの設定ファイル /Volumes/boot/SD_WLAN/CONFIG を開いて、次の2行を追加する。
APPAUTOTIME=0 UPLOAD=1
編集し終わったらRaspberry Piに戻して、電源を入れ、Macから http://flashair.local/update.cgi にアクセスすると、ファイルをアップロードするインターフェースが表示される(FlashAir APIを使ってもよい)。これで、Raspberry Piの /boot ディレクトリーをWeb UIで読み書きできるようになった。
で、何が便利かというとカーネルいじって遊んでたり config.txt や cmdline.txt の設定を間違えてRaspberry Piが起動しなくなったとき、単なるSDカードだと、いちいちカードを抜き取って、Macに差し替え、設定ファイルを修正してRasPiに戻すという作業が必要になるが、FlashAirならWi-Fi接続で修正したファイルをアップロードできるのだ。
Raspberry Piを使って、スタンドアローンで稼動するキオスク端末みたいなものを作成するとき、テストやメンテナンスにFlashAirを利用するといった使い道も考えられる。
- 空セクター数の取得
-
ddコマンドでイメージを書き込んだ直後の、FlashAirのパーティションの状態を見てみると、先頭の小さなFAT32領域と、それに続いてLinux領域の2つが存在するのが分かる。
Mac$ diskutil list /dev/disk2 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *15.7 GB disk2 1: Windows_FAT_32 boot 58.7 MB disk2s1 2: Linux 2.9 GB disk2s2
RasPi上でファイルシステムの情報を見ると次のようになっている。FlashAirのWeb UIから見える領域は /boot にマウントされている。
RPi$ df -h Filesystem Size Used Avail Use% Mounted on rootfs 2.6G 2.0G 469M 82% / /dev/root 2.6G 2.0G 469M 82% / devtmpfs 84M 0 84M 0% /dev tmpfs 19M 204K 19M 2% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 37M 0 37M 0% /run/shm /dev/mmcblk0p1 56M 19M 38M 34% /boot
さてここで、FlashAir APIの「空セクター数の取得」を実行してみると、
Mac$ curl http://flashair.local/command.cgi?op=140 76096/114576,512
114576x512=58662912(55.94MB)となっていることから、先頭のFAT32パーティションのサイズを返しているようだ。
ddコマンドで書き込んだままの標準のパーティション構成だと、ちょっとFAT32部分のサイズが小さいが、ちょっと工夫してカスタマイズしてやれば、あんなことや、こんなこともできそうで、いろいろと妄想が膨らむ、楽しい組み合わせ FlashAir + Raspberry Pi である。
- 妄想と現実
-
このように、公式に配布されているRaspbian起動用SDカードの標準のパーティション構成だと、FAT32とext4の2つの領域に分かれていて、Linux(ext4)のパーティションはFlashAirからは見えない。
カスタマイズ方法の1つとして、ルートファイルシステムをディスクイメージファイルにし、FAT32パーティション内に置いて、それをループバックデバイスにしてマウントしてやれば、カード全体がFAT32パーティション1つだけ(買ってきたそのままのFlashAir)であっても、Raspberry Piを起動できる。
これなら、FlashAirからLinuxシステムの入れ替えさえも可能となるではないか! と、思ったのだが……
どうもFlashAirアップロードの速度は、ダウンロードに比べるとずいぶん遅く、巨大なイメージファイルの転送には向いていないようだ。
まあ、よく考えると、IEEE802.11b/g/nだと、元々そんなに速いわけじゃないから、うまく思惑通りに動作したとしても、たいそう時間がかかるので、そんなに便利とも言えないだろう。う〜ん、残念。
ともあれ、kernelとかinitrdなんかのカスタマイズ作業をやってるときにはFlashAirが便利なことに間違いはない。
0 件のコメント:
コメントを投稿