這幾天跟廖大研究了一番...
終於把 android 整個從 partition到 boot 都研究了個透,

當然起頭的契機是網路上一堆熱血的root文啦~
把看過的資料稍微整理一下...
大概只有我自己看得懂吧 Q_Q

以下文字剪剪貼貼自各站,
如有冒犯著作權請來信通知,謝謝 @@

 

 

其實android 就是linux ,
所以操作上相當的得心應手

 

PS.
所以平常
只能用 adb 
要 hboot 才是用 fastboot (windows 下連接的driver不一樣)



1.安裝 android sdk


2.s-off
http://gfans.bryan.tw/2010/12/01/1379
不s-off的話以下修改做完又會被還原XD


  1、HTC手机在闪存中设置了一个“安全标志(secuflag)”用来标记手机的闪存是否可被随意读写。
  2、通常手机都是处于“S-ON”(Security ON)状态,此时手机“/system”和“/recovery”分区无法被读写。最直接的表现就是如果用RE管理器等高权限文件管理器删除“/system”文件夹下的程序,重启后程序又会出现;另外无法修改开机第一屏画面。
  3、“安全标志(secuflag)”位于Radio NVRAM中,由于此部分无法修改,因此本教程中的方法是通过修改HBoot区域实现S-OFF(Security OFF)。
  4、与无痛Root相比,这种方式实现真正的Root。无痛Root只是使软件获得了更高权限,但是还是无法修改“/system”目录下的文件,无法更换开机第一屏画面。
  5、S-OFF即Security OFF,手机获得系统最高Root权限,可随意更换开机第一屏画面,可随意删除“/system”目录下的应用程序。

android boot :



bios 先找到mmc 對吧
然後mmc的mbr 告訴硬體
mbr jump 到 mmcblkp018 (partition)

 




2.進入VISIONary+,所有選項都不勾,執行「Temproot now」。


3.永久 root
http://gfans.bryan.tw/2011/01/03/1524


4.關閉VISIONary+ 開機啟動


5. remount
#mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system




6.幹掉討厭的kkbox 跟 ezpeer twitter
# cp /system/app/KKBOX_Android.apk /sdcard/ORG_APP/
# cp /system/app/KKBOX_HTC_Player_Widget.apk /sdcard/ORG_APP/
# rm /system/app/KKBOX_HTC_Player_Widget.apk
# rm /system/app/KKBOX_Android.apk
#cp /system/app/ezPeer_v1.0.0.48_improved_icon.apk /sdcard/ORG_APP/
#rm /system/app/ezPeer_v1.0.0.48_improved_icon.apk
cp ./Twitter.apk /sdcard/ORG_APP/
rm Twitter.apk
 




5.改 gps.conf
# cd /system/etc
# chmod 777 gps.conf
用astro改檔,存檔
NTP_SERVER=north-america.pool.ntp.org
NTP_SERVER=tw.pool.ntp.org
# chmod 644 gps.conf


8.重開機


sync
reboot

 

 






怪事


1.我的是聯強貨, 確是內建中華電信軟體?


2備份
1.在Desire Z(S-ON)的機器抽取HBOOT(S-ON)
dd if=/dev/block/mmcblk0p18 of=/data/local/hboot_orig.img
2.在Desire Z(S-OFF)的機器刷抽取出的HBOOT(S-ON)
dd if=/data/local/hboot_orig.img of=/dev/block/mmcblk0p18




adb push busybox /mnt/sdcard/busybox  丟檔的方法之一


http://tjworld.net/wiki/Android/HTC/Vision/LinuxAnalysis
(partition的定義)






01-dbl-03E8.raw
02-oemsbl-0080.raw
03-osbl-2328.raw
04-header_rex_amss.elf
05-rex_amss-EA60.elf
06-modem_DSP-61A8.raw
07-unknown_data-1000.raw
08-unknown-1800.raw
09-unknown-1000.raw
10-unknown-0800.raw
11-unknown-0800.raw
12-unknown-445F.raw
13-unknown-1800.efs
14-unknown-1800.efs
15-unknown-0800.raw
16-unknown-45FB.raw
17-misc-0200.raw
18-hboot-0800.raw
19-sp1-0800.raw
20-wifi-0A00.raw
21-recovery-43FA.raw
22-boot-2000.raw
23-mfg-0200.raw
24-sp2-0FFE.raw
25-system-116FFF.ext3
27-cache-095FFF.ext3
28-devlog-A5FF.ext3
29-pdata-0200.raw




mmcblk0
mmcblk0p1

backup by
dd if=./mmcblk0 of=/sdcard/block/mmcblk0
dd if=./mmcblk0p25 of=/sdcard/block/mncblk0p25



