Android系統分區介紹
hboot——系統開機引導類似電腦BIOS,這塊刷錯手機就會變成磚
radio——通訊模塊、基帶、WIFI、Bluetooth等銜接硬件的驅動軟件
recovery——系統故障時負責恢復
boot——Linux嵌入式系統內核
system——系統文件、應用
cache——系統運行時產生的緩存
userdata——用戶使用APP產生的緩存數據
讓我們從 Android 手機/平板電腦的內部存儲器分區列表開始吧。它們是:
- /boot
- /system
- /recovery
- /data
- /cache
- /misc
另外,還有 SD 卡相關的分區:
- /sdcard
- /sd-ext
需要注意的是大部分 Android 設備通常只有 /sdcard 分區,而 /sd-ext 分區只在少數設備上可以看到。現在,我們來看看劃分出的這些分區的內容和目的吧。
/boot
顧名思義,這個分區負責設備的啓動。它由 kernel 和 ramdisk 構成。如果沒有這個分區,那麼設備將無法開機。只有在極必要的時候纔可以在恢復模式下刪除該分區,並且一旦刪除,在重新燒入一個新的分區(可以通過刷入一個帶有 /boot 分區的 ROM 完成)以前務必不要重啓設備。
/system
這個分區包含了整個操作系統除 kernel 和 ramdisk 之外的其它部分,包括 Android UI 和設備上預裝的 APP。刪除這個分區只會同步將 Android 系統從設備上卸載掉,而不會導致設備不能重啓,因此你依然可以順利讓設備進入到 recovery 或 bootloader 模式來爲它重新刷入一個新的 ROM。
/recovery
recovery 分區相當於一個備用的 boot 分區,利用它我們可以使設備啓動到恢復模式窗口來進行一些高級的恢復和維護操作。想了解更多關於該分區的知識,可以閱讀《guide to ClockworkMod recovery》中的“About Android Recovery”章節。
/data
這個分區也被稱作 /userdata,是用戶數據被存儲的地方——也就是說你的聯繫人、短信、配置文件和你自己安裝的 APP 都位於這裏。刪除這個分區相當於將你的設備恢復出廠設置,你的設備會變得和你第一次開機或最後一次刷入官方/自定義 ROM 後一樣。你在設備上點擊清除用戶數據或恢復出廠設置按鈕後,實際上清除掉的就是這個分區。
/cache
這個分區中存放的是 Android 系統中經常被訪問的數據和 APP 的部件。刪除這個分區不會對你的個人數據造成影響,這個分區上的數據會隨着你繼續使用設備被重新收集並存儲在這裏。
/misc
這個分區中包含了各種以開關量形式保存的系統配置,包括 CID(Carrier or Region ID)、USB配置和某些硬件配置等。這是個很重要的分區,如果它遭到了破壞或有數據丟失,那麼設備的一些功能可能無法正常使用。
/sdcard
這個分區爲 SD 卡所屬,和內部存儲空間無關。你可以按照你喜歡的方式來使用這個分區,用來存儲多媒體文件、文本文檔、ROM鏡像等等。刪除它不會帶來任何問題(當然如果這個分區上有你需要的重要數據,那麼最好在刪除分區前先將它們備份到電腦上)。有的 APP 會將它們的數據和配置信息保存在 SD 卡上,這種情況下刪除該分區會使這些數據丟失。
在同時具備內部存儲空間和外部 SD 卡的設備上,比如三星Galaxy S 和某些平板電腦,/sdcard 分區始終代表內部存儲空間。此時外部 SD 卡通常會使用其它名稱的分區來表示,不同設備上名稱可能有所不同,比如三星Galaxy S系列的設備使用 /sdcard/sd 來表示,也有其它的一些設備使用 /sdcard2 這樣的名字。和 /sdcard 分區不同,系統或 APP 並不會主動在 /sdcard/sd 或 /sdcard2 這類分區上存放數據,所有出現在這類分區上的數據肯定都是用戶自己添加的。同樣,你可以在對你覺得必要的數據進行備份後隨意刪除這些分區。
/sd-ext
這並不是標準的 Android 分區,但單獨劃分出這個分區正在自定義的 ROM 上變得流行。只有在開啓了 APP2SD+ 或者 data2ext 功能的 ROM 才支持這麼做,它實際上是在 SD 卡上劃分出來一塊空間作爲 /data 分區來使用。這對於原本只爲原生 /data 分區預留了少量存儲空間的設備來說非常有用。用戶可以通過刷入支持這個功能的 ROM 的方式來擴大 /data 分區的容量,從而安裝更多的 APP。刪除這個分區和刪除 /data 分區的效果一樣,聯繫人、短信、APP、配置文件都會丟失。
行文至此,你是不是對 Android 分區更瞭解了呢?你應該知道了當你刷入一個需要刪除某些分區的 ROM 前,哪些數據會丟失,哪些數據因此應該備份了吧。
首先需要準備好刷機包,可以是自己編譯的,也可以是從別處拷貝的,但一定要確保刷機包適用於你的 Android 設備。然後解壓刷機包,解壓後我們可以得到 boot.img、recovery.img、system.img、bootloader 文件,正是這些文件構成了 Android 設備的系統。
讓設備進入 fastboot 環境。有 2 種方法:
執行命令 adb reboot bootloader
或者
同時按住 增加音量 和 電源 鍵開機。
【命令執行流程】
在設備進入到 fastboot 環境後,根據需求執行下面的命令進行刷機:
fastboot flashing unlock # 設備解鎖,開始刷機
fastboot flash boot boot.img # 刷入 boot 分區。如果修改了 kernel 代碼,則應該刷入此分區以生效
fastboot flash recovery recovery.img # 刷入 recovery 分區
fastboot flash country country.img # 刷入 country 分區。這個分區是開發組自己劃分的,別的 Android 設備上不一定有
fastboot flash system system.img # 刷入 system 分區。如果修改的代碼會影響 out/system/ 路徑下生成的文件,則應該刷入此分區以生效
fastboot flash bootloader bootloader # 刷入 bootloader
fastboot erase frp # 擦除 frp 分區,frp 即 Factory Reset Protection,用於防止用戶信息在手機丟失後外泄
fastboot format data # 格式化 data 分區
fastboot flashing lock # 設備上鎖,刷機完畢
fastboot continue # 自動重啓設備
fastboot -S 300M flash system system.img //解決fastboot 刷 system.img 尺寸限制問題
adb reboot bootloader -- 進入fastboot模式
fastboot devices -- 查看設備是否連上
adb reboot recovery 手機會重啓到recovery卡刷模式
adb reboot bootloader 手機會重啓到bootloader(fastboot)線刷模式
adb reboot edl 手機會重啓到9008刷機模式!僅限高通部分機型!慎用!
解鎖bootloader和上鎖: fastboot oem lock 和 fastboot oem unlock
adb wait-for-device #等待設備
adb reboot-bootloader #這個是重啓到bootloader界面 默認是fastboot。可以先重啓到這裏再刷入boot.img
fastboot flash boot boot.img #這個是刷入boot的命令。官解的要手動刷一次。
fastboot flash recovery recovery.img #刷入recovery 已有recovery的可以跳過。
fastboot erase boot #擦除boot分區
以下兩個是一樣的 有加-w 跟 沒有加-w 的區別
fastboot erase system -w #擦除system分區 擦除 userdata分區和cache分區
fastboot erase system #擦除system分區
fastboot erase cache #擦除cache分區
fastboot erase userdata #擦除userdata分區
fastboot update update.zip #將update.zip刷入
fastboot reboot #重啓手機
1.Fastboot簡介
Fastboot是Android快速升級的一種方法,Fastboot的協議fastboot_protocol.txt在源碼目錄./bootable/bootloader/legacy下可以找到。
Fastboot客戶端是作爲Android系統編譯的一部分,編譯後位於./out/host/Linux-x86/bin/fastboot目錄下。
sudo fastboot flash bootloader u-boot.bin
sudo fastboot flash kernel uImage
sudo fastboot flash system system.img
sudo fastboot flash userdata userdata.img
sudo fastboot flash ramdisk ramdisk-uboot.img
sudo fastboot erase cache
fastboot erase config
一次燒寫boot,system,recovery分區:
(1)創建包含boot.img,system.img,recovery.img文件的zip包。
(2)執行:fastboot update {*.zip}
燒寫開機畫面:
fastboot flash splash1 開機畫面
2.2 重啓系統
sudo fastboot reboot
2.3 不燒寫flash情況下調試
sudo fastboot boot uImage 或者u-boot.bin
2.4 查看版本號
sudo fastboot getver:version
2.5 復位到bootloader
sudo fastboot reboot-bootloader
2.6 命令格式
主機端發送字符串的命令,字符串小於等於64個字節,客戶端首先返回四個字節的內容,是OKAY、FAIL、DATA、INFO之一,隨後跟着是信息或數數據。
2.7 清空分區
fastboot erase {partition} 例:fastboot erase boot或fastboot erase system等。
fastboot erase boot
fastboot erase system
fastboot erase data
fastboot erase cache
上面的命令也可以簡化成一條命令
fastboot erase system -w
Android 擦除nv數據:
adb reboot bootloader
fastboot erase fsg
fastboot erase fsc
fastboot erase modemst1 ///擦除mdem文件
fastboot erase modemst2 ///擦除mdem文件
刷入新的modem文件
android 擦除nv數據:
adb reboot bootloader
fastboot erase fsg
fastboot erase fsc
fastboot erase modemst1
fastboot erase modemst2
---------------------------------------
手機刷機方式:
打開 USB調試,使用命令
adb reboot edl (進入9008模式),
方法2,當有時刷了一個有問題的版本,只能進入fastboot卻不能連接adb時,可用下面這方式(該方法本人未成功過,一直提示找不到該命令):
C:\Users\xxx>fastboot oem edl
...
FAILED (remote: unknown command)
finished. total time: 0.001s
進入手機fastboot模式,執行命令
fastboot oem edl
進入 高通模式9008模式 時,手機黑屏,但是連接上電腦有反應,設備管理器 可以見到 一臺串口爲9008的設備
方法三:
確保手機已處於關機狀態中,同時一起按住 音量上鍵 與 音量下鍵 ,然後連接USB數據線,當端口識別正確即可進入9008模式(),