FastBoot BootLoader Recovery 模式解釋

理論上,所有的Android設備都存在着Fastboot/Bootloader模式,不過,由於Android操作系統的開源特性,各廠商的對 自家的相關Android設備都有着各自不同的Fastboot/Bootlader模式。當然,並非所有的廠商的都會對旗下設備的Fastboot /Bootloader模式進行鎖定。然而,大多數情況下,它們的Fastboot/Bootloader模式是鎖定的。但是,值得稱道的是,現在越來越多的廠商已漸漸向開發的Fastboot/Bootloader模式過渡,如HTC(HTC官方旗艦店)、Sony Ericsson(索尼愛立信官方旗艦店)等。因爲它們雖然仍對新發布的設備鎖了Fastboot/Bootloader模式,但它們已於官方發佈瞭解鎖旗下設備的Fastboot/Bootloader模式的教程與相關應用或工具。

那麼,Fastboot/Bootloader模式是什麼呢?

從字面上來說,Fastboot/Bootloader是代碼,其爲引導程序的含義。它在任何的操作系統開始運行之前執行。Fastboot /Bootloader的概念是普遍性的,實際上,它適用於包括PC(Personal Computer)即個人電腦、輕便性電腦、智能手機、平板電腦或其他相關設備的所有的操作系統。Fastboot/Bootloader基本的作用爲加 載操作系統的內核與大多數的調試或修改環境模式。在你的設備中,Bootloader引導程序在任何的應用程序啓動之前啓動。它是一個特別的單元,每一個 主板上都有着各自的Bootloader。對於衆多的Android設備而言,它們的處理硬件有着很大的不同,由於Android的開源,各廠商都開發着 各自的Bootloader引導程序,因此它們各自有着不同的第三方自定義的系統Rom固件。這一點,在Apple的iOS設備上不曾見到,因爲統一的硬件與軟件

每一個Android設備有着一個Fastboot/Bootloader模式,它們引導着操作系統的核心的正常啓動。但是,我們需要知道的 是,Android操作系統是一個開源的平臺,它們的硬件平臺有很大的不同,對於硬件運行環境上,每一個製造廠商有着它們自己的 Fastboot/Bootloader模式。 比如,Motorola(摩托羅拉官方旗艦店)在旗下Android設備中加載着“eFuse”的指令,當你並沒有進行過任何的解鎖Fastboot/Bootloader模式而試圖升級或安裝或更新一個自定義的系統Rom固件時,它可能會損壞你的Motorola Android設備

然而,爲什麼Bootloader有鎖呢?

關於這個問題,其實是很好理解的,儘管Android操作系統是一個開源的平臺,但每一個製造廠商都想有着絕對的控制權,爲了與其他廠商有着區別, 它們各自都會定製自家的用戶界面、應用、引導程序等等。基於Bootloader引導程序有鎖的原因,我們很大部分不可能可以直接的升級或安裝或更新一個 自定義的系統Rom固件,因爲設備不能引導。這是需要相當注意的,否則極易損壞設備。

想必,爲什麼要解鎖Fastboot/Bootloader模式?這個疑問,已很簡單了吧。你想ROOT你的設備,你想要一個自定義的系統Rom固件,你想要一個更加好用的第三方ROM固件等等。這些首先要有一個可以隨意引導的程序,即自由的或稱之爲無鎖的Fastboot/Bootloader模式

我們需要注意的一些問題:

1、解鎖Fastboot/Bootloader模式時,可能會使保修相關服務失效

2、在解鎖Bootloader的過程中,可能會使設備恢復到出廠設備,即會移除包括設備內置存儲中的應用程序、聯繫人、信息等等重要資料,請先作好備份

3、在解鎖Bootloader的過程中,可能會損壞設備

 

對於一個android手機用戶加軟件工程師,刷機而不知道它的內部原理,那是很痛苦的。本着學習的心態,還是去研究了一番。

 

