ESP01 firmwareぶっこぬき
4ピンのソケットをUSBに変えるだけのちょっとした工作が... 何しろ大学を出て以来2年以上も電子工作から遠ざかっていたから「あるはずの工具/部品がないないない」ばっかりで時間を浪費してしまった.USBの口は確かに昔買ったやつが1個余ってたはずなんだが... しょうがないので余ってたケーブルを1本切断.細目のUEWを媒介に適当につないでLinux PCに刺すと認識した:
$ dmesg|tail -n 30 (略 [2173339.700061] usb 1-8: new high speed USB device using ehci_hcd and address 17 [2173339.832896] usb 1-8: New USB device found, idVendor=1234, idProduct=5678 [2173339.832905] usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [2173339.832911] usb 1-8: Product: Flash Disk [2173339.832916] usb 1-8: Manufacturer: Generic [2173339.832921] usb 1-8: SerialNumber: CCCB1102231412290411559308 [2173339.833989] scsi11 : usb-storage 1-8:1.0 [2173339.935214] usbcore: registered new interface driver usbtouchscreen [2173340.834428] scsi 11:0:0:0: Direct-Access Generic Flash Disk 5.00 PQ: 0 ANSI: 2 [2173340.836267] sd 11:0:0:0: Attached scsi generic sg2 type 0 [2173340.836940] sd 11:0:0:0: [sdd] 4505600 512-byte logical blocks: (2.30 GB/2.14 GiB) [2173340.837658] sd 11:0:0:0: [sdd] Write Protect is off [2173340.837670] sd 11:0:0:0: [sdd] Mode Sense: 0b 00 00 08 [2173340.838543] sd 11:0:0:0: [sdd] No Caching mode page present [2173340.838553] sd 11:0:0:0: [sdd] Assuming drive cache: write through [2173340.842166] sd 11:0:0:0: [sdd] No Caching mode page present [2173340.842175] sd 11:0:0:0: [sdd] Assuming drive cache: write through [2173340.847270] sdd: sdd1 sdd2 < sdd5 sdd6 sdd7 sdd8 > [2173340.851014] sd 11:0:0:0: [sdd] No Caching mode page present [2173340.851025] sd 11:0:0:0: [sdd] Assuming drive cache: write through [2173340.851034] sd 11:0:0:0: [sdd] Attached SCSI removable disk [2173341.392955] EXT3-fs: barriers not enabled [2173341.751394] kjournald starting. Commit interval 5 seconds [2173341.751443] EXT3-fs (sdd5): warning: checktime reached, running e2fsck is recommended [2173341.752225] EXT3-fs (sdd5): using internal journal [2173341.752234] EXT3-fs (sdd5): recovery complete [2173341.754300] EXT3-fs (sdd5): mounted filesystem with ordered data mode $ /sbin/blkid /dev/sda5: UUID="2c79ea0e-758f-45cf-8854-a43bfe0443b6" TYPE="swap" /dev/sda1: LABEL="zboxRoot" UUID="e9da30f8-1ce6-4dd2-a7f6-c7f133dc51dc" TYPE="ext3" /dev/sda6: LABEL="zboxHome" UUID="a3b5e1c8-df04-46cb-90ca-3890ccf22575" TYPE="ext3" SEC_TYPE="ext2" /dev/sdd1: SEC_TYPE="msdos" UUID="386D-43BB" TYPE="vfat" /dev/sdd5: UUID="f9cdfa5a-59b8-442b-b478-42fbcc3b1fb4" TYPE="ext3" /dev/sdd6: UUID="0941c78e-520b-4530-ad74-fd5b33781717" TYPE="ext3" /dev/sdd7: UUID="19524c2a-f81b-407f-8a36-eb1c9fdb46a4" TYPE="ext3" /dev/sdd8: UUID="386D-4475" TYPE="vfat" $ /sbin/sfdisk -l -uS /dev/sdd Disk /dev/sdd: 35758 cylinders, 2 heads, 63 sectors/track Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sdd1 63 64637 64575 83 Linux /dev/sdd2 64638 4505507 4440870 5 Extended /dev/sdd3 0 - 0 0 Empty /dev/sdd4 0 - 0 0 Empty /dev/sdd5 64701 783467 718767 83 Linux /dev/sdd6 783531 2049263 1265733 83 Linux /dev/sdd7 2049327 2254517 205191 83 Linux /dev/sdd8 2254581 4505507 2250927 83 Linux $ /sbin/fdisk -u 512 -l /dev/sdd Disk /dev/sdd: 2306 MB, 2306867200 bytes 2 heads, 63 sectors/track, 35758 cylinders, total 4505600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x003edbfa Device Boot Start End Blocks Id System /dev/sdd1 63 64637 32287+ 83 Linux /dev/sdd2 64638 4505507 2220435 5 Extended /dev/sdd5 64701 783467 359383+ 83 Linux /dev/sdd6 783531 2049263 632866+ 83 Linux /dev/sdd7 2049327 2254517 102595+ 83 Linux /dev/sdd8 2254581 4505507 1125463+ 83 Linux $ mount (略 /dev/sdd5 on /media/usb0 type ext3 (rw,noexec,nosuid,nodev,sync,noatime) /dev/sdd6 on /media/usb1 type ext3 (rw,noexec,nosuid,nodev,sync,noatime) /dev/sdd1 on /media/usb2 type vfat (rw,noexec,nosuid,nodev,sync,noatime,dmask=0000,fmask=0111) /dev/sdd8 on /media/usb3 type vfat (rw,noexec,nosuid,nodev,sync,noatime,dmask=0000,fmask=0111) $ ls /media/usb0 LocalDisk/ busybox/ data/ dev/ init* init.rc* lost+found/ sbin/ sqlite_stmt_journals/ system/ bin/ cache/ default.prop etc@ init.goldfish.rc* lib/ proc/ sdcard/ sys/ udisk/ $ ls /media/usb1 anr/ app/ app-private/ dalvik-cache/ data/ local/ lost+found/ misc/ property/ system/ tombstones/ wmtpref/ $ ls /media/usb2 animation.data ramdisk_for_restore.gz uzImage.bin $ ls /media/usb3 albumthumbs/ download/ ~peacock/ ~wmtmail/
マウントは usbmount が勝手にやってくれた.しかし思ったよりパーティション分けが多い.ARM版の,本物(主流?)のAndroid(-x86でない方)はこれが初めてなので勝手がつかめない.公式(?)イメージでも落として中を見比べるか.ESP01に入ってるのは1.6なはずで,コードネーム "Donut" なんだね.
- http://developer.android.com/sdk/android-1.6-highlights.html Android 1.6 Platform Highlights | Android Developers
sdd8
の中はAndroidアプリから見えるユーザ・データの保存領域として見覚えがある.sdd5
がOSで sdd6
がいわゆるAndroidアプリの領域かな? しかしDas U-Bootがブートするカーネルは sdd1/uzImage.bin
なの? うむむ.まぁARMにおけるブート・プロセスの勉強が主目的だからどんと来いだ.
とりあえず吸い出しておく:
# dd if=/dev/sdd of=/tmp/sdd.img bs=100b count=45056 45056+0 records in 45056+0 records out 2306867200 bytes (2.3 GB) copied, 117.241 s, 19.7 MB/s
と,吸い出し終わってどっかにアップロードしようかと思ったら,数時間使った間の私の個人的なユーザ情報(無線LANとか)が残ってしまったイメージであることに気づく.初期化するんだった.まぁせっかくだから一通りの解析が済んでAndroid 2.3 (Gingerbread) またはそれベースのCyanogenMod 7.0.3を入れるスキルが身に付く(もしくは私のESP01も文鎮になる)まで待たせてもらうか.
なお電子機器が「文鎮になった」というのは英語で "was bricked" と言うらしい.