れぐぽんおさらい

散々弄り倒したのはアプリケーションレイヤちゅうことで、改めてまっさらにしてみることに。

事前準備:/sdcard/prg/T01C_TO_SP_FY1.enc

1.recovery mode
2.factory data reset
3.auto reboot
4.power off
5.recovery mode
6.system update
7.sd downloader
8.auto reboot

android:2.2.2
baseband:5014.1906.11
kernel:2.6.32.9-rel ftml-android@ftml #1
build:FFR002


初歩の初歩

とりあえず叩き込め的。もやもやが晴れる。

http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html

full backup

full backup

パテ分かればcwmでのbackupは不要なんだけど分からないので。
cwmをrecoveryに焼かなくても良いのが素敵。
cwmのイメージを落として、
fastboot boot {cwm.img}
cwmが起動したら、backup and restore->backup


cwm終わらせて、再起動。
ねくさす繋ぐと、ルートにclockworkmodディレクトリが作成されているので階層掘ると、backup->yyyy-mm-dd hh.mm.ssなディレクトリがあるので丸ごと母艦に複写。
ディレクトリには、boot.imgとrecovery.img、system,data,cacheのアーカイブがバックアップされている。
個人的には、ねくさすのパテ構成が不明なので、どうやってパテ割り出しているのか興味ある。


fastboot oem unlock

fastboot oem unlock

カスタマイズしたければYou,Yesを押しちゃいなよって(曲解)

ちーん。
再起動すると、忠告通りdataリセットするのでユーザ設定から開始。
とりあえず、宿題終えるまでroot奪取しない。そもそも、root取りたいのってsystemをwマウントしたいだけという。

とりあえず、色々と


リカバリモードの入り方を改めて整理してみる。

l-04c
 Home + Vol- + Power

t-01c
 Camera + Vol+ + Power
 緑LEDが点灯したらPower離す

adb reboot recoveryを投入するのと同じ。
そいや、ねくさすはfastboot modeしか知らなかったので、ついでにadb reboot recoveryを投入してみる。

adb reboot recovery on sc-04d


















ひぃぃ。
なんちゅうのかな、recovery modeて、漠然とリカバリイメージをブートイメージに転写することが出来たり、リカバリイメージ自体を選択したイメージに置き換えたり出来るモードと思っていたのですが、それ思い込み(recovery modeの振る舞いてベンダ毎に違うし)。ちゅか、そもそも、systemパテは良いとして、bootパテとrecoveryパテに何が配置されているのかさえ調べたことないじゃんて。あー記憶を辿ると、recoveryパテて、recoveryするためのプログラムを配置しているな。と言うことは、recovery mode入るとrecoveryパテからbootするということか。にしても、recoveryパテとか端末毎に違うんだけど、これベンダ/デバイス毎に決めうちか?あと、recoveryプログラムが起動しても、adbdいないんだよね。そう考えると、recoveryパテのイメージさえ壊さなければブリックしないと考えて良いのかな。
なーんて。
はい、勉強し直し。
あと、fastbootて、三星固有と思っていたら違うのね。http://android-dls.com/wiki/index.php?title=Fastboot
G1デバイスて、グローバルなんとかっていうデバイスかなぁと思ったら、HTCにG1て製品あったのね。

ところで、
adb reboot bootloader
を投入してみたところ。

l-04c -> 通常起動
t-01c -> 通常起動
sc-04d -> fastboot mode

bootloaderのロックとかイミフって言っていた自分に何となく納得。

とりあえず、泥ブートの勉強もそうだけど、以下のコマンドの使い方を習得しておくべきかもな。adbをwifi接続する時にちょっと頑張ったくらいで、今まで基本的にadb shellだけで賄ってきたから。

---

fastbootコマンド

usage: fastboot [ <option> ] <command>

commands:
  update <filename>                        reflash device from update.zip
  flashall                                 flash boot + recovery + system
  flash <partition> [ <filename> ]         write a file to a flash partition
  erase <partition>                        erase a flash partition
  getvar <variable>                        display a bootloader variable
  boot <kernel> [ <ramdisk> ]              download and boot kernel
  flash:raw boot <kernel> [ <ramdisk> ]    create bootimage and flash it
  devices                                  list all connected devices
  continue                                 continue with autoboot
  reboot                                   reboot device normally
  reboot-bootloader                        reboot device into bootloader
  help                                     show this help message

