<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 189,comments - 115,trackbacks - 0

    Recovery界面的中文詳細(xì)說(shuō)明

    首先,介紹下進(jìn)入Recovery的方式
    1:
    完全關(guān)機(jī),按住音量下+電源鍵開(kāi)機(jī),進(jìn)入bootloader界面
    2:按音量鍵移動(dòng)光標(biāo)到Recovery那一行
    3:按電源鍵(之后機(jī)器會(huì)重啟進(jìn)入Recovery)
    音量鍵為光標(biāo)選擇鍵,可以用來(lái)移動(dòng)光標(biāo),電源鍵為確認(rèn)鍵!
    一:Recovery主界面
    *reboot system now:
    重啟手機(jī)(刷機(jī)完畢選擇此項(xiàng)就能重新啟動(dòng)系統(tǒng))
    *apply SDcard:update.zip:安裝存儲(chǔ)卡中的update.zip升級(jí)包(你可以把刷機(jī)包命名為update.zip然后用這個(gè)選項(xiàng)直接升級(jí))
    *wipe data/factory reset:清除用戶數(shù)據(jù)并恢復(fù)出廠設(shè)置(刷機(jī)前必須執(zhí)行的選項(xiàng))
    *wipe cache partition:清除系統(tǒng)緩存(刷機(jī)前執(zhí)行)(系統(tǒng)出問(wèn)題也可嘗試此選項(xiàng),一般能夠解決)
    *install zip from SDcard:從SDcard上安裝zip升級(jí)包(可以執(zhí)行任意名稱的zip升級(jí)包,不限制升級(jí)包名稱)
    *backup and restore:備份和還原系統(tǒng)(作用和原理如同電腦上的chost一鍵備份和還原)
    *mounts and storage:掛載和存儲(chǔ)選項(xiàng)(詳細(xì)功能見(jiàn)下面的解釋)
    *advanced:高級(jí)設(shè)置
    二:backup and restore功能詳解
    *Backup:
    備份當(dāng)前系統(tǒng)
    *Restore:還原上一個(gè)系統(tǒng)
    *Advanced Restore:高級(jí)還原選項(xiàng)(用戶可以自選之前備份的系統(tǒng),然后進(jìn)行恢復(fù))
    三:mounts and storage功能詳解
    *mount  /system:
    掛載system文件夾(基本用不到)
    *mount  /data:掛載data文件夾(基本用不到)
    *unmount  /cache:取消cache文件夾掛載(基本用不到)
    *unmount  /sdcard:取消內(nèi)存卡掛載(基本用不到)
    *mount  /sd-ext:掛載內(nèi)存卡Ext分區(qū)(基本用不到)
    *format  boot:格式化boot(刷機(jī)前最好執(zhí)行一下)
    *format  system:格式化system(刷機(jī)前最好執(zhí)行一下)
    *format  data:格式化data(刷機(jī)前最好執(zhí)行一下)
    *format  cache:格式化cache(刷機(jī)前最好執(zhí)行一下)
    *format  sdcard:格式化內(nèi)儲(chǔ)卡(執(zhí)行此項(xiàng)你會(huì)后悔的)
    *format  sd-ext:格式化內(nèi)存卡Ext分區(qū)(執(zhí)行此項(xiàng)你會(huì)后悔的)
    *mount USB storage:開(kāi)啟Recovery模式下的USB大容量存儲(chǔ)功能(也就是說(shuō)可以在Recovery下對(duì)內(nèi)存卡進(jìn)行讀寫(xiě)操作)
    四:Advance 功能詳解
    *Reboot  Recovery:
    重啟Recovery(重啟手機(jī)并再次進(jìn)入Recovery) 
    *Wipe  Dalvik  Cache:清空虛擬機(jī)緩存(可以解決一些程序FC的問(wèn)題)  
    *Wipe  Battery  Stats:
    清空電池調(diào)試記錄數(shù)據(jù)(刷機(jī)前做下這個(gè),會(huì)比較好,感覺(jué)自己電量有問(wèn)題的機(jī)油也可以試試)
    *Report  Error:錯(cuò)誤報(bào)告(配合固件管家用的,不是開(kāi)發(fā)者請(qǐng)無(wú)視)
    *Key  Test:按鍵測(cè)試(基本沒(méi)撒用的功能?。?br /> *Partition  SD  Card:對(duì)內(nèi)存卡分區(qū)(個(gè)人覺(jué)得DHD不需要分區(qū),一來(lái)耗電、二來(lái)影響速度?。?br /> *Fix  Permissions:修復(fù)Root權(quán)限(如果你的手機(jī)Root權(quán)限出問(wèn)題了,可以用這個(gè)功能)

    [資料] ◆Android系統(tǒng)名詞解釋,詳解recovery模式下各種指令◆



    APK:

            APK 是Android Package 的縮寫(xiě),即Android安裝包。APK 相當(dāng)于電腦上的exe文件或者塞班上的sis文件。

    ROM、RUU:

                 ROM,是用來(lái)刷你手機(jī)系統(tǒng)的數(shù)據(jù)文件,也就是Android 系統(tǒng)的封裝包,通過(guò)手機(jī)的工程模式解壓安裝到手機(jī)中形成你手機(jī)的操作系統(tǒng)。
                                                       簡(jiǎn)單來(lái)說(shuō)就是手機(jī)固件,相當(dāng)于電腦的系統(tǒng),我們刷機(jī)也就是重新安裝這部分。
           官方原版ROM 就是RUU,(相當(dāng)于原版Windows XP)首先他是一個(gè)最安全的升級(jí)工具,可以讓我們安全的升級(jí)ROM (一定要對(duì)應(yīng)的機(jī)型)。
           當(dāng)我們?cè)谒C(jī)過(guò)程中由于不當(dāng)?shù)牟僮骰虬姹具x擇的錯(cuò)誤,導(dǎo)致無(wú)法啟動(dòng),可以使用官方的RUU 程序來(lái)恢復(fù)系統(tǒng),等于說(shuō),這是一個(gè)救命道具。

    Radio:

                 Radio指代的是通訊模塊,就是手機(jī)里面負(fù)責(zé)信號(hào)部分的模塊,PDA類型的手機(jī),基本都強(qiáng)調(diào)這么個(gè)概念。一個(gè)是PDA,一個(gè)是手機(jī)(貌似是句廢話- -),舉個(gè)很簡(jiǎn)單的例子,以三星的PPC手機(jī)為例,比如i718.比如i908,他們?cè)谒C(jī)的時(shí)候(所謂刷機(jī)就是重裝系統(tǒng))一般都是分兩部分,第一部分刷 手機(jī)部分,第二部分刷PDA部分,而且兩部分基本不相干。

    app2sd:

                 Google 手機(jī)的軟件為了安全性和穩(wěn)定性都是默認(rèn)安裝到手機(jī)內(nèi)存里,但是手機(jī)內(nèi)存有限,所以我們會(huì)做app2sd 操作,來(lái)讓我們安裝的軟件放到sd卡上,而Google 的android 系統(tǒng)是基于Linux 的,所以存儲(chǔ)卡上本身的Fat 格式是不會(huì)被識(shí)別的,所以我們要分區(qū)(第二分區(qū))出來(lái),格式成Linux 認(rèn)識(shí)的ext2 或3 或4 格式,在用鏈接命令,把這個(gè)分區(qū)映射成一個(gè)系統(tǒng)文件夾system/sd(大概這個(gè)意思),把所有的軟件裝到這個(gè)“文件夾”下,這就是app2sd 的操作。需要ROM 支持并開(kāi)啟app2sd 功能。
                  app2sd 的操作其實(shí)是犧牲了一部分軟件的速度和穩(wěn)定性來(lái)?yè)Q取更多的手機(jī)內(nèi)存安裝更多的軟件。另外,app2sd只是把軟件放到了sd卡上,運(yùn)行軟件還是需要占用手 機(jī)的內(nèi)存的,所以,你裝了軟件之后,一般手機(jī)內(nèi)存還是會(huì)減少一些。你如果安裝的軟件在70個(gè)以內(nèi),個(gè)人覺(jué)得沒(méi)有必要,呵呵,如果很多游戲軟件除外。此外, 使用app2sd 最大的好處就是,刷一個(gè)帶app2sd 的rom 之后,以后升級(jí)這個(gè)rom(依然帶app2sd)的時(shí)候,你的軟件都會(huì)完整保存(個(gè)別除外,比如htc input chinese需要重新添加幾個(gè)文件到system/lib下),不過(guò)很多ROM 是需要Wipe ext 分區(qū)的,也就不能保留了。
                  目前來(lái)看我們現(xiàn)在所使用的Android 各種軟件暫時(shí)還沒(méi)有進(jìn)行app2sd 的必要。
           簡(jiǎn)單來(lái)說(shuō)就是把程序安裝到內(nèi)存卡里面
    注:為了適應(yīng)用戶需求,從android 2.2開(kāi)始 android系統(tǒng)已經(jīng)支持安裝軟件到sd卡。

    root:

                  root 就是你手機(jī)的boss,它可以訪問(wèn)和修改你手機(jī)幾乎所有的文件,這些東西可能是制作手機(jī)的人不愿意你修改和觸碰的東西,因?yàn)樗麄冇锌赡苡绊懙绞謾C(jī)的穩(wěn)定,還容易被一些hacker 有機(jī)會(huì)入侵你的手機(jī)(貌似還沒(méi)有出來(lái)這類黑客)。
                  既然root 這么危險(xiǎn),我們?yōu)槭裁催€要去獲取它?其實(shí)用root 的權(quán)限主要是因?yàn)槲覀兩谔斐覀兒芏鄸|西是受限制的,我們只能利用這些權(quán)限來(lái)做我們被限制的去做的事情,比如Google 禁止我們看到市場(chǎng)里很多免費(fèi)或付費(fèi)軟件,我們可以用marketenabler 來(lái)進(jìn)去看;再比如國(guó)慶以來(lái)GFW 把我們的市場(chǎng)干掉了,很多朋友只能看不能下,不能綁定gmail,我們可以修改hosts 來(lái)搞定他們,但這些都需要root權(quán)限。
                  比如目前所有在hero 上截屏的軟件都需要root 權(quán)限,沒(méi)有root 權(quán)限,像Drocap、Shootme、Picme等等這類截屏軟件就不能使用(當(dāng)然,我們可以連線電腦,使用 91助手在電腦上截取自己想要的hero 屏圖)。個(gè)人覺(jué)得,除非必要,不要總是去想著獲取root。
            ROOT就是手機(jī)的最高權(quán)限,相當(dāng)于塞班的XX權(quán)限,可以對(duì)系統(tǒng)文件進(jìn)行操作。

    SPL:

                    SPL全稱“Secondary Program Loader”,中文名叫做二次程序載入器,負(fù)責(zé)檢測(cè)ROM和硬件,尋找系統(tǒng)啟動(dòng)分區(qū)并裝載ROM的其它部分。
              簡(jiǎn)單來(lái)說(shuō),就是俗稱的刷機(jī)安全套件,保證您在刷機(jī)失敗時(shí)也不會(huì)變磚頭,通??煞譃?#8220;Hard-SPL”和“Soft-SPL”兩種。XX手機(jī)也就是XX的這個(gè)部分。

    recovery:

                  recovery 就是你用 home 鍵+開(kāi)機(jī)鍵 開(kāi)機(jī)后能進(jìn)入的一個(gè)界面(工程模式),在這個(gè)界面你可以直接用sd 卡上的zip 的rom 升級(jí)或者備份你的系統(tǒng),老版本的recovery 只有三個(gè)選項(xiàng),無(wú)法備份系統(tǒng),只能用update.zip這個(gè)文件名的文件升級(jí),不能用任何文件名的zip文件升級(jí)。新版本已經(jīng)多出很多選項(xiàng)可以供你操 作。
                   此外,一般刷rom 之前最好wipe一下(wipe只是抹除rom 以外的個(gè)人數(shù)據(jù),不會(huì)影響rom 本身),也就是返回出廠設(shè)置一下比較好,但是這樣就會(huì)丟失你的所有軟件,短信彩信,聯(lián)系人(備份在google上沒(méi)有關(guān)系)和設(shè)置等等,備份或者不 wipe 都可以。
    目前最新版為:RA-hero-v1.6.2
    說(shuō)說(shuō)RA-hero-v1.6.2里的對(duì)應(yīng)的說(shuō)明:
    1、Reboot system now——重啟
    2、USB-MS toggle——在recovery 模式下直接連接USB而不需要退出該模式
    3、Backup/Restore——備份和還原
                3-1、Nand backup——Nand 備份
                3-2、Nand + ext backup——Nand 備份(系統(tǒng)和ext 分區(qū)一同備份)
                3-3、Nand restore——還原(就是還原3-1、3-2 的最后一次備份)
                3-4、BART backup——BART 備份 (包括系統(tǒng)和ext 分區(qū))
                3-5、BART restore——還原最后一次的BART備份
                Nand 備份類似于系統(tǒng)的備份 而B(niǎo)ART 則像是PC 上ghost 的備份。
                Nand 備份 它不會(huì)備份ext 分區(qū)(就是第二分區(qū) 沒(méi)有分區(qū)的可以不管這個(gè))
                所以你的如果app2sd 了 那么裝在第二分區(qū)的程序用Nand 恢復(fù)是辦不到的
                BAR T則可以備份到ext 分區(qū) 用BART 恢復(fù)則可以恢復(fù)整個(gè)系統(tǒng) 可以使它和你備份前一模一樣,
           不會(huì)有一點(diǎn)文件信息的丟失(包括聯(lián)系人、短信、圖片、影音等,所以如果你裝的東西比較多,那么備份和恢復(fù)會(huì)比較慢)
    4、Flash zip from sdcard——從sd卡根目錄的.zip ROM 刷機(jī)包刷機(jī)
    5、Wipe——清除
                5-1、Wipe data/factory reset——清除內(nèi)存數(shù)據(jù)和緩存數(shù)據(jù)(刷機(jī)前建議清除此項(xiàng))
                5-2、Wipe Dalvik-cache——清除緩存數(shù)據(jù) + ext 分區(qū)內(nèi)數(shù)據(jù)(刷機(jī)前建議清除此項(xiàng))
                5-3、Wipe SD:ext partition——只清除ext 分區(qū)內(nèi)數(shù)據(jù)(刷機(jī)前建議清除此項(xiàng))
                5-4、Wipe battery stats——清除電池?cái)?shù)據(jù)(刷機(jī)前建議清除此項(xiàng))
                5-5、Wipe rotate settings——清除傳感器內(nèi)設(shè)置的數(shù)據(jù)(刷機(jī)前建議清除此項(xiàng))
    6、Partition sdcard——分區(qū)sd 卡
                6-1、Partition SD——自動(dòng)為sd 卡分區(qū)
                6-2、Repair SD:ext——修復(fù)ext 分區(qū)
                6-3、SD:ext2 to ext3——將ext2 分區(qū)轉(zhuǎn)換為ext3 分區(qū)(推薦)
                6-4、SD:ext3 to ext4——將ext3 分區(qū)轉(zhuǎn)換為ext4 分區(qū)(C4 卡不推薦,C6 卡推薦)
    7、Other——其它
                7-1、Fix apk uid mismatches——修復(fù)apk 程序
                7-2、Move apps+dalv to SD——移動(dòng)程序和虛擬緩存到sd 卡(這個(gè)可不是 app2sd)
                7-3、Move recovery.log to SD——移動(dòng)刷機(jī)日志文件到sd 卡
                                                              (執(zhí)行此操作后,sd 卡根目錄會(huì)出現(xiàn)一個(gè)“recovery.log” 文件 即為刷機(jī)日志文件)

    8、Power off——關(guān)機(jī)

    fastboot:

    從字面上來(lái)看是【快速啟動(dòng)】的意思,也算是一個(gè)刷機(jī)界面,不過(guò)比recovery更加底層.這個(gè)底層是更加接近硬件層的意思.
    兩個(gè)都很重要,不過(guò)fastboot更為主要.當(dāng)你不能進(jìn)入recovery的時(shí)候,不要緊張,你還能進(jìn)fastboot挽救,不過(guò)當(dāng)你連fastboot都不能進(jìn)入的時(shí)候,那可真就是磚了.
    通俗的說(shuō) recovery就好比外套,fastboot就好比內(nèi)褲.當(dāng)你的外套沒(méi)了的時(shí)候,你還有內(nèi)褲,這個(gè)時(shí)候頂多被人說(shuō)成是臭流氓.不過(guò)當(dāng)你內(nèi)褲都沒(méi)了的時(shí)候,那可就是耍流氓了,到時(shí)會(huì)有警察叔叔請(qǐng)你喝茶的.
    為了使用Fastboot功能.您必須root您的設(shè)備.并獲得S-OFF的SPL.你的電腦還必須裝有ADB驅(qū)動(dòng).
    進(jìn)入Fastboot的方式是關(guān)機(jī)狀態(tài)下按返回+開(kāi)機(jī).

    Fastboot使用方式: fastboot [ <選項(xiàng)> ] <命令>
    解釋:
    []括起來(lái)表示這個(gè)是可選的.
    <>括起來(lái)表示這個(gè)是必須的.

    可用命令:
    update <文件名>                        從官方update.zip升級(jí)系統(tǒng).該update.zip必須是官方的
    flashall                                 'flash boot' + 'flash system'
    flash <分區(qū)名> [ <文件名> ]         將文件寫(xiě)入分區(qū).文件必須正確的格式.分區(qū)名有但不限于system,recovery,boot,splash1,hboot,radio,userdata,cache
    erase <分區(qū)名>                        清空一個(gè)分區(qū).
    getvar <參數(shù)名>                        顯示一個(gè)啟動(dòng)參數(shù)
    boot <內(nèi)核文件> [ <ramdisk文件> ]           將電腦上的內(nèi)核下載到手機(jī)并用該內(nèi)核啟動(dòng)系統(tǒng).
    flash:raw boot <內(nèi)核文件> [ <ramdisk文件> ]    創(chuàng)建boot.img并下載到手機(jī)啟動(dòng)系統(tǒng).
    devices                                  列出所有與電腦連接的設(shè)備.
    reboot                                   正常啟動(dòng)系統(tǒng)
    reboot-bootloader                        啟動(dòng)系統(tǒng)到hboot

    選項(xiàng):
    -w                                       清空用戶數(shù)據(jù)分區(qū)和緩存分區(qū).相當(dāng)于recvery中的"wipe data/factory reset"
    -s <串口號(hào)>                       置頂要操作的設(shè)備的串口號(hào)
    -p <產(chǎn)品名>                             指定要操作的設(shè)備的產(chǎn)品名.比如hero,bravo,dream...
    -c <命令行>                        用命令行替換系統(tǒng)的啟動(dòng)命令行.

    分區(qū)解釋:
    system:系統(tǒng)分區(qū).我們刷機(jī)器一般就是刷的這個(gè)分區(qū).
    userdata:數(shù)據(jù)分區(qū).
    cache:緩存分區(qū)
    recovery:Recovery分區(qū).
    boot:存放內(nèi)核和ramdisk的分區(qū).
    hboot:這個(gè)是SPL所在的分區(qū).很重要哦.也是fastboot所在的分區(qū).刷錯(cuò)就真的變磚了.
    splash1:這個(gè)就是開(kāi)機(jī)第一屏幕了.
    radio:這個(gè)是無(wú)線所在的分區(qū).
    misc:其他分區(qū).放的是htc的一些東西.]


    http://leox.iteye.com/blog/975303

    http://blogold.chinaunix.net/u/14459/showart_1911144.html

     

    (muddogxp 原創(chuàng),轉(zhuǎn)載請(qǐng)注明)

    Recovery簡(jiǎn)介

    Android利用Recovery模式,進(jìn)行恢復(fù)出廠設(shè)置,OTA升級(jí),patch升級(jí)及firmware升級(jí)。

    升級(jí)一般通過(guò)運(yùn)行升級(jí)包中的META-INF/com/google/android/update-script腳本來(lái)執(zhí)行自定義升級(jí),腳本中是一組recovery系統(tǒng)能識(shí)別的UI控制,文件系統(tǒng)操作命令,例如write_raw_image(寫(xiě)FLASH分區(qū)),copy_dir(復(fù)制目錄)。該包一般被下載至SDCARDCACHE分區(qū)下。如果對(duì)該包內(nèi)容感興趣,可以從http://forum.xda-developers.com/showthread.php?t=442480下載JF升級(jí)包來(lái)看看。

    升級(jí)中還涉及到包的數(shù)字簽名,簽名方式和普通JAR文件簽名差不錯(cuò)。公鑰會(huì)被硬編譯入recovery,編譯時(shí)生成在:out/target/product/XX/obj/PACKAGING/ota_keys_inc_intermediates/keys.inc

    G1中的三種啟動(dòng)模式

    MAGIC KEY:

    • camera + powerbootloader模式,ADP里則可以使用fastboot模式

    • home + powerrecovery模式

    • 正常啟動(dòng)

    Bootloader正常啟動(dòng),又有三種方式,按照BCBBootloader Control Block, 下節(jié)介紹)中的command分類:

    • command == 'boot-recovery' → 啟動(dòng)recovery.imgrecovery模式

    • command == 'update-radio/hboot' → 更新firmwarebootloader)

    • 其他 → 啟動(dòng)boot.img

    Recovery涉及到的其他系統(tǒng)及文件

    • CACHE分區(qū)文件

    •  
      • /cache/recovery/command: recovery命令,由主系統(tǒng)寫(xiě)入。所有命令如下:

        • --send_intent=anystring - write the text out to recovery.intent

        • --update_package=root:path - verify install an OTA package file

        • --wipe_data - erase user data (and cache), then reboot

        • --wipe_cache - wipe cache (but not user data), then reboot

      • /cache/recovery/logrecovery過(guò)程日志,由主系統(tǒng)讀出

      • /cache/recovery/intentrecovery輸出的intent

    • Recovery 工具通過(guò)NAND cache分區(qū)上的三個(gè)文件和主系統(tǒng)打交道。主系統(tǒng)(包括恢復(fù)出廠設(shè)置和OTA升級(jí))可以寫(xiě)入recovery所需的命令,讀出recovery過(guò)程中的LOGintent。

    • MISC分區(qū)內(nèi)容

      Bootloader Control Block (BCB) 存放recovery bootloader message。結(jié)構(gòu)如下:

      struct bootloader_message {

        char command[32];

        char status[32]; // 未知用途

        char recovery[1024];

      };

      • command可以有以下兩個(gè)值

        boot-recovery”:標(biāo)示recovery正在進(jìn)行,或指示bootloader應(yīng)該進(jìn)入recovery mode

        update-hboot/radio”:指示bootloader更新firmware

      • recovery內(nèi)容

        recovery\n

        <recovery command>\n

        <recovery command>

        其中recovery commandCACHE:/recovery/command命令


    兩種Recovery Case

    • FACTORY RESET(恢復(fù)出廠設(shè)置)

    1. 用戶選擇“恢復(fù)出廠設(shè)置”

    2. 設(shè)置系統(tǒng)將"--wipe_data"命令寫(xiě)入/cache/recovery/command

    3. 系統(tǒng)重啟,并進(jìn)入recover模式(/sbin/recovery

    4. get_args() 將 "boot-recovery""--wipe_data"寫(xiě)入BCB

    5. erase_root() 格式化(擦除)DATA分區(qū)

    6. erase_root() 格式化(擦除)CACHE分區(qū)

    7. finish_recovery() 擦除BCB

    8. 重啟系統(tǒng)

     

    • OTA INSTALLOTA升級(jí))

    1. 升級(jí)系統(tǒng)下載 OTA包到/cache/some-filename.zip

    2. 升級(jí)系統(tǒng)寫(xiě)入recovery命令"--update_package=CACHE:some-filename.zip"

    3. 重啟,并進(jìn)入recovery模式

    4. get_args() "boot-recovery" 和 "--update_package=..." 寫(xiě)入BCB

    5. install_package() 作升級(jí)

    6. finish_recovery() 擦除 BCB

    7. ** 如果安裝包失敗 ** prompt_and_wait() 等待用戶操作,選擇ALT+SALT+W 升級(jí)或恢復(fù)出廠設(shè)置

    8. main() 調(diào)用 maybe_install_firmware_update()

      1. 如果包里有hboot/radiofirmware則繼續(xù),否則返回

      2. 將 "boot-recovery" 和 "--wipe_cache" 寫(xiě)入BCB

      3. 將 firmware image寫(xiě)入cache分區(qū)

      4. 將 "update-radio/hboot" 和 "--wipe_cache" 寫(xiě)入BCB

      5. 重啟系統(tǒng)

      6. bootloader自身更新firmware

      7. bootloader 將 "boot-recovery" 寫(xiě)入BCB

      8. erase_root() 擦除CACHE分區(qū)

      9. 清除 BCB

    9. main() 調(diào)用 reboot() 重啟系統(tǒng)


    Recovery模式流程


    /init  init.rc  /sbin/recovery 

    main():recovery.c


    • ui_init():ui.c UI initialize

      • gr_init():minui/graphics.c set tty0 to graphic mode, open fb0]

      • ev_init():minui/events.c [open /dev/input/event*]

      • res_create_surface:minui/resource.c [create surfaces for all bitmaps used later, include icons, bmps]

      • create 2 threads: progress/input_thread [create progress show and input event handler thread]

    • get_args():recovery.c

      • get_bootloader_message():bootloader.c [read mtdblock0(misc partition) 2nd page for commandline]

      • check if nand misc partition has boot message. If yes, fill argc/argv.

      • If no, get arguments from /cache/recovery/command, and fill argc/argv.

      • set_bootloader_message():bootloader.c [set bootloader message back to mtdblock0]

    • Parser argv[] filled above

    • register_update_commands():commands.c [ register all commands with name and hook function ]

      • registerCommand():commands.c

        • Register command with name, hook, type, cookie.

        • Commands, e.g: assert, delete, copy_dir, symlink, write_raw_image.

      • registerFunction():commands.c

        • Register function with name, hook, cookie.

        • Function, e.g: get_mark, matches, getprop, file_contains

    • install_package():

      • translate_root_path():roots.c [ "SYSTEM:lib" and turns it into a string like "/system/lib", translate the updater.zip path ]

      • mzOpenZipArchive():zip.c [ open updater.zip file (uncompass) ]

      • handle_update_package():install.c

        • verify_jar_signature():verifier.c [ verify signature with keys.inc key; verify manifest and zip package archive ]

          • verifySignature() [ verify the signature file: CERT.sf/rsa. ]

            • digestEntry():verifier.c [ get SHA-1 digest of CERT.sf file ]

            • RSA_verify(public key:keys.inc, signature:CERT.rsa, CERT.sf's digest):libc/rsa.c [ Verify a 2048 bit RSA PKCS1.5 signature against an expected SHA-1 hash. Use public key to decrypt the CERT.rsa to get original SHA digest, then compare to digest of CERT.sf ]

          • verifyManifest() [ Get manifest SHA1-Digest from CERT.sf. Then do digest to MANIFEST.MF. Compare them ]

          • verifyArchive() [ verify all the files in update.zip with digest listed in MANIFEST.MF ]

        • find_update_script():install.c [ find META-INF/com/google/android/update-script updater script ]

        • handle_update_script():install.c [ read cmds from script file, and do parser, exec ]

          • parseAmendScript():amend.c [ call yyparse() to parse to command ]

          • exeCommandList():install.c

            • exeCommand():execute.c [ call command hook function ]

    • erase DATA/CACHE partition

    • prompt_and_wait():recovery.c [ wait for user input: 1) reboot 2) update.zip 3) wipe data ]

      • ui_key_xxx get ALT+x keys

      • 1) do nothing

      • 2) install_package('SDCARD:update.zip')

      • 3) erase_root()  format_root_device() DATA/CACHE

    • may_install_firmware_update():firmware.c [ remember_firmware_update() is called by write_hboot/radio_image command, it stores the bootloader image to CACHE partition, and write update-hboot/radio command to MISC partition for bootloader message to let bootloader update itself after reboot ]

      • set_bootloader_message()

      • write_update_for_bootloader():bootloader.c [ write firmware image into CACHE partition with update_header, busyimage and failimage ]

    • finish_recovery():recovery.c [ clear the recovery command and prepare to boot a (hopefully working) system, copy our log file to cache as well (for the system to read), and record any intent we were asked to communicate back to the system. ]

    • reboot()


    Recovery模式流程圖

    以下流程圖繪制了系統(tǒng)從啟動(dòng)加載bootloader后的行為流程。

    沒(méi)有床,見(jiàn)blog吧~

     

    實(shí)際使用的例子:

    adb shell "echo \"send_intent=xxx\" > /cache/recovery/command"

    adb shell "echo \"--update_package=SDCARD:update.zip\" >> /cache/recovery/command"

    adb shell sync

    adb reboot recovery

     

    posted on 2011-08-16 10:00 MEYE 閱讀(3520) 評(píng)論(0)  編輯  收藏 所屬分類: Android3D
    主站蜘蛛池模板: 亚洲av无码专区在线观看素人| 亚洲一本之道高清乱码| 男女作爱免费网站| 最近中文字幕无吗免费高清| 亚洲资源在线视频| 无码少妇精品一区二区免费动态| 亚洲中文字幕无码爆乳av中文| 亚洲av综合av一区二区三区| 成年女人色毛片免费看| 亚洲卡一卡2卡三卡4麻豆| 18女人腿打开无遮掩免费| 无码乱人伦一区二区亚洲| a视频在线观看免费| 亚洲日韩精品一区二区三区| 一出一进一爽一粗一大视频免费的| 亚洲VA综合VA国产产VA中| 国产亚洲精品美女久久久久| 日本视频免费在线| 久久亚洲精品无码gv| 日韩午夜免费视频| 亚洲AV无码精品国产成人| 日本一道本高清免费| 爱情岛亚洲论坛在线观看 | 亚洲人成色77777| 久久久久女教师免费一区| 91麻豆精品国产自产在线观看亚洲 | 中文字幕免费在线看线人动作大片| 亚洲精品无码99在线观看| 三年片在线观看免费观看大全中国| 免费二级毛片免费完整视频| 羞羞视频免费网站入口| 免费在线观看理论片| 丰满少妇作爱视频免费观看| 亚洲一级特黄大片无码毛片| 一个人看www免费高清字幕| 国产亚洲精品资在线| 少妇性饥渴无码A区免费| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 在线免费观看毛片网站| 亚洲AV无码一区二区大桥未久| 免费**毛片在线播放直播|