2012年12月29日 星期六

認識 Android 的 SPL

Android中的SPL
  SPL英文全稱是Second Program Loader,“第二次裝系統”,就是負責裝載操作系統到RAM中。另外SPL還包括許多系統命令,如mtty中使用的命令等。SPL損壞了還可以用燒錄器重寫。
  SPL一般提供這幾部分功能:檢測手機硬件、尋找系統啟動分區、啟動操作系統為系統的基本維護提供操作界面,可以通過數據線與操作終端(如PC)建立連 接,並接受和執行相應命令。它裡麵包含許多命令,像r2sd,l,doctest(危險命令,他會擦除gsmdata)等。我們常說的三色屏就是由SPL 驅動的。檢測SD卡,當你把一些特殊製作的SD卡插入後,SPL可以在啟動時校驗並根據SD卡內容刷機或執行一些命令。這有點類似於PC 的從軟驅啟動。簡單點說,SPL就相當於PC的BIOS。
  SPL主要作用就是引導系統啟動。
  解釋一下Android的SPL的大致含義,希望對您有所幫助。
  SPL除了包含手機的bootloader啟動android外,還包含其他一些功能,如刷nbh,支持fastboot等等。
  G1 Original SPL
  VER: HBOOT-0.95.0000
  ZIP: G1OrigBootloader_nocheck.zip
  MD5: ae58b427b797707c453f3b3fa9d13c76
  大家說的三色屏就是它,由damien667 dump出來的。該版本不支持fastboot,所以沒法刷直接刷img文件。在這裡簡單說下G1的破解,大家都知道G1的破解就是把recovery替 換成使用驗證簽名為testkey的,使我們能夠刷修改後有root權限的自製rom。在TC4-RC29 TC5-RC7的nbh在09年1月1號被xda的chavonbravo泄漏後,我們才能通過這個spl降級來破解,獲取系統權限,然後刷 testkey的recovery,然後就開始了豐富多彩的刷機生涯。

玩Android 必須知道 什麼是Recovery、HBOOT、SPL、RADIO、APP2SD


真正的智能手機系統是以電腦為參照物的,所以它應該有操作系統(我們一般稱呼它為ROM)、硬件驅動(信號模塊,我們一般稱呼它為Radio)、初啟動用
的CMOS、BIOS(我們一般叫它SPL,調試工程模式)、恢復和操作系統用的字符命令窗口(比如DOS那種命令執行系統,我們一般在手機叫它超級終端
或者Superuser)、系統管理員的權限(不是破解硬件,不是IP所謂的解鎖,而是類似Win7
中管理員的權限,我們一般叫它root權限)、執行底層操作的界面(進行Ghost操作的工程模式,我們一般叫它recovery)



一、什麼是recovery?



recovery 就是你用 home鍵+開機鍵開機後能進入的一個界面(現在是音量下+電源)根據機型不同進入模式不一樣,在這個界面你可以直接用sd 卡上的zip的rom升級或者備份你的系統。

此外,一般刷rom之前最好wipe一下(wipe只是抹除rom 以外的個人數據,不會影響rom 本身),也就是返回出廠設置一下比較好,但是這樣就會丟失你的所有軟件,短信彩信,聯繫人(備份在google上沒有關係)和設置等等,備份或者不wipe 都可以

recovery的界面介紹

1、Reboot system now——重啟系系統
2、Backup/Restore——備份和還原
可以完整的將系統備份至SD卡中,適合經常刷機的朋友。備份還原中還包含以下選項

Nand backup——Nand 備份
Nand + ext backup——Nand 備份(系統和ext 分區一同備份)
Nand restore——還原(就是還原3-1、3-2 的最後一次備份)
BART backup——BART 備份 (包括系統和ext 分區)
BART restore——還原最後一次的BART備份


3、Flash zip from sdcard——從sd卡根目錄的.zip ROM 刷機包刷機
這項算是常見的了,現在的新版本的recovery,一般都不需要把刷機包重命名為UPDATE.ZIP了,可以直接刷機。


4、Wipe——清除數據

這一項一般是在刷機前需要做的,清空個人數據,一般這個大項還包括以下的小項。
Wipe data/factory reset——清除內存數據和緩存數據
Wipe Dalvik-cache——清除緩存數據 + ext 分區內數據
Wipe SD:ext partition——只清除ext 分區內數據
Wipe battery stats——清除電池數據
Wipe rotate settings——清除傳感器內設置的數據

