1. 程式人生 > >Android分割槽介紹及fastboot刷機教程

Android分割槽介紹及fastboot刷機教程

見好多論壇朋友對FASTBOOT刷機相當困惑和不解,抑或是相當害怕使用fastboot刷機.不管是什麼原因,我只需要告訴你,其實用fastboot很簡單,也很快捷。 
下面把我自己總結的一些方法寫出來,希望能給廣大G友在刷機路上助一臂之力。 

fastboot for windows 已加入附件內,請自行下載。 
只有一個檔案,下載後隨便放在你能找到的地方.在正式講刷機之前先講一下G1或者稱android的分割槽知識 
splash1:開機畫面,使用Nandroid backup備份系統後的檔案為splash1.img 

recovery:該分割槽是恢復模式(即開機按Home+power進入的介面),使用Nandroid backup備份為recovery.img 

boot:核心啟動分割槽,使用Nandroid backup備份為boot.img 

system:Android系統部分,目錄表示為/system,通常為只讀,使用Nandroid backup備份為system.img 

cache:快取資料夾,目錄表示為/cache,事實上除了T-mobile的OTA更新外,別無用處,使用Nandroid backup備份為cache.img 

userdata:使用者安裝的軟體以及各種資料,目錄為/data,使用Nandroid backup備份為data.img 

因此對於刷機一般可以這麼理解: 
1. 修改開機畫面, 修改的是splash1 
2. root時刷的是所有分割槽 
3. 刷test_keys,更新的應該是recovery 
4. 使用update.zip刷是更新boot、system 
5. 恢復出廠設定, 清空的是userdata和cache 
明白這些之後就很好理解,一般無須更新recovery.IMG,正常情況下只需要更新BOOT和SYSTEM即可.但依我看來這兩者是相互依存而不可分割的.好下面開始說刷機步驟。
進入手機的SPL模式(power+相機) ,且驅動已經安裝。
驅動已經以附件上傳,若在我的電腦裝置管理中發現此情況,圖1亦是未正確安裝驅動,只需要右鍵更新驅動,且指向你從我這裡下載的驅動即可。

01.jpg

描述:圖1



無論你從哪裡下載到一個包含boot.img,system.img只要含有這兩個檔案的檔案你就可以刷機了,將剛才下載的fastboot拷貝到此資料夾,圖2

02.jpg

描述:圖2



在開始-執行CMD 如下圖3

03.jpg

描述:圖3



此時可以看見開啟的命令列
用cd命令開啟fastboot所在的資料夾。 圖4

04.jpg

描述:圖4



輸入 fastboot devices 圖5

05.jpg

描述:圖5



若出現我HTxxxxxxx fastboot,這就證明你已經成功了一半,ok,接下來就是擦除分割槽,使用fastboot erase xxxx 
如下圖 只需擦除boot,system,也可以是userdata也可以是recovery。。呵呵 看實際需要了。
Ok 看圖6

06.jpg

描述:圖6



Okay啦 吼吼 接著擦除system 圖7

07.jpg

描述:圖7



依然OKAY。。userdata和recovery我就不擦了,,命令也是
Fastboot erase userdata 敲完回車
Fastboot erase recovery 敲完回車。
Ok,擦除完了那就開始刷進去吧。。。看圖8

08.jpg

描述:圖8



先flash boot.img。命令很簡單
接著flash system.img 圖9

09.jpg

描述:圖9



也okay,,,像之前備份的userdata或者是recovery,再未擦除就不用在flash了。若需要語法如下
Fastboot flash userdata userdata.Img(確定在備份裡面是這個名字或者之前又這個分割槽)
Fastboot flash recovery recovery.img
Ok下一步重啟 圖10

10.jpg

描述:圖10



至此刷機全部結束,等待你的小G啟動起來就OK了。。
有時需要在電腦端安裝apk程式時,這時候是不許用fastboot的,只需要進入SDK-tools下面執行 adb install xxx.apk既可,前提是你要安裝的程式和adb同一目錄。

由於底層研發的習慣,我先看了看檔案系統在Nand Flash中的分佈情況:
我在Ubuntu下使用adb連線了G1,然後:

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00020000 "misc"
mtd1: 00500000 00020000 "recovery"
mtd2: 00280000 00020000 "boot"
mtd3: 05a00000 00020000 "system"
mtd4: 01e00000 00020000 "cache"
mtd5: 059c0000 00020000 "userdata"
mtd6: 10000000 00020000 "msm_nand" 

