recovery: ASCII cpio archive (SVR4 with no CRC)——cpio格式的recovery解压缩和重新打包的方法
? ? ? ? ?中興U930HD手機CPU采用的是聯芯科技的LC1810,該平臺系統的recovery.img 和boot.img 的打包格式跟其他平臺(如高通、MTK、英偉達等)不一致,研究了半天終于將930HD的recovery替換了,步驟如下
1、用第三方工具root手機之后,采用dd命令導出recovery.img到sd卡
adb shell
su
dd if=/dev/block/platform/comip-mmc.1/by-name/recovery of=/sdcard/recovery.img
導出后發現只有1M左右的大小,理論上按照android標準格式應該有6 M以上,甚至10多M,奇怪了。。。。。。
到Linux環境下,采用 file命令查看文件格式
file recovery.img
//輸出
recovery.img: gzip compressed data, was "recovery", from Unix, last modified: Wed May ?7 09:25:06 2014
原來這個img是個gzip的壓縮包,那就好辦了,解壓縮來看看到底什么東東。。。
2、解壓縮recovery.img
gunzip -S .img recovery.img? //因為后綴不是.gz,所以用-S 選項
?在當前目錄下生成新的recovery文件,在用file命令查看
file recovery
recovery: ASCII cpio archive (SVR4 with no CRC)
原來是一個cpio格式的文件
怎么樣,心里是不是暗自得意了?有戲了。。。。
再次解壓cpio文件
先創建一個recovery_ok的目錄
mkdir recovery_ok
cd recovery_ok
cpio -i -F ../recovery
ls -al 命令查看發現里面的目錄結構就是根文件系統ramdisk的結構。
從這里大概就知道了,原來聯芯方案的recovery.img僅僅是包含了ramdisk,而沒有包含kernel。
接下來替換掉sbin目錄下的recovery二進制程序。
3、重新打包生成recovery.img
也就是個逆過程,首先用cpio命令,再用gzip命令
find . | cpio -o -H newc > ../recovery
3009 blocks
gzip -c recovery > recovery.img?
這個recovery.img就是我們最新生成的recovery,用adb命令重新燒寫到手機里即可體現,具體燒寫過程請參考博文
Android 采用fastboot刷system.img boot.img recovery.img
總結
以上是生活随笔為你收集整理的recovery: ASCII cpio archive (SVR4 with no CRC)——cpio格式的recovery解压缩和重新打包的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 面试题之ContentP
- 下一篇: Mac下使用nginx反向代理服务器解决