5、Partition sdcard——分區sd 卡

這個選項主要是用來做APP 2 SD的,需要將卡分為LINUX下的格式ext,一般有以下選項。
Partition SD——自動為sd 卡分區
Repair SD:ext——修復ext 分區
SD:ext2 to ext3——將ext2 分區轉換為ext3 分區(推薦)一般都是使用這個

6、SD:ext3 to ext4——將ext3 分區轉換為ext4 分區



二、 什麼是fastboot

從字面上來看是【快速啟動】的意思,也算是一個刷機界面,不過比recovery更加底層.這個底層是更加接近硬件層的意思.

兩個都很重要,不過fastboot更為重要,當你不能進入recovery的時候,不要緊張,你還能進fastboot輓救,不過當你連fastboot都不能進入的時候,那可真就是磚了。

為了使用Fastboot功能,您必須root您的設備,並獲得S-OFF的SPL,你的電腦還必須裝有ADB驅動。

進入Fastboot的方式是關機狀態下按返回+開機。(現在是音量+開機鍵)

FASTBOOT可用命令有:

update <文件名> 從官方update.zip升級系統.該update.zip必須是官方的

flashall ’flash boot’ + ‘flash system’

flash <分區名> [<文件名>] 將文件寫入分區.文件必須正確的格式.分區名有但不限於system,recovery,boot,splash1,hboot,radio,userdata,cache

erase <分區名> 清空一個分區.

getvar <參數名> 顯示一個啟動參數

boot <內核文件> [<ramdisk文件>] 將電腦上的內核下載到手機並用該內核啟動系統.

flash:raw boot <內核文件> [<ramdisk文件>] 創建boot.img並下載到手機啟動系統.

devices 列出所有與電腦連接的設備.

reboot 正常啟動系統

reboot-bootloader 啟動系統到hboot

選項:

-w 清空用戶數據分區和緩存分區.相當於recvery中的"wipe data/factory reset"

-s <串口號> 置頂要操作的設備的串口號

-p <產品名> 指定要操作的設備的產品名.比如hero,bravo,dream…

-c <命令行> 用命令行替換系統的啟動命令行.

分區解釋:

system:系統分區.我們刷ROM一般就是刷的這個分區

userdata:數據分區

cache:緩存分區

recovery:Recovery分區

boot:存放內核和ramdisk的分區

hboot:這個是SPL所在的分區,很重要,也是fastboot所在的分區,刷錯就真的變磚了。(所以一般不要輕易刷這個)

splash1:這個就是開機第一屏幕了

radio:這個是無線所在的分區

misc:其他分區.放的是htc的一些東西

比如你的機器是G3.那麼您的機器需要具備的條件是:SPL版本1.76.2007 S-OFF

現在您需要刷recovery.那麼您需要找對recovery版本.推薦RA-hero-1.6.2.img

將您的RA-hero-1.6.2.img和fastboot.exe放入系統的某一目錄.比如D:

點擊開始–>運行–>輸入cmd–>迴車.

在黑色的窗口中輸入.

D: <迴車>

fastboot.exe flash recovery d:RA-hero-1.6.2.img <迴車>



三、什麼是SPL、HBOOT、Bootloader

什麼是SPL?

在HTC的Android 系統的系列手機中,HBOOT就是SPL(WM機型,叫SPL,安卓都叫HBOOT)

SPL英文全稱是SecondProgramLoader,“第二次裝系統”,就是負責裝載操作系統到RAM中。另外SPL還包括許多系統命令,如mtty中使用的命令等。SPL損壞了還可以用燒錄器重寫。

SPL一般提供這幾部分功能:檢測手機硬件、尋找系統啟動分區、啟動操作系統為系統的基本維護提供操作界面,可以通過數據線與操作終端(如PC)建立連接,並接受和執行相應命令。它裡麵包含許多命令,像r2sd,l,doctest(危險命令,他會擦除gsmdata)等。我們常說的三色屏就是由SPL驅動的。檢測SD卡,當你把一些特殊製作的SD卡插入後,SPL可以在啟動時校驗並根據SD卡內容刷機或執行一些命令。這有點類似於PC 的從軟驅啟動。簡單點說,SPL就相當於PC的BIOS。

