首先下載 booting.exe,這得感謝製作bootimg.exe的作者,本來是為華為的機器做的分解工具,不過我們也可以拿來分解boot.img、recovery.img等,OK!先來談談這兩個文件的基礎,部分來自網絡。 boot和recovery映像的文件結構 boot和recovery映像並不是一個完整的文件系統,它們是一種android自定義的文件格式,該格式包括了2K的文件頭,後面緊跟著是用gzip壓縮過的內核,再後面是一個ramdisk內存盤,然後緊跟著第二階段的載入器程序(這個載入器程序是可選的,在某些映像中或許沒有這部分)。此類文件的定義可以從源代碼android-src/system/core/mkbootimg找到一個叫做bootimg.h的文件。 (譯者的話,原文是一個叫做mkbootimg.h的文件,但從Android 2.1的代碼來看,該文件名應該是改為bootimg.h了)。 /* ** +-----------------+ ** | boot header | 1 page ** +-----------------+ ** | kernel | n pages ** +-----------------+ ** | ramdisk | m pages ** +-----------------+ ** | second stage | o pages ** +-----------------+ ** ** n = (kernel_size + page_size - 1) / page_size ** m = (ramdisk_size + page_size - 1) / page_size ** o = (second_size + page_size - 1) / page_size ** ** 0. all entities are page_size aligned in flash ** 1. kernel and ramdisk are required (size != 0) ** 2. second is optional (second_size == 0 -> no second) ** 3. load each element (kernel, ramdisk, second) at ** the specified physical address (kernel_addr, etc) ** 4. prepare tags at tag_addr. kernel_args[] is ** appended to the kernel commandline in the tags. ** 5. r0 = 0, r1 = MACHINE_TYPE, r2 = tags_addr ** 6. if second_size != 0: jump to second_addr ** else: jump to kernel_addr */ ramdisk映像是一個最基礎的小型文件系統,它包括了初始化系統所需要的全部核心文件,例如:初始化init進程以及init.rc(可以用於設置很多系統的參數)等文件。如果你您希望瞭解更多關於此文件的信息可以參考以下網址: http://git.source.android.com/?p=kernel/common.git;a=blob;f=Documentation/filesystems/ramfs-rootfs-initramfs.txt 以下是一個典型的ramdisk中包含的文件列表: recovery映像包含了一些額外的文件,例如一個叫做recovery的二進製程序,以及一些對該程序支持性的資源圖片文件(當你您按下home+power組合鍵的時候就會運行這個recovery程序)。 典型的文件列表如下:
![]() 僅需要以上命令就會解開boot.img了! 如果是recovery.img那麼改名為boot那麼不是照樣能行了,呵呵,看到木有,哈哈!分解就是那麼簡單,按照上面命令,合成就如下了: bootimg --repack-bootimg OK!好了,修改大家就自己去奮鬥吧,其實說實話,安卓本來基於LINUX就是在那系統下玩的,用WINDOWS的就比較吃虧了。 如上,在windows下編輯的完全壓力很大的說,前面談那麼多啥base基址,cmdline命令行啊這些,就是為了在微軟下用這個工具打包時候好做這些工作,看圖,分解boot.img後出現的情況 ![]() woff,如果您要查看本帖隱藏內容請回復 ![]() 到這裡就完全打包解包無壓力了,額,recovery解包打包,就直接把他搞成boot.img封包後再搞回去就行了的。 ![]() |
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.