http://www.android-hk.com/news/one-command-uplock-app2sd/
adb shell pm setInstallLocation 2  #app2sd
adb shell pm setInstallLocation 0  #還原

 

 




http://blogold.chinaunix.net/u/26691/showart_2194274.html




3.1、另一种解包、编辑、打包的方法
下载split_bootimg.zip文件(译者注,会在本文的附件中提供),在此zip文件中包含一个perl文件,split_bootimg.pl脚本,该脚本可以读取boot.img头(根据Android源码中的bootimg.h读取)将kernel和ramdisk读取出来,此脚本也会输出内核命令行和板子名字。


(注意,不要使用从/dev/mtd/mtd2直接拷贝出来的boot.img,此映像可能在读取过程遭到损坏。)
下面是一个从TC4-RC28更新中提取出来的boot.img进行解包操作:
% ./split_bootimg.pl boot.img 
Page size: 2048 (0x00000800)
Kernel size: 1388548 (0x00153004)
Ramdisk size: 141518 (0x000228ce)
Second size: 0 (0x00000000)
Board name: 
Command line: no_console_suspend=1
Writing boot.img-kernel ... complete.
Writing boot.img-ramdisk.gz ... complete.


解包ramdisk的命令如下:
% mkdir ramdisk
% cd ramdisk
% gzip -dc ../boot.img-ramdisk.gz | cpio -i
% cd ..


解码完毕后,就可以修改了(例如,在default.prop设置ro.secure=0等等)


使用mkbootfs工具(mkbootfs工具是编译完毕Android源代码以后,就会在~/android-src/out/host/linux-x86/bin自动生成)来重新创建ramdisk,可以使用如下命令来操作:
% mkbootfs ./ramdisk | gzip > ramdisk-new.gz


使用mkbootimg来重新创建boot.img,mkbootimg也可以在~/android-src/out/host/linux-x86/bin目录中可以找到:
% mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot-new.img
(注意:console=null的命令行选现是从TC4-RC30的boot.img引入的,用以去掉root shell)


4、将新的映像刷回到手机
可以将recovery.img拷贝到/system目录下面,然后重新启动手机,让手机自动为你您刷写到mtd里面(工作原理在上面已经提过了)。对于boot.img可以通过将其拷贝到sd卡的根目录,然后通过手机内的刷写工具将此映像写入到手机中。


例如,使用adb工具将boot.img拷贝到手机的sd卡的根目录:
adb push ./mynewimage.img /sdcard
然后通过adb shell登录手机的shell交互模式,利用命令行进行交互:
# cat /dev/zero > /dev/mtd/mtd2
   write: No space left on device [this is ok, you can ignore]
# flash_image boot /sdcard/mynewimage.img
然后重启手机。


如果手机能够正常启动,那么祝贺你您,你您的修改和替换已经成功了;如果不能够顺利启动,则需要重新启动进入recovery模式,并且使用update.zip来恢复。


5、解包、编辑、打包为我们带来了什么
可以修改手机开机启动时候的画面,具体的操作的地址为:
http://forum.xda-developers.com/showthread.php?t=443431


6、本文讲的内容与使用update.zip刷机包不是一码事
您可以很容易地在其他论坛上看到关于如何自制update.zip刷机包的方法,也可以下载到很多在网络上共享的自制刷机包。例如:近期的多数刷机包都来自对rc30包的修改和调整。在update.zip刷机包里面会包括新的boot.img,recovery.img以及整个system/目录下的若干文件的替换和更新。如果您希望自己自制boot.img以及recovery.img,建议您选取相对较新的更新和版本。(选用较老的映像的话,或许会出现兼容性问题)。












Android 的 init.rc how-to
http://huenlil.pixnet.net/blog/post/25330074




http://hiapk.com/bbs/thread-665575-1-1.html
fastboot 是底層千萬不能壞,
recovery更高階


http://gfans.bryan.tw/2011/01/10/1601

 

 

#from mobile01

目前看來只要有東西復原不完全,原廠HBOOT(S-ON)就會完全沒辦法開機唷(也無法進入Recovery)~


因為先前我沒有刷Rom,Kernel, System, Radio版本和出場值相同

唯一不同的地方是刷了Clockwrok Mod的Recovery~

看起來在HBOOT(S-OFF)開機中,會忽略所有Kernel, System, Radio, Recovery的檢查~

而原廠的HBOOT(S-ON)開機中,會去做Kernel, System, Radio, Recovery的檢查~

因為我沒有把原廠Recovery復原,只有把原廠HBOOT(S-ON)復原~所以造成最後開機變磚。

猜想若是也有將Recovery恢復的話,應該就能順利從S-OFF恢復成S-ON狀態。

arrow
arrow
    全站熱搜

    阿貴貴 發表在 痞客邦 留言(0) 人氣()