我有Nexus 5和AOSP ROM 4.4.4。
我正在尝试从设备“拉” boot.img,解压缩它,编辑“init.rc”,将其重新打包为boot.img并将其闪存到设备中。
我遵循许多指南,但没有一个与我的情况相同:
(http://droidcore.blogspot.co.il/2012/12/how-to-edit-initrc-in-android.html和http://www.digitalinternals.com/mobile/android-mmc-mmcblk-partition-layout/259/)
ls -l /dev/block/platform/msm_sdcc.1/by-name/
我知道引导是/dev/block/mmcblk0p19
:cat /dev/block/mmcblk0p19 > /mnt/sdcard/boot.img
并将该boot.img拉到我的电脑上。这个boot.img是〜23 MB。 unmkbootimg
编码,并得到2个文件:initramfs.cpio.gz
约为500 KB,kernel.gz
约为8.4 MB。我得到的详细信息是:initramfs.cpio.gz
:gunzip -c initramfs.cpio.gz | sudo sh -c 'cd ../ && cpio -i'
(来自http://www.wiki.xilinx.com/Build+and+Modify+a+Rootfs),并获得了许多文件,其中包括init.rc。我编辑了这个文件。 initramfs.cpio.gz
:sh -c 'cd ../ && sudo find . | sudo cpio -H newc -o' | gzip -9 > new_initramfs.cpio.gz
并获得此文件〜500KB。 mkbootimg
这2个文件:./mkbooting --kernel kernel.gz --ramdisk initramfs.cpio.gz --base 0x26fff00 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' -o new_boot.img
,我得到了boot.img,它约为8.5 MB 我的问题是:
感谢大伙们!
*************我发现了这个问题**************
解决方案是:
我从这里使用了
unmkbootimg
:http://whiteboard.ping.se/Android/Unmkbootimg
在运行unmkbootimg之后,我得到了以下注释:*** 警告 ****
该镜像是使用非标准mkbootimg构建的!
OFF_KERNEL_ADDR为0xFD908100
OFF_RAMDISK_ADDR为0x00200100
OFF_SECOND_ADDR为0xFE800100
请使用以上值修改mkbootimg.c来构建镜像。
所以我按照这里的指示进行操作:
https://gist.github.com/jberkel/1087757
,现在可以使用了!!! 最佳答案
我无法给出第一个问题的答案,但是如果您是我,我将跳过步骤4&5,并验证unmkbootimg/mkbootimg进程是否正确。只有在通过验证之后,我才开始处理cpio进程,最后进行init.rc编辑。
对于第二个问题,谷歌的官方boot.img为8.64MB,所以我猜它的大小没有问题。