從中可知:
misc             :0.25MB:是存放開機畫面的分割槽,也就是開機時看到的那個白色的大G1字樣(預設為白色"T-mobile G1")
recovery         :5MB:是G1的恢復模式映象區(即開機按Home+End進入的介面)
Boot             :2.5MB:Linux作業系統核心和ramdisk映象一起打包後存放的分割槽
system             :90MB:是system.img存放的分割槽,啟動後此映象掛載在根目錄下的system資料夾中。
cache             :30MB:是快取臨時資料夾,掛載為/cache目錄,據說是除了T-mobile的OTA更新外,別無用處。
userdata         :89.75MB:使用者安裝的軟體以及各種資料,掛載為/data目錄

msm_nand     :256MB:代表整個Nand Flash,不是一個分割槽。但是所有的分割槽加起來才217.5MB,小於256MB,說明還有剩餘的flash空間。(此分割槽在大部分機上不存在,不影響使用)

G1所使用的Nand Flash是K5E2G1GACM,但是在三星的網上居然沒找到Datasheet,網上也沒有google到!

模擬器中的輸出是這樣的:
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 04000000 00020000 "system"
mtd1: 04000000 00020000 "userdata"
mtd2: 06100000 00020000 "cache"

補黑色臺版的G2分割槽 :

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00020000 "misc"
mtd1: 00500000 00020000 "recovery"
mtd2: 00280000 00020000 "boot"
mtd3: 05a00000 00020000 "system"
mtd4: 05000000 00020000 "cache"
mtd5: 127c0000 00020000 "userdata"

可以看到 cache 和 userdata變大了,因為 G2的ROM 為512MB的。

從上面的資料我麼可以發現一個現象:無論是G1還是G2,所有的分割槽加起來都比整個Nand flash小38.5MB,這些空間應該另有他用,其中有一個用處就是存放bootloader。但是從以往的經驗來看,bootloader不可能有38.5MB,肯定另有用處,可能用於虛擬記憶體(猜測)

///////////////////////////////

大容量ROM的Android手機一般都把ROM的一部分分為系統分割槽,其他的都虛擬為內建SD卡,比如三星和華為的手機都是這樣,標稱的大ROM實際上大部分都虛擬成了內建SD卡。

所以,由於是分割槽時設定的容量,ROM是可以調整的,比如一塊硬碟上,c盤和d盤、e盤的大小都是可以調整的,區別是安卓系統使用者自己很難調整。

先看安卓Android系統的分割槽,安卓系統一般把ROM晶片分成7個區,如果再加上內建SD卡這個分割槽,就是8個:
hboot分割槽———-負責啟動。
radio分割槽———-負責驅動(通訊基帶)。
recovery分割槽——-負責恢復。
boot分割槽———–系統核心。
system分割槽———系統檔案。
cache分割槽———-系統快取。
userdata分割槽——-使用者資料。

大家看到沒有,前6個區的容量在系統資訊裡面是看不出來的,我們看到的ROM總容量,其實就是第7個區userdate區的大小,這個區主要裝一些軟體,是使用者可以使用的分割槽。這個分割槽的大小直接影響到安裝軟體的數量。也就是說userdate區就是我們常說的“可用ROM”。

在安卓裡,雖然軟體可以安裝到卡中,但是一些系統軟體最好還是安裝到userdata分割槽,否則會出現載入的一些小問題,比如使用的桌面軟體和一些在桌面上顯示外掛的軟體。並且就算你把軟體都裝到卡里,userdata分割槽還是會不斷減小。就像在Windows裡,就算你把軟體裝到D盤,仍然會在c盤生成一些系統檔案,佔掉c盤空間一樣。

///

“system”區儲存了android系統目錄的所有資料,機器啟動後的全部系統主要都在這裡(在系統啟動後會掛載到system/目錄)。

“userdata”區將儲存了android資料目錄中的所有資料(在系統啟動後會掛載到data/目錄,裡面是會有很多應用資料以及使用者的preference之類的配置資料,我們在手機設定裡看到的手機記憶體空間就是指這裡)。

“userdata2”區是使用者可自己支配的,可以存放自己喜歡的圖片、音樂等(在系統啟動後會掛載到data/HWUserData/目錄,我們在手機設定裡看到的內部SD卡空間就是指這裡)(這2.2版的沒有,和userdata合併了)。

“cache”區是快取空間,程式或系統用到的快取資料和指令就存放在這,cpu在呼叫和執行指令時會優先呼叫這裡的。(在系統啟動後會掛載到cache/目錄)。

“boot”區是存放引導手機啟動時的必要的系統,包含一些硬體底層的驅動,主要分為ramdisk和linux核心兩大塊。(在系統啟動後掛載到根目錄下)。

“recovery”區與boot的相似,但是恢復時啟動的系統,比boot多了些恢復用的程式與資源。(只在進入recovery模式才掛載)

“splash”區是開機第一個畫面,開機啟動時用到的。(不知掛載到哪了?)

“misc”區是有Bootloader Control Block (BCB) ,用於存放recovery引導資訊。(猜是在進入recovery模式才掛載)