首先,你要知道智能手機就是一臺小電腦,如果你恰好用的是linux系統,那可以說兩者在系統層面沒有區別。因爲android就是linux內核外加java虛擬機。當你開機時,機器首先要啓動,CPU最先執行的一段程序就是BootLoader,這和電腦上的BIOS是一個玩意兒。它所做的事情就是初始化硬件,CPU時鐘之類的,以及加載內核文件。BootLoader可以分爲兩個階段。在階段一,做了一些初始化,在階段二,如果發現按鍵有特殊的組合,比如htc g2是回退鍵和開機鍵,就會進入fastboot模式。這裏要說的是,內核還沒有加載,所以更談不上多進程任務調度之類的概念,機器只是在順序執行一條條的指令。

 

BootLoader既然要做硬件初始化之類的,必然和硬件相關,所以它的代碼並非通用的,不同的硬件需要不同的BootLoader代碼,各大廠商可能都有自己的,並且加入開機畫面之類的。最常聽說的是uboot和hboot,後者是htc的bootloader。我們常說的刷機,是不會動bootloader的,只會動這之後的系統部分。

 

再說fastboot,它是bootloader後期進入的一個特殊階段。可以通過數據線與電腦連接,然後在電腦上執行一些命令,如刷系統鏡像到手機上。fastboot可以理解爲實現了一個簡單的通信協議,接收命令並更新鏡像文件,其他什麼的幹不了。

 

如果沒有進入fastboot,bootloader繼續執行,如果又發現有特殊的按鍵組合,比如htc g2上是home鍵和開機鍵,則會進入recovery模式。分析recovery.img鏡像文件就會發現,它裏面包含了一個kernel以及一個可執行程序recovery,以及一些初始化文件。從某種意義來說,這就是一個小型操作系統,和正常啓動進入的系統的kernel是一樣的,只是init及之後乾的事情不同。這裏的kernel和我們常說的linux內核還是有差異的,linux內核是包括kernel以及調度器內存管理等除顯示界面外完整系統。而kernel只是指內核init進程啓動前的那一段邏輯。

 

在recovery模式下,會加載了部分文件系統,所以纔可以讀sdcard中的update.zip進行刷機,當然,也可以清除cache和用戶數據。

 

講到這裏,我想說的是,既然recovery是一個小型操作系統並且有手機這樣現成的設備,我們可以基於它做些有趣的事,比如移植網絡協議及無線網絡連接邏輯,然後開發一個命令行版的新浪微博客戶端,這樣就可以用自己改造的系統發微博了。當然,先改一個hello world版的recovery再說。也許還可以基於這些實踐寫一些幫助學習操作系統的教程。

Recovery 本身的本質也是一個簡單Linux加一個Google 開發簡單圖形界面。它跟你在用的內核的boot.img分區的格式是完全一樣的。他的作用在於當你的產品裏的內核有問題時,你可以切換到Recoverty這個小操作系統裏用工具重新下載內核。因此如果打比方的話,象PC機的可引導的U盤修復盤。 
因爲Recovery本身功能比較單一,所以一般直接用Google的開發那個,但是也有著名的ROM組CM開發的Recovery,界面更爲友好。 Recovery刷機包是稱爲Google Update 格式。在用Recovery恢復時,刷機包通常放在SD卡里,所以這裏刷機一般稱爲卡刷。這種方法的優點就是不需要PC機即可以完成刷機。


fastboot 主要是用來與bootloader的USB通訊的PC命令行工具。他一般主要也用來向bootloader傳送刷機文件進行文件分區重燒。 因此在使用時,必須有一個PC機並且USB線要始終聯着。所以這種方式稱爲線刷。 用fastboot需要bootloader 支持,所以不是每一家公司產品都支的這個功能的。

recovery過程主要有兩個作用 :factory reset 和 OTA install。一般Android系統都有兩個分區 /boot /recovery。這兩個分區都可以引導系統。recovery mode從本質上來看就像是一個袖珍版的Linux。Android的上層結構(虛擬機)可以調用一個特定的類( RecoverySystem ) 來寫入命令參數以提供重啓之後recovery模式所必需的命令參數。
簡而言之,recovery模式其實方便了開發者升級系統和擦除相應的分區( /data和/cache )。在手機方面,這個功能可以體現在刷機的過程上。不過,對於一般用戶來說,這個recovery mode對於開發者意義更大。

 Android各種模式說明