SPL有什麼用?

SPL主要作用就是引導系統啟動。


四、什麼是RADIO?

這個Radio指代的是無線通訊模塊,就是手機裡面負責信號部分的模塊,PDA類型的手機,基本都強調這麼個概念。一個是PDA,一個是手機(貌似是句廢話- -),舉個很簡單的例子,以三星的PPC手機為例,比如i908,在刷機的時候(所謂刷機就是重裝系統)一般都是分兩部分,第一部分刷手機部分,第二部分刷PDA部分,而且兩部分基本不相干。 大家也可以這麼去理解G1,Radio負責信號部分,固件包呢,是負責電話(包括電話功能跟PDA功能)。

最簡單的你可以把它理解為無線(包括藍牙 通話 WIFI)的驅動程序。

RADIO有什麼用?

刷新版的RADIO可以解決通話或者WIFI以及藍牙的一些問題,比如正在聽音樂,來電話了,接完電話歌曲不播放了,這種常見問題。



五、什麼是APP2SD(現在IS,DHD,的可用ROM很大,這個問題可以忽略)

Google 手機的軟件為了安全性和穩定性都是默認安裝到手機內存裡,但是手機內存有限,所以我們會做app2sd 操作,來讓我們安裝的軟件放到sd卡上,而Google 的android 系統是基於Linux 的,所以存儲卡上本身的FAT格式是不會被識別的,所以我們要分區(第二分區)出來,格式成Linux 認識的ext2 或3 或4 格式,在用鏈接命令,把這個分區映射成一個系統文件夾system/sd(大概這個意思),把所有的軟件裝到這個“文件夾”下,這就是app2sd 的操作。需要ROM 支持並開啟app2sd 功能。

app2sd 的操作其實是犧牲了一部分軟件的速度和穩定性來換取更多的手機內存安裝更多的軟件。另外,app2sd只是把軟件放到了sd卡上,運行軟件還是需要占用手機的內存的,所以,你裝了軟件之後,一般手機內存還是會減少一些。你如果安裝的軟件在70個以內,個人覺得沒有必要,呵呵,如果很多遊戲軟件除外。此外,使用app2sd 最大的好處就是,刷一個帶app2sd 的rom 之後,以後升級這個rom(依然帶app2sd)的時候,你的軟件都會完整保存(個別除外,比如htc input chinese需要重新添加幾個文件到system/lib下),不過很多ROM 是需要Wipe ext 分區的,也就不能保留了。

目前來看我們現在所使用的Android 各種軟件暫時還沒有進行app2sd 的必要(當然你感覺IS 不夠你安裝 ,你也可以分區,不過目前貌似只有ROOT後才行,嘿嘿)。


 六、什麼是金卡

一般來說,官方刷機包通常加入了對手機地區的校對,比如非港版手機一般無法直接刷針對港版手機發布的升級包(刷機包),這時候,需要製作一個特殊的金卡來
使刷機包跳過對手機地區的檢測,直接進行刷機,從而達到強刷的效果。實際上,金卡只是一張普通的SD卡,通過一些簡單的操作,來使普通SD卡有金卡的功
效,同時,SD卡里的數據並不會消失,SD卡仍可正常使用。



七、ROOT幹什麼用的?

root 就是你手機的boss,它可以訪問和修改你手機幾乎所有的文件,這些東西可能是製作手機的人不願意你修改和觸碰的東西,因為他們有可能影響到手機的穩定,還容易被一些hacker 有機會入侵你的手機(貌似還沒有出來這類黑客)。

既然root 這麼危險,我們為什麼還要去獲取它?其實用root 的權限主要是因為我們生在天朝,我們很多東西是受限制的,我們只能利用這些權限來做我們被限制的去做的事情,比如Google 禁止我們看到市場裡很多免費或付費軟件,我們可以用marketenabler 來進去看;再比如國慶以來** 把我們的市場幹掉了,很多朋友只能看不能下,不能綁定gmail,我們可以修改hosts 來搞定他們,但這些都需要root權限。

比如目前所有在安桌上截屏的軟件都需要root 權限,沒有root 權限,像Drocap、Shootme、Picme等等這類截屏軟件就不能使用



