HWなしでgTV hack 04: recovery.imgの展開


recovery.imgの解析。
頭に何かついているので、まずそれを切らないと。
boot.imgがSquashfsなので、recovery.imgも同じである可能性が高い。
頭を探す。

root@debian:~/gtv# hexdump -C system/boot/recovery.img | grep hsqs
001e7d80  68 73 71 73 af 00 00 00  00 00 00 00 00 00 00 00  |hsqs............|

あった。
計算計算。

root@debian:~/gtv# python
>>> int("001e7d80", 16)
1998208
>>> 1998208/8
249776
>>> 

取り出す。

root@debian:~/gtv# dd if=system/boot/recovery.img of=./recovery_squashfs.img bs=8 skip=249776
378880+0 records in
378880+0 records out
3031040 bytes (3.0 MB) copied, 0.61964 s, 4.9 MB/s

root@debian:~/gtv# file recovery_squashfs.img 
recovery_squashfs.img: Squashfs filesystem, little endian, version 3.1, 3028425 bytes, 175 inodes, blocksize: 131072 bytes, created: Thu Dec 16 10:24:48 2010

それらしいのがとれた。


バラす。

root@debian:~/gtv# mkdir -p temp/reco
root@debian:~/gtv# cp recovery_squashfs.img temp/reco/
root@debian:~/gtv# cd temp/reco/
root@debian:~/gtv/temp/reco# unsquashfs recovery_squashfs.img 
Parallel unsquashfs: Using 1 processor
158 inodes (197 blocks) to write

[===============================================================|] 197/197 100%
created 87 files
created 17 directories
created 70 symlinks
created 1 devices
created 0 fifos

こちらは、それほどでもない。

root@debian:~/gtv/temp/reco# cd squashfs-root/
root@debian:~/gtv/temp/reco/squashfs-root# find ./
./
./tmp
./res
./res/keys
./res/images
./res/images/icon_installing.png
./res/images/progress_bar_empty_right_round.png
./res/images/indeterminate3.png
./res/images/indeterminate2.png
./res/images/indeterminate5.png
./res/images/icon_crash_recovery.png
./res/images/progress_bar_left_round.png
./res/images/button_wipe_selected.png
./res/images/progress_bar_fill.png
./res/images/progress_bar_right_round.png
./res/images/indeterminate6.png
./res/images/button_reboot.png
./res/images/indeterminate4.png
./res/images/indeterminate1.png
./res/images/icon_firmware_install.png
./res/images/button_wipe.png
./res/images/icon_firmware_error.png
./res/images/progress_bar_empty.png
./res/images/progress_bar_empty_left_round.png
./res/images/button_reboot_selected.png
./res/images/icon_error.png
./etc
./etc/sda.sfdisk.cfg
./etc/mtab
./etc/platform_config
./etc/platform_config/ce4100
./etc/platform_config/ce4100/local_tweaks.hcfg
./etc/platform_config/ce4100/memory_layout_googletv_recovery.hcfg
./etc/platform_config/ce4100/platform_config.hcfg
./init.logitech_ka3.rc
./sys
./init.logitech_ka5.rc
./dev
./dev/console
./bin
./bin/sendevent
./bin/toolbox
./bin/iftop
./bin/lsmod
./bin/route
./bin/display_setup
./bin/platform_config_app
./bin/load_pd
./bin/printenv
./bin/insmod
./bin/gdl_server
./bin/recovery
./bin/renice
./bin/sync
./bin/stop
./bin/vmstat
./bin/mkdir
./bin/ls
./bin/date
./bin/dmesg
./bin/schedtop
./bin/top
./bin/flash_image
./bin/newfs_msdos
./bin/rmmod
./bin/umount
./bin/cat
./bin/sleep
./bin/hdmi_off
./bin/wipe
./bin/chmod
./bin/sh
./bin/cmp
./bin/id
./bin/ps
./bin/smd
./bin/ifconfig
./bin/log
./bin/getprop
./bin/netstat
./bin/mv
./bin/setconsole
./bin/getevent
./bin/rm
./bin/hd
./bin/chown
./bin/mount
./bin/pidof
./bin/notify
./bin/ioctl
./bin/dd
./bin/rmdir
./bin/setprop
./bin/df
./bin/ln
./bin/kill
./bin/watchprops
./bin/start
./bin/flash_tool
./init
./default.prop
./proc
./mnt
./system
./system/build.prop
./lib
./lib/libz.so.1
./lib/libcrypto.so.1.0.0
./lib/libz.so
./lib/libpthread.so.0
./lib/libstdc++.so
./lib/librt-2.7.so
./lib/libosal.so
./lib/libgcc_s.so
./lib/libpthread-2.7.so
./lib/libplatform_config.so
./lib/libcutils.so
./lib/libcrypt.so.1
./lib/libstdc++.so.6
./lib/modules
./lib/modules/idl_i2c.ko
./lib/modules/pal_linux.ko
./lib/modules/clock_control.ko
./lib/modules/sec_kernel.ko
./lib/modules/intel_ce_pm.ko
./lib/modules/platform_config.ko
./lib/modules/gdl_mm.ko
./lib/modules/osal_linux.ko
./lib/modules/sven_linux.ko
./lib/librt.so.1
./lib/libsec.so
./lib/libstdc++.so.6.0.8
./lib/libcrypt-2.7.so
./lib/libcrashhandler.so
./lib/libdl-2.7.so
./lib/libz.so.1.2.3
./lib/libgcc_s.so.1
./lib/libm-2.7.so
./lib/libsec_hdcp.so
./lib/libresolv-2.7.so
./lib/libm.so.6
./lib/libhdmi-hdcp.so
./lib/libflash_appdata.so
./lib/libcrypto.so
./lib/libpal.so
./lib/libsystem_utils.so
./lib/libgdl.so
./lib/libc.so.6
./lib/ld-2.7.so
./lib/ld-linux.so.2
./lib/libnand_config.so
./lib/libsven.so
./lib/liblog.so
./lib/libclock_control.so
./lib/pd_hdmi.so
./lib/libglibc_bridge.so
./lib/libcrypto.so.1.0.0a
./lib/libdl.so.2
./lib/libresolv.so.2
./lib/libc-2.7.so
./init.tatung4.rc
./init.logitech_ka4.rc
./sdcard
./sbin
./sbin/auto-recovery
./sbin/reboot
./sbin/fts
./sbin/init
./sbin/mkfs.ext3
./sbin/check_e2fs
./sbin/mke2fs
./sbin/e2fsck
./sbin/mkfs.ext2
./sbin/sfdisk
./init.rc

いい感じに揃ってきそうね。
やっぱ、CE4100カスタムなとこもあるのね...