http://www.onekeyrom.com/help/a_mcjs_15765.html

技術分享

Android系統相對開源,因此允許用戶對手機系統進行一定修改即刷機。因此對應不同的功能以及權限,其一般具備6個不同模式,分別爲一般啓動模式(normal mode)、安全模式(safe mode)、恢復模式(recovery mode)、引導模式(bootloader mode)、fastboot模式和診斷模式(diagnostic mode)。

 

一般啓動模式(normal mode)

這個模式的功能是正常啓動手機,開啓方法爲關機狀態下按電源鍵啓動。該模式即俗稱的開機,進入正常的系統,即用戶正常使用手機的系統。

 

安全模式(safe mode)

此模式和正常啓動一樣,但沒有登記Google,所以不能訪問Market或使用你的Google賬號。進入方法一般爲按住“menu”鍵,按電源鍵啓動手機,直至手機啓動完成鬆開“menu”鍵。該繫系統因不同廠家設置而不同,進入方法也有所不同。

恢復模式(recovery mode)

該模式下使用音量鍵上下進行選擇,電源鍵進行確定,當然現在市面上已經出現觸摸版的第三方recovery模式,允許用戶使用觸屏進行操作。該模式具有相對較高的修改權限,可進行打開命令解釋程序(shell),刷新映像文件(flash image),執行備份等。該模式可根據用戶的需要進行修改,因此有官方recovery模式以及第三方recovery模式。第三方recovery模式可以識別第三方rom包,因此可以用來刷機。而官方recovery一般不能識別第三方zip文件。進入方式一般爲就是音量鍵上+電源鍵。

引導模式(bootloader mode)

該模式的功能是從SD卡上安裝新的系統映像(DREAIMG.NBH),其中包括刷系統以及recovery,具有很高的修改權限。該模式基本每款手機都擁有,但其命名不一定相同。大多數Android手機解鎖或獲取root權限都使用模式進行。進入方法一般爲音量鍵下+開機鍵。

fastboot模式(fastboot mode)

該模式主要是在電腦上使用fastboot命令來刷新映像文件,並可以進行清理數據等一定的操作。進入方法一般爲按住音量鍵下+開機鍵啓動手機,直至屏幕出現FASTBOOT字樣後鬆開返回鍵。

診斷模式(diagnostic mode)

該模式是爲了測試手機各項功能的模式,一般在購買新手機時會使用到該模式以便對手機CPU、傳輸速率以及屏幕顯示效果等進行測試。進入方式因手機廠商設置不同而不同,一般是在撥號界面輸入一定的數字符號。

特殊模式說明

Downloading模式(俗稱挖煤模式)

三星安卓手機刷官方系統時使用該模式,配合電腦端odin軟件進行。當兩者配合使用時可對手機系統分區、內核、recovery等進行刷寫。一般進入方法爲音量鍵下+HOME鍵+開機鍵。

FTM模式(工廠測試模式)

該模式對用戶而言一般可用來刷機,當然部分機型需要配合電腦端RSD軟件進行,但該模式相對不穩定,因此建議用戶使用recovery模式進行刷機。進入方法一般爲音量鍵下+開機鍵直至出現FTM字樣即可。

T卡模式

中興手機刷官方系統使用的模式。一般將系統image文件夾(文件夾內需要有image.bin文件)拷貝至SD卡中並將SD卡插入手機,手機關機狀態下進入T卡模式即可自動識別到系統文件並自動進行刷入。一般進入方式爲音量鍵上+開機鍵+返回鍵。

SD卡升級模式

該模式爲華爲刷官方系統時使用。一般將dload文件夾拷貝至SD卡中並將SD卡插入手機,手機關機狀態下,同時按住音量鍵上+音量鍵下+開機鍵,即可自動刷入。

PS:當手機識別不到SD卡時,該模式會顯示粉屏,俗稱“粉屏模式”。

AP模式(或BP模式)

該模式存在於部分機型中,如moto defy等,其作用等同於fastboot模式,都需要配合電腦端軟件進行刷機操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章