options:
  -w                                       erase userdata and cache
  -s <serial number>                       specify device serial number
  -p <product>                             specify product name
  -c <cmdline>                             override kernel commandline
  -i <vendor id>                           specify a custom USB vendor id
  -b <base_addr>                           specify a custom kernel base addres
  -n <page size>                           specify the nand page size. default
2048

adbコマンド

Android Debug Bridge version 1.0.29

 -d                            - directs command to the only connected USB devic
e
                                 returns an error if more than one USB device is
 present.
 -e                            - directs command to the only running emulator.
                                 returns an error if more than one emulator is r
unning.
 -s <serial number>            - directs command to the USB device or emulator w
ith
                                 the given serial number. Overrides ANDROID_SERI
AL
                                 environment variable.
 -p <product name or path>     - simple product name like 'sooner', or
                                 a relative/absolute path to a product
                                 out directory like 'out/target/product/sooner'.

                                 If -p is not specified, the ANDROID_PRODUCT_OUT

                                 environment variable is used, which must
                                 be an absolute path.
 devices                       - list all connected devices
 connect <host>[:<port>]       - connect to a device via TCP/IP
                                 Port 5555 is used by default if no port number
is specified.
 disconnect [<host>[:<port>]]  - disconnect from a TCP/IP device.
                                 Port 5555 is used by default if no port number
is specified.
                                 Using this command with no additional arguments

                                 will disconnect from all connected TCP/IP devic
es.

device commands:
  adb push <local> <remote>    - copy file/dir to device
  adb pull <remote> [<local>]  - copy file/dir from device
  adb sync [ <directory> ]     - copy host->device only if changed
                                 (-l means list but don't copy)
                                 (see 'adb help all')
  adb shell                    - run remote shell interactively
  adb shell <command>          - run remote shell command
  adb emu <command>            - run emulator console command
  adb logcat [ <filter-spec> ] - View device log
  adb forward <local> <remote> - forward socket connections
                                 forward specs are one of:
                                   tcp:<port>
                                   localabstract:<unix domain socket name>
                                   localreserved:<unix domain socket name>
                                   localfilesystem:<unix domain socket name>
                                   dev:<character device name>
                                   jdwp:<process pid> (remote only)
  adb jdwp                     - list PIDs of processes hosting a JDWP transport

  adb install [-l] [-r] [-s] <file> - push this package file to the device and i
nstall it
                                 ('-l' means forward-lock the app)
                                 ('-r' means reinstall the app, keeping its data
)
                                 ('-s' means install on SD card instead of inter
nal storage)
  adb uninstall [-k] <package> - remove this app package from the device
                                 ('-k' means keep the data and cache directories
)
  adb bugreport                - return all information from the device
                                 that should be included in a bug report.

  adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosy
stem] [<packages...>]
                               - write an archive of the device's data to <file>
.
                                 If no -f option is supplied then the data is wr
itten
                                 to "backup.ab" in the current directory.
                                 (-apk|-noapk enable/disable backup of the .apks
 themselves
                                    in the archive; the default is noapk.)
                                 (-shared|-noshared enable/disable backup of the
 device's
                                    shared storage / SD card contents; the defau
lt is noshared.)
                                 (-all means to back up all installed applicatio
ns)
                                 (-system|-nosystem toggles whether -all automat
ically includes
                                    system applications; the default is to inclu
de system apps)
                                 (<packages...> is the list of applications to b
e backed up.  If
                                    the -all or -shared flags are passed, then t
he package
                                    list is optional.  Applications explicitly g
iven on the
                                    command line will be included even if -nosys
tem would
                                    ordinarily cause them to be omitted.)

  adb restore <file>           - restore device contents from the <file> backup
archive

  adb help                     - show this help message
  adb version                  - show version num

scripting:
  adb wait-for-device          - block until device is online
  adb start-server             - ensure that there is a server running
  adb kill-server              - kill the server if it is running
  adb get-state                - prints: offline | bootloader | device
  adb get-serialno             - prints: <serial-number>
  adb status-window            - continuously print device status for a specifie
d device
  adb remount                  - remounts the /system partition on the device re
ad-write
  adb reboot [bootloader|recovery] - reboots the device, optionally into the boo
tloader or recovery program
  adb reboot-bootloader        - reboots the device into the bootloader
  adb root                     - restarts the adbd daemon with root permissions
  adb usb                      - restarts the adbd daemon listening on USB
  adb tcpip <port>             - restarts the adbd daemon listening on TCP on th
e specified port
networking:
  adb ppp <tty> [parameters]   - Run PPP over USB.
 Note: you should not automatically start a PPP connection.
 <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
 [parameters] - Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ <directory> ]
  <localdir> can be interpreted in several ways:

  - If <directory> is not specified, both /system and /data partitions will be u