認識 Android 的 Hboot

作用:

hboot啟動後,會檢查安全鎖的狀態:
  如果檢查後發現是S-ON,說明安全鎖是打開的,那麼hboot在完成引導啟動的同時,會將system和recovery分區做寫保護。
  如果檢查後發現是S-OFF,說明安全鎖是關閉的,那麼hboot在完成引導啟動的同時,會將system和recovery分區的寫保護打開。
  當手機通過hboot啟動,hboot在檢查安全鎖是什麼狀態的時候,無論檢查結果是什麼,這個修改過的hboot都會認為安全鎖是關閉的,即讓hboot自己欺騙自己,認為安全鎖處於S-OFF狀態。實際上此時的安全鎖還是S-ON,只不過顯示出來是S-OFF罷了。
  這也就為下面這種情況找到了合理的解釋:
  機器狀態為ENG S-OFF的朋友刷了官方包,然後ENG變回SHIP,S-OFF變回S-ON。但機器狀態為SHIP S-OFF的朋友進行同樣的操作,卻不會失去S-OFF。
  因為官方包是一個完整的刷機包,在更新過程中,會把hboot覆蓋掉,那麼,當這個被修改的hboot被替換成官方原版的hboot後,我們的機器也就恢復到了原始的SHIP狀態。此時,因為ENG S-OFF是一種假象,所以,S-OFF就變回了S-ON,但是因為SHIP S-OFF是真的把安全鎖關了,所以,S-OFF還是保持不變。
  既然你刷了ENG的hboot,那麼他就會一直都顯示S-OFF,所以不會有ENG S-ON的情況出現。
編輯本段HBOOT命令
  安卓手機可以給我們帶來的樂趣,體現在方方面面,隨處可刷的ROM!同樣的,刷ROM也是一項安卓具備的獨特功能,但作為刷ROM的前提條件,我們首先要了解手機的各項特徵,接下來,我們就進入安卓手機的工程模式,也就是HBOOT模式,了解一下手機的各項基本信息參數,同時也是非常重要的幾項信息。可以看到手機中會顯示如下參數。
  BRAVO PVT1 SHIP S-ON
  HBOOT-0.93.0001
  MICROP-031d
  RADIO-5.10.05.23
  Aug 10 2010,17:52:18
  注:當然以上信息,可能會與你的手機內容所顯示的並不相同,但不妨礙演示,大家只要了解它們所代表的內容便可以了。
  BRAVO:這個是手機型號的內部開發代號。
  PVT(或者是EVT,DVT,CVT):是代表手機的版本類型。
  一台手機從研發到上市,可能會經歷多次版本上的調試和改動,版本類型標誌著機器是什麼時候的產物,如下:
  EVT:工程機,研發階段機器的型號;
  DVT:開發機,特殊開發用途機器的型號;
  CVT:商用機,交付運營商的機器的型號;
  PVT:量產機,最終上市的零售版機器的型號。(PVT1:第1批量產機)
  SHIP/ENG:手機HBOOT(SPL)的版本。
  SHIP:shipment的縮寫,出貨的意思,零售版的HBOOT版本。
  ENG:Engineer的縮寫,工程的意思,修改版的HBOOT版本。
  S-ON(或者是S-OFF):
  S代表Security Lock,即安全鎖。HTC在手機內部設置了一個安全鎖,用來控制系統分區的讀寫狀態。
  S-ON:安全鎖開;
  S-OFF:安全鎖關。
  如果你需要對關於S-OFF和S-ON的詳細內容解讀,可以參考:安卓手機刷機教程之s-off和s-on詳解
  HBOOT-0.93.0001
  這裡顯示了HBOOT的版本號,HBOOT是一個很特殊的部分,刷壞了這裡,手機就會變磚,類似於升級電腦的BIOS,刷錯了BIOS,你只能返廠用特殊的擦寫工具來恢復了,所以,對HBOOT的操作要特別的注意,如非必要,不要去輕易刷寫此分區!
  RADIO-5.10.05.23
  這裡顯示了RADIO的版本號,同樣的,RADIO會隨著官方系統的升級而跟著升級,RADIO是負責信號和硬件驅動的,理論上講,應該是越高版本越好,當然也不是絕對,也需要要看情況的,就像電腦上的驅動,最新的並不一定是最好的。