2012/04/24追記: 「Flucardで出来ることのまとめ 2012/04/23版」とか「FlucardにFlashAir互換機能を搭載した 2012/04/19版」とか情報更新がありますので、以下を読んだあと、参照してみてください。
—————————————————-
最近、東芝FlashAirというのが評判です。
Eye-Fiと比較すると使いにくい、というような評判が大きかったのですが、正しい使い方、というものが判明してきたので、評判が上がってきたという感じです。
簡単にいうと
・Eye-Fi = 撮影したものを全部転送する思想
・FlashAir = 撮影したものから必要なものだけを取り出す思想
といったところです。
|
さて、実はFlashAirと同系統でFlucard Proというものがあります。
こちらはもう発売してから1年たつ先行品です。
日本ではプラネックス取り扱いで販売されています。(2012/10/24追記: 現在はプラネックスでの取り扱いが終了し、Trek2000の直販となっています)
Amazon Trek2000ストア | |||
楽天 Trek2000ストア | |||
|
|
この製品、Webで評判を探すと不安定という話ばかりです。
なので、敬遠していたのですが、よくよく調べてみると先月(2012年3月)にfirmwareがアップデートしていました。
firmware.zipをダウンロードして中身を見てみると非常に興味深いことが・・・
$ unzip -l flucardpro-3.65_100R-firmware.zip Archive: flucardpro-3.65_100R-firmware.zip Length Date Time Name -------- ---- ---- ---- 0 03-06-12 16:16 firmware/ 199 10-19-11 15:14 firmware/autorun.sh 2794656 12-31-11 23:15 firmware/Image 2731040 02-01-12 15:02 firmware/image3 2517541 03-06-12 15:36 firmware/initramfs.gz 2527932 03-06-12 15:33 firmware/initramfs3.gz 109400 10-15-11 23:34 firmware/program.bin 120 03-06-12 15:35 firmware/version.txt 115 03-06-12 15:32 firmware/version3.txt -------- ------- 10681003 9 files $
ファイルの名付け方法が非常にLinuxっぽい。
ためしにautorun.shを開いてみると・・・
$ cat autorun.sh #!/bin/sh buzzer -t 2 cp /mnt/sd/version.txt /mnt/mtd/ cp /mnt/sd/version3.txt /mnt/mtd/ sync sleep 1 rm /mnt/sd/version.txt rm /mnt/sd/version3.txt rm /mnt/sd/autorun.sh sync sleep 1 buzzer -t 5 $
間違い無くUNIX系統であることは確か。
「initramfs.gz」も非常にLinuxっぽい名前であるものの、そのままでは開けない。
$ file initramfs.gz initramfs.gz: data $ gzip -d initramfs.gz gzip: initramfs.gz: not in gzip format $
中身を確認すると先頭の8bytesに何らかしらのヘッダが付加されており、それ以降は通常のgzip形式である模様。
取り除き方はいろいろありますが、とりあえず標準コマンドのみでやってみた。
$ ls -l initramfs* -rw-rw-rw- 1 root root 2517541 3月 6 15:36 initramfs.gz -rw-rw-rw- 1 root root 2527932 3月 6 15:33 initramfs3.gz $ expr 2517541 - 8 2517533 $ cat initramfs.gz |tail -c 2517533 > initramfs-tmp.gz $ ls -l initramfs* -rw-r--r-- 1 root root 2517533 4月 5 13:22 initramfs-tmp.gz -rw-rw-rw- 1 root root 2517541 3月 6 15:36 initramfs.gz -rw-rw-rw- 1 root root 2527932 3月 6 15:33 initramfs3.gz $ file initramfs-tmp.gz initramfs-tmp.gz: gzip compressed data, from Unix, last modified: Tue Mar 6 16:29:52 2012 $ gzip -d initramfs-tmp.gz $ ls -l initramfs* -rw-r--r-- 1 root root 4515328 4月 5 13:22 initramfs-tmp -rw-rw-rw- 1 root root 2517541 3月 6 15:36 initramfs.gz -rw-rw-rw- 1 root root 2527932 3月 6 15:33 initramfs3.gz $ file initramfs-tmp initramfs-tmp: ASCII cpio archive (SVR4 with no CRC) $
cpioのファイルができたので、普通に展開。
$ mkdir initramfs $ cd initramfs $ cat ../initramfs-tmp|cpio -ivd . dev dev/ttyS1 dev/mmcblk0p1 dev/tty1 dev/mmc2 dev/mmc1 dev/gpio_i2c dev/mtdblock1 dev/random dev/null dev/nvram dev/mmcblk0p2 dev/spidev0 dev/mmc dev/pty dev/pty/m0 dev/pty/m1 dev/mmcblk0 dev/mtdblock0 dev/ka_sdsw dev/sda dev/spidev1 dev/spi0 dev/ka-pwm1 dev/root dev/sdb dev/ram0 dev/console dev/tty0 dev/mtd0 dev/zero dev/urandom dev/ttyS0 dev/loop dev/loop/2 dev/loop/0 dev/loop/3 dev/loop/1 dev/sda1 dev/tty dev/ram1 dev/mtd1 dev/fb0 dev/ttyS dev/ram dev/ramdisk dev/spidev0.0 dev/spi0.0 dev/ka-pwm dev/tty2 dev/ptmx dev/pts dev/pts/5 dev/pts/2 dev/pts/0 dev/pts/3 dev/pts/4 dev/pts/1 lost+found init tmp home home/config.trek bin bin/dcraw bin/logpage bin/iwevent bin/iwpriv bin/production_test bin/input bin/lsdir bin/thumbNail bin/umount bin/wifi_setup bin/output bin/rev bin/reformime bin/ip bin/mlanconfig bin/thumbRaw bin/receiver bin/mv bin/iptunnel bin/dnsdomainname bin/iostat bin/ipcalc bin/date bin/http_upload bin/connect_router bin/powertop bin/ln bin/settings_and_review bin/printenv bin/cat bin/hello_trek bin/upload bin/ash bin/status bin/macaddr bin/ls bin/get_config bin/fsync bin/mlanevent bin/playNote bin/hostname bin/mount bin/rmdir bin/ionice bin/upload_sd bin/dmesg bin/iplink bin/motion_app bin/cp bin/motion_cgi bin/busybox bin/lzop bin/ping bin/mlan2040coex bin/photo bin/vi bin/iwconfig bin/startup bin/set_config bin/kill bin/iprule bin/photolist bin/pipe_progress bin/ipaddr bin/get_uap_ssid bin/makemime bin/scriptreplay bin/htmlcgi bin/more bin/iwlist bin/sender bin/download bin/df bin/thumb_video bin/sleep bin/buzzer bin/pwd bin/replace_file_content bin/upload_to_sd bin/mpstat bin/echo bin/localization bin/base64 bin/iproute bin/datetime bin/video bin/rename bin/mknod bin/chmod bin/mkdir bin/run-parts bin/power_up_app bin/preview bin/rm bin/ifrename bin/folderOpt bin/flu_app bin/download_multi bin/sync bin/dd bin/wpa_supplicant bin/sh bin/serverUpload bin/usleep bin/netstat bin/touch bin/pwm bin/ps bin/uaputl bin/connect_uap_sender var var/tmp var/log var/var var/lib var/lib/misc var/lib/misc/udhcpd.lease var/lock var/run lib lib/gpio_i2c.ko lib/ka2000-sdio.ko lib/firmware lib/firmware/sd8787_uapsta.bin lib/ka2000-sdhc.ko lib/sd8xxx.ko lib/mlan.ko sys mnt mnt/sd mnt/mtd www www/sd www/welcome.html www/mtd www/script www/script/login.js www/script/expand-collapse.js www/script/input.js www/script/control.js www/script/menu.js www/download.jar www/image www/image/browse.jpg www/image/photos-chin.jpg www/image/other-chin.jpg www/image/save-jp.jpg www/image/help.jpg www/image/photos-jp_ori.jpg www/image/download-grey-jp.jpg www/image/download-grey.jpg www/image/photos.jpg www/image/download-grey-chin.jpg www/image/download-jp.jpg www/image/other.jpg www/image/select-all-albums.jpg www/image/select-all-chin.jpg www/image/save-chin.jpg www/image/clear-all-albums-chin.jpg www/image/videos-chin.jpg www/image/brought-to-you-by-trek.jpg www/image/photos_ori.jpg www/image/save.jpg www/image/flucard-color1.jpg www/image/quick-setup-jp.jpg www/image/clear-all-albums.jpg www/image/status-jp.jpg www/image/select-all-albums-chin.jpg www/image/folder.jpg www/image/logo.jpg www/image/logo-chin.jpg www/image/select-all-albums-jp.jpg www/image/upload-chin.jpg www/image/back-jp.jpg www/image/upload-grey-chin.jpg www/image/status.jpg www/image/photos-jp.jpg www/image/status-chin.jpg www/image/flucard-color.jpg www/image/videos.jpg www/image/select-all.jpg www/image/next-chin.jpg www/image/clear-all-albums-jp.jpg www/image/clear-all-jp.jpg www/image/next-jp.jpg www/image/back.jpg www/image/clear-all.jpg www/image/blank.jpg www/image/quick-setup-chin.jpg www/image/quick-setup.jpg www/image/select-all-jp.jpg www/image/upload-grey.jpg www/image/next.jpg www/image/download.jpg www/image/back-chin.jpg www/image/upload-jp.jpg www/image/videos-jp.jpg www/image/upload-grey-jp.jpg www/image/upload.jpg www/image/file.jpg www/image/clear-all-chin.jpg www/image/help-page.jpg www/image/other-jp.jpg www/css www/css/css_main.css www/index.html www/page www/page/upload_sd.cfg www/page/OkPage-chin.html www/page/upload.htm www/page/BadPage.html www/page/upload.cfg www/page/login-jp.htm www/page/OkPage.html www/page/quick_setup.htm www/page/login-chin.htm www/page/blank.htm www/page/OkPage-jp.html www/page/BadPage-jp.html www/page/upload.log www/page/login.htm www/page/BadPage-chin.html www/page/top.htm www/page/menu.htm www/page/upload_sd.htm www/cgi-bin www/cgi-bin/logpage www/cgi-bin/input www/cgi-bin/lsdir www/cgi-bin/thumbNail www/cgi-bin/output www/cgi-bin/thumbRaw www/cgi-bin/upload www/cgi-bin/status www/cgi-bin/playNote www/cgi-bin/upload_sd www/cgi-bin/motion_cgi www/cgi-bin/photo www/cgi-bin/photolist www/cgi-bin/htmlcgi www/cgi-bin/download www/cgi-bin/thumb_video www/cgi-bin/upload_to_sd www/cgi-bin/datetime www/cgi-bin/video www/cgi-bin/rename www/cgi-bin/preview www/cgi-bin/folderOpt www/cgi-bin/download_multi www/downloadChin.jar www/downloadJp.jar usr usr/bin usr/bin/sha256sum usr/bin/cmp usr/bin/dirname usr/bin/md5sum usr/bin/microcom usr/bin/lzopcat usr/bin/arping usr/bin/w3 usr/bin/seq usr/bin/rcS7 usr/bin/fgconsole usr/bin/rcS4 usr/bin/tftpd usr/bin/telnet usr/bin/env usr/bin/volname usr/bin/mount_sd usr/bin/du usr/bin/wall usr/bin/uap usr/bin/beep usr/bin/w5 usr/bin/smemcap usr/bin/lsusb usr/bin/timeout usr/bin/w2 usr/bin/udpsvd usr/bin/xzcat usr/bin/which usr/bin/pmap usr/bin/lspci usr/bin/hexdump usr/bin/xz usr/bin/id usr/bin/ifplugd usr/bin/rcS2 usr/bin/dumpleases usr/bin/pscan usr/bin/refresh_sd usr/bin/printf usr/bin/ftpget usr/bin/nslookup usr/bin/tcpsvd usr/bin/unlzop usr/bin/flock usr/bin/wget usr/bin/clear usr/bin/rcS6 usr/bin/w4 usr/bin/rcS1 usr/bin/renice usr/bin/check_sta.sh usr/bin/uap_sender usr/bin/rcS5 usr/bin/pkill usr/bin/mtdf usr/bin/w2_receiver usr/bin/copy_control_images_to_nor.sh usr/bin/sha512sum usr/bin/w1 usr/bin/w3es usr/bin/showkey usr/bin/mtdm usr/bin/.copy_control_images_to_nor.sh.swp usr/bin/ftpput usr/bin/tftp usr/bin/nc usr/bin/softlink usr/bin/unxz usr/bin/top usr/bin/autorun.sh usr/bin/rcS3 usr/bin/restore_all_control_images.sh usr/bin/readahead usr/bin/uptime usr/bin/w0 usr/bin/test_wireless1.sh usr/bin/test_wireless2.sh usr/bin/mt usr/sbin usr/sbin/setfont usr/sbin/nbd-client usr/sbin/dnsd usr/sbin/flash_lock usr/sbin/ntpd usr/sbin/udhcpd usr/sbin/httpd usr/sbin/flash_unlock usr/sbin/inetd usr/sbin/ftpd usr/sbin/telnetd usr/sbin/flashcp usr/sbin/flash_eraseall usr/sbin/fakeidentd usr/sbin/popmaildir usr/sbin/dhcprelay usr/sbin/rdev root sbin sbin/tunctl sbin/arp sbin/ifdown sbin/bootchartd sbin/fdisk sbin/mdev sbin/udhcpc sbin/vconfig sbin/init sbin/blockdev sbin/route sbin/mkdosfs sbin/halt sbin/acpid sbin/sysctl sbin/zcip sbin/ifconfig sbin/poweroff sbin/devmem sbin/blkid sbin/mkfs.ext2 sbin/insmod sbin/setconsole sbin/modinfo sbin/modprobe sbin/fsck sbin/reboot sbin/depmod sbin/rmmod sbin/mke2fs sbin/ifup sbin/ifenslave sbin/mkfs.vfat sbin/nameif sbin/start-stop-daemon sbin/lsmod proc etc etc/uaputl_sender.conf etc/udhcpd.conf etc/inittab etc/uaputl.conf etc/dnsd.conf etc/dhcp.script etc/wpa.conf etc/init.d etc/init.d/rcS.e etc/init.d/rcS etc/init.d/rcS.p etc/udhcpd_uap.conf etc/fstab etc/wep.conf linuxrc 8819 blocks $
まぁ、良くあるinitramfsの中身、という感じ。
そして、wpa_supplicantとかbusyboxとか、ある意味おなじみのものがずらずらと・・・
/etc/inittabを見ると、/etc/init.d/rcS を起動している。
rcSからではいろいろ処理をやっているが、流れとしては以下の様な感じ。
・/usr/sbin/rcS1(=telnetd)を呼び出している。
・/usr/sbin/rcS2(=httpd)を呼び出している。
・SDカード上(=Flucard上)のautorun.shを実行。
・WiFiの設定をする
ただし、2012/03時点でのfirmwareでは、/usr/sbin/rcS1内のteletd起動はコメントアウトされているので、標準ではtelnetdが起動していない。
さて・・・ここまでの調査結果で言えることは・・・
・アップデータ自体に細工をすることは、おそらく可能
・initramfsを変更することでシステムファイルを置き換えることができる
・initramfsの書き換えに失敗して起動しなくなった場合の復旧方法は不明
・autorun.shは起動時に実行される。
・autorun.shは意図的に削除しない限り残るので毎回実行される
・ソフトを追加したいのであればautorun.shを使って処理をさせるのが一番
といったところか。
無線LANの接続性問題が出てきたりしたら、以下のようなバイナリを出力させれば置き換えも可能そうなので、なんとか対処しようがあるかなぁと楽観視。
$ file busybox wpa_supplicant busybox: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped wpa_supplicant: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped $
そんなわけで、とりあえず、発注してみました。
届くのが楽しみです。
Amazon Trek2000ストア | |||
楽天 Trek2000ストア | |||
|
|
こんにちわ!このページをfacebookで知り、昔組み込みLinuxで遊んだことを思い出して懐かしく、思わずflu-card買っちゃいました!
すでにお気づきかもしれませんが、initramfs.gzなどのヘッダですが、いろんなバージョンを見ていて、その書式がわかりました(多分、、、)
先頭4バイト:4B 41 47 5A ”KAGZ”固定
後続4バイト:追加ヘッダ8バイトを削除した元ファイルのサイズ
これが正しいとなると、autorun.shで差し替えを行っているファイルを元のファイルに差し込んでgzipをかけ、そのサイズと”KAGZ”を追加すると新しいシステムが完成することになりそうです。
もう少し調べてみます。
ありゃ、チェックサムでも入ってるのかな、と思ってたんですが、サイズだけっぽいですか
ちょっと予想外だったなぁ
で、直接書き換えなんですが、うまく、起動してこなかった場合のリカバリ方策が
思いつかなかったので、あまり調べてないんですわ
私も最初はチェックサムかMD5かなと思ったのですが、似たサイズ、かつ4バイト目が今のところ”00″になっているのでピンときました。
確かに!リカバリ策は難しいですね。PC linuxからroot file systemがmountできると元に戻せそうな気もしますが、ちょっと危険な匂いもしますね。
KeyASICのHPによればJTAG ICEもつながるとなっているので、環境があればbootメカニズムを解明できるかもしれませんが、、、、
意味なし追加推定:KAGZは”Key ASIC gzip”ではないかと思っています。