pdated.

  - If it is "system" or "data", only the corresponding partition
    is updated.

environmental variables:
  ADB_TRACE                    - Print debug information. A comma separated list
 of the following values
                                 1 or all, adb, sockets, packets, rwx, usb, sync
, sysdeps, transport, jdwp
  ANDROID_SERIAL               - The serial number to connect to. -s takes prior
ity over this if given.
  ANDROID_LOG_TAGS             - When used with the logcat option, only these de
bug tags are printed.

間仕切り

cat /proc/mtd
cat /proc/partitions
mount

t-01c

dev:    size   erasesize  name
mtd0: 00a00000 00020000 "boot"
mtd1: 15180000 00020000 "system"
mtd2: 06400000 00020000 "cache"
mtd3: 00a00000 00020000 "recovery"
mtd4: 1dfa0000 00020000 "userdata"
mtd5: 3a920000 00020000 ""

major minor  #blocks  name
  31        0      10240 mtdblock0
  31        1     345600 mtdblock1
  31        2     102400 mtdblock2
  31        3      10240 mtdblock3
  31        4     491136 mtdblock4
  31        5     959616 mtdblock5
 179        0   15622144 mmcblk0
 179        1   15618048 mmcblk0p1


rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
/dev/block/mtdblock1 /system yaffs2 ro,relatime 0 0
/dev/block/mtdblock4 /data yaffs2 rw,nosuid,nodev,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,u
id=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset
=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relat
ime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,ioch
arset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0


l-04c [cyanogenmod7.1.0]

dev:    size   erasesize  name
mtd0: 00440000 00020000 "boot"
mtd1: 0d200000 00020000 "system"
mtd2: 00500000 00020000 "recovery"
mtd3: 002c0000 00020000 "lgdrm"
mtd4: 00100000 00020000 "splash"
mtd5: 00100000 00020000 "FOTABIN"
mtd6: 00640000 00020000 "FOTA"
mtd7: 00040000 00020000 "misc"
mtd8: 04000000 00020000 "cache"
mtd9: 2b360000 00020000 "userdata"

sc-04d

dev:    size   erasesize  name
mtd0: 00100000 00001000 "w25q80"
これ、フラッシュデバイス名。どゆことか今のところ錯乱状態。



ねくさす

いきなりだけど、まずはadb接続せなとね。
USBデバッグON
MTP->自動検索->SAMSUNG Mobile MTP Device
Galaxy->自動検索->インストールできません
android_winusb.infに追記
ベンダIDとプロダクトIDは、デバマネで確認したものを設定。
;GalaxyNexus
%SingleAdbInterface%        = USB_Install, USB\VID_04E8&PID_6860
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E30
%CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6860&REV_0100
デバマネ->Galaxy->ドライバ更新->検索しないで選択->すべてデバイスを表示->ディスク選択->android_winusb.infを選択->Android ADB Interface選択->再起動
adb接続確認を終え(お決まりのdmesgログ取って)、さてアレと。アレ?BootLoaderのUnlock?なにそれ。fastbootコマンドでoem unlockすれば良いとかあるけど、ここは楽しみたいじゃないですか。unlockしてroot奪取してわーい!だと、あまりにもつまらない。ちゅうか、カーネル入れ替えたいほど動作に不満ないですね、ねくさす。とりあえず、root奪取まで舐り倒したい。
で。
まず、fastbootモードちゅうものを見てみたいではないですか。
如何せん、三星はお初だから勝手も何も分からない。
ボリューム上下+電源ボタンでfastbootモード起動。

ふむふむ、LOCK STATE - LOCKEDですね。
fastbootモードでの選択肢は、
- Start
- Restart bootloader
- Recovery mode
- Power off
Startて何を開始するんだろ?とか、興味津々になるのですが、そいやブリック対策やらフルバックアップとか、準備運動してないじゃんて気付く。
逸る気持ちを抑えながら冬の夜は更け行く。

やべー、この玩具。

電源落とした状態でUSB接続すると、OMAP4440検出。なにこれ?と調べたら、ねくさすのCPUてテキサスのOMAP4460だとか。OMAP4460検出だったのかな?まぁ、いいや。なんでも、AC/USBチャージャも搭載の統合プロセッサなんだって->http://www.tij.co.jp/solution/jp/mobile_internet_device
そいや、チャージ掛けると、泥起動する端末もあれば起動しない端末もあったけど、そういう事情もあるんかね。