當前位置:編程學習大全網 - 源碼下載 - 怎樣修改安卓bootimg內核怎樣修

怎樣修改安卓bootimg內核怎樣修

Android 產品中,內核格式是Linux標準的zImage,根文件系統采用ramdisk格式。這兩者在Android下是直接合並在壹起取名為boot.img,會放在壹個獨立分區當中。這個分區格式是Android自行制定的格式。

Android開發時,最標準的做法是重新編譯於內核和根文件系統,然後調用Android給的命令行文件mkbootimg(out/host/linux-x86/bin/)來打包。?

在制作手機ROM時,有時會單獨編譯內核或抽出根文件進行修改內容,比如我只編譯內核,其余的地方不變。這樣重新安裝巨大的Android開發環境實在不劃算。因此很多boot.img解包工具被人開發出來,這壹些工具都是把內核和根文件系統從壹個現成的boot.img抽取出來,修發後再次打包還原。

壹.常見的解包工具

因為boot.img的格式比較簡單,它主要分為三大塊(有的可能有四塊)

因此很多人開發分析工具,有是linux shell腳本,比如repack-zImage,也有人采用perl,還有C語言編寫的 unbootimg,?

我使用的是在源碼位置system/core/mkbootimg/ 下的 mkbootimg。為了簡化,藍點工坊把與mkbootimg中打包工具和解包工具以及所包含的libmincrpty庫抽出來,並且重寫壹個Makefile,作為開源項目。

使用者只需要在linux(需安裝gcc,make,壹般是標配)或windows(需要安裝mingw)的命令行執行make,即可產生可執行文件mkbootimg ,unpackbootimg。

二.解/打包工具使用

解包工具:unpackbootimg

常見格式?

unpackbootimg -i .\tmp\boot.img -o .\out?

這壹句命令行表示把boot.img解包,所有文件輸出到out目錄下

它會解壓出如下文件:

boot.img-zImage (內核文件)

boot.img-ramdisk.gz (根文件系統打包文件)?

boot.img-cmdline (mkbootimg cmdline參數)?

boot.img-pagesize (mkbootimg pagesize參數)?

boot.img-base (mkbootimg base參數)

打包工具:mkbootimg (Android自帶)

常見的命令格式:?

./mkbootimg?--cmdline 'no_console_suspend=1 console=null'?--kernel?zImage?--ramdisk?boot/boot.img-ramdisk.gz?-o?boot.img --base 02e00000?

這句含義是把內核文件zImage和boot目錄下的根文件壓縮包 boot.img-ramdisk.gz打包成boot.img.?

其中cmdline和base的值均來源於unpackbootimg的結果?

  • 上一篇:字符1的源代碼
  • 下一篇:穿透平臺指示器的源代碼
  • copyright 2024編程學習大全網