打包自定义 Android boot.img 错误
Packing Custom Android boot.img Error
每次我修改 Nexus 6 内核并使用 Peter Batard 的 mkbootimg 工具 (https://github.com/pbatard/bootimg-tools) 创建可引导映像时,我都会收到以下错误:
android@ubuntu:~/android-sdk-linux/platform-tools$ ./fastboot boot myboot3.img
downloading 'boot.img'...
OKAY [ 1.219s]
booting...
FAILED (remote failure)
finished. total time: 1.282s
我已经启动了可用的库存和 F运行co 可启动映像。然而,解压这些可引导映像并用我修改过的 zImage 从 msm 源替换内核(我也尝试了 F运行co 的 Shamu 内核源)将导致同样的错误。
解压 boot.img 时,我收到 mkbootimg 命令行指令:
mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x00008000 --ramdisk_offset 0x0000000b --second_offset 0x00f00000 --tags_offset 0x0000000b --cmdline 'console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=shamu msm_rtb.filter=0x37 ehci-hcd.park=3 utags.blkdev=/dev/block/platform/msm_sdcc.1/by-name/utags utags.backup=/dev/block/platform/msm_sdcc.1/by-name/utagsBackup coherent_pool=8M' --kernel kernel --ramdisk ramdisk.cpio.gz -o /home/android/Desktop/shamu-lmy47z/boot.img
我对此所做的唯一更改是用新创建的 zImage 替换内核,并将输出名称更改为类似 myboot.img 的名称。我已经能够在不做任何修改的情况下解压库存图片并重新打包,并且效果很好。难不成mkbootimg命令中的其中一个参数需要修改?
-- 编辑--
我运行 从此线程Error with repacking boot.img (Android) 取消了mkbootimg。其中给出了以下信息:
*** WARNING ****
This image is built using NON-standard mkbootimg!
OFF_KERNEL_ADDR is 0x000080F5
OFF_RAMDISK_ADDR is 0x00000100
OFF_SECOND_ADDR is 0x00F000F5
Please modify mkbootimg.c using the above values to build your image.
****************
这仍然导致失败 boot.img。
以下是各个文件的开头:
boot.img(来自 LMY47Z Nexus 6 系统的出厂构建)。
android@ubuntu:~/Desktop/shamu-lmy47z$ xxd -l 320 boot.img
0000000: 414e 4452 4f49 4421 cdc5 6d00 0080 0000 ANDROID!..m.....
0000010: dff2 0a00 0b00 0000 0000 0000 0000 f000 ................
0000020: 0b00 0000 0008 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000040: 636f 6e73 6f6c 653d 7474 7948 534c 302c console=ttyHSL0,
0000050: 3131 3532 3030 2c6e 3820 616e 6472 6f69 115200,n8 androi
0000060: 6462 6f6f 742e 636f 6e73 6f6c 653d 7474 dboot.console=tt
0000070: 7948 534c 3020 616e 6472 6f69 6462 6f6f yHSL0 androidboo
0000080: 742e 6861 7264 7761 7265 3d73 6861 6d75 t.hardware=shamu
0000090: 206d 736d 5f72 7462 2e66 696c 7465 723d msm_rtb.filter=
00000a0: 3078 3337 2065 6863 692d 6863 642e 7061 0x37 ehci-hcd.pa
00000b0: 726b 3d33 2075 7461 6773 2e62 6c6b 6465 rk=3 utags.blkde
00000c0: 763d 2f64 6576 2f62 6c6f 636b 2f70 6c61 v=/dev/block/pla
00000d0: 7466 6f72 6d2f 6d73 6d5f 7364 6363 2e31 tform/msm_sdcc.1
00000e0: 2f62 792d 6e61 6d65 2f75 7461 6773 2075 /by-name/utags u
00000f0: 7461 6773 2e62 6163 6b75 703d 2f64 6576 tags.backup=/dev
0000100: 2f62 6c6f 636b 2f70 6c61 7466 6f72 6d2f /block/platform/
0000110: 6d73 6d5f 7364 6363 2e31 2f62 792d 6e61 msm_sdcc.1/by-na
0000120: 6d65 2f75 7461 6773 4261 636b 7570 2063 me/utagsBackup c
0000130: 6f68 6572 656e 745f 706f 6f6c 3d38 4d00 oherent_pool=8M.
myboot.img(使用 mkbootimg 和 zImage 从 msm 源构建)
android@ubuntu:~/Desktop/shamu-lmy47z$ xxd -l 320 myboot.img
0000000: 414e 4452 4f49 4421 4016 6a00 0080 0000 ANDROID!@.j.....
0000010: dff2 0a00 0b00 0000 0000 0000 0000 f000 ................
0000020: 0b00 0000 0010 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000040: 636f 6e73 6f6c 653d 7474 7948 534c 302c console=ttyHSL0,
0000050: 3131 3532 3030 2c6e 3820 616e 6472 6f69 115200,n8 androi
0000060: 6462 6f6f 742e 636f 6e73 6f6c 653d 7474 dboot.console=tt
0000070: 7948 534c 3020 616e 6472 6f69 6462 6f6f yHSL0 androidboo
0000080: 742e 6861 7264 7761 7265 3d73 6861 6d75 t.hardware=shamu
0000090: 206d 736d 5f72 7462 2e66 696c 7465 723d msm_rtb.filter=
00000a0: 3078 3337 2065 6863 692d 6863 642e 7061 0x37 ehci-hcd.pa
00000b0: 726b 3d33 2075 7461 6773 2e62 6c6b 6465 rk=3 utags.blkde
00000c0: 763d 2f64 6576 2f62 6c6f 636b 2f70 6c61 v=/dev/block/pla
00000d0: 7466 6f72 6d2f 6d73 6d5f 7364 6363 2e31 tform/msm_sdcc.1
00000e0: 2f62 792d 6e61 6d65 2f75 7461 6773 2075 /by-name/utags u
00000f0: 7461 6773 2e62 6163 6b75 703d 2f64 6576 tags.backup=/dev
0000100: 2f62 6c6f 636b 2f70 6c61 7466 6f72 6d2f /block/platform/
0000110: 6d73 6d5f 7364 6363 2e31 2f62 792d 6e61 msm_sdcc.1/by-na
0000120: 6d65 2f75 7461 6773 4261 636b 7570 2063 me/utagsBackup c
0000130: 6f68 6572 656e 745f 706f 6f6c 3d38 4d00 oherent_pool=8M.
首先,我建议使用 mkboot(在 github 中查找)来解包和打包引导映像。
很少有实际设备使用 vanilla mkbootimg,而是对其进行自定义。 Marvel 和 MTK 因修改引导加载程序以加载其丑陋的专有引导映像而臭名昭著。
我还会检查启动映像中的 DTS 是否作为单独的部分出现。如果是这种情况,那么您需要确保打开包装并重新包装。我不认为你现在在做。
每次我修改 Nexus 6 内核并使用 Peter Batard 的 mkbootimg 工具 (https://github.com/pbatard/bootimg-tools) 创建可引导映像时,我都会收到以下错误:
android@ubuntu:~/android-sdk-linux/platform-tools$ ./fastboot boot myboot3.img
downloading 'boot.img'...
OKAY [ 1.219s]
booting...
FAILED (remote failure)
finished. total time: 1.282s
我已经启动了可用的库存和 F运行co 可启动映像。然而,解压这些可引导映像并用我修改过的 zImage 从 msm 源替换内核(我也尝试了 F运行co 的 Shamu 内核源)将导致同样的错误。
解压 boot.img 时,我收到 mkbootimg 命令行指令:
mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x00008000 --ramdisk_offset 0x0000000b --second_offset 0x00f00000 --tags_offset 0x0000000b --cmdline 'console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=shamu msm_rtb.filter=0x37 ehci-hcd.park=3 utags.blkdev=/dev/block/platform/msm_sdcc.1/by-name/utags utags.backup=/dev/block/platform/msm_sdcc.1/by-name/utagsBackup coherent_pool=8M' --kernel kernel --ramdisk ramdisk.cpio.gz -o /home/android/Desktop/shamu-lmy47z/boot.img
我对此所做的唯一更改是用新创建的 zImage 替换内核,并将输出名称更改为类似 myboot.img 的名称。我已经能够在不做任何修改的情况下解压库存图片并重新打包,并且效果很好。难不成mkbootimg命令中的其中一个参数需要修改?
-- 编辑--
我运行 从此线程Error with repacking boot.img (Android) 取消了mkbootimg。其中给出了以下信息:
*** WARNING ****
This image is built using NON-standard mkbootimg!
OFF_KERNEL_ADDR is 0x000080F5
OFF_RAMDISK_ADDR is 0x00000100
OFF_SECOND_ADDR is 0x00F000F5
Please modify mkbootimg.c using the above values to build your image.
****************
这仍然导致失败 boot.img。
以下是各个文件的开头:
boot.img(来自 LMY47Z Nexus 6 系统的出厂构建)。
android@ubuntu:~/Desktop/shamu-lmy47z$ xxd -l 320 boot.img
0000000: 414e 4452 4f49 4421 cdc5 6d00 0080 0000 ANDROID!..m.....
0000010: dff2 0a00 0b00 0000 0000 0000 0000 f000 ................
0000020: 0b00 0000 0008 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000040: 636f 6e73 6f6c 653d 7474 7948 534c 302c console=ttyHSL0,
0000050: 3131 3532 3030 2c6e 3820 616e 6472 6f69 115200,n8 androi
0000060: 6462 6f6f 742e 636f 6e73 6f6c 653d 7474 dboot.console=tt
0000070: 7948 534c 3020 616e 6472 6f69 6462 6f6f yHSL0 androidboo
0000080: 742e 6861 7264 7761 7265 3d73 6861 6d75 t.hardware=shamu
0000090: 206d 736d 5f72 7462 2e66 696c 7465 723d msm_rtb.filter=
00000a0: 3078 3337 2065 6863 692d 6863 642e 7061 0x37 ehci-hcd.pa
00000b0: 726b 3d33 2075 7461 6773 2e62 6c6b 6465 rk=3 utags.blkde
00000c0: 763d 2f64 6576 2f62 6c6f 636b 2f70 6c61 v=/dev/block/pla
00000d0: 7466 6f72 6d2f 6d73 6d5f 7364 6363 2e31 tform/msm_sdcc.1
00000e0: 2f62 792d 6e61 6d65 2f75 7461 6773 2075 /by-name/utags u
00000f0: 7461 6773 2e62 6163 6b75 703d 2f64 6576 tags.backup=/dev
0000100: 2f62 6c6f 636b 2f70 6c61 7466 6f72 6d2f /block/platform/
0000110: 6d73 6d5f 7364 6363 2e31 2f62 792d 6e61 msm_sdcc.1/by-na
0000120: 6d65 2f75 7461 6773 4261 636b 7570 2063 me/utagsBackup c
0000130: 6f68 6572 656e 745f 706f 6f6c 3d38 4d00 oherent_pool=8M.
myboot.img(使用 mkbootimg 和 zImage 从 msm 源构建)
android@ubuntu:~/Desktop/shamu-lmy47z$ xxd -l 320 myboot.img
0000000: 414e 4452 4f49 4421 4016 6a00 0080 0000 ANDROID!@.j.....
0000010: dff2 0a00 0b00 0000 0000 0000 0000 f000 ................
0000020: 0b00 0000 0010 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000040: 636f 6e73 6f6c 653d 7474 7948 534c 302c console=ttyHSL0,
0000050: 3131 3532 3030 2c6e 3820 616e 6472 6f69 115200,n8 androi
0000060: 6462 6f6f 742e 636f 6e73 6f6c 653d 7474 dboot.console=tt
0000070: 7948 534c 3020 616e 6472 6f69 6462 6f6f yHSL0 androidboo
0000080: 742e 6861 7264 7761 7265 3d73 6861 6d75 t.hardware=shamu
0000090: 206d 736d 5f72 7462 2e66 696c 7465 723d msm_rtb.filter=
00000a0: 3078 3337 2065 6863 692d 6863 642e 7061 0x37 ehci-hcd.pa
00000b0: 726b 3d33 2075 7461 6773 2e62 6c6b 6465 rk=3 utags.blkde
00000c0: 763d 2f64 6576 2f62 6c6f 636b 2f70 6c61 v=/dev/block/pla
00000d0: 7466 6f72 6d2f 6d73 6d5f 7364 6363 2e31 tform/msm_sdcc.1
00000e0: 2f62 792d 6e61 6d65 2f75 7461 6773 2075 /by-name/utags u
00000f0: 7461 6773 2e62 6163 6b75 703d 2f64 6576 tags.backup=/dev
0000100: 2f62 6c6f 636b 2f70 6c61 7466 6f72 6d2f /block/platform/
0000110: 6d73 6d5f 7364 6363 2e31 2f62 792d 6e61 msm_sdcc.1/by-na
0000120: 6d65 2f75 7461 6773 4261 636b 7570 2063 me/utagsBackup c
0000130: 6f68 6572 656e 745f 706f 6f6c 3d38 4d00 oherent_pool=8M.
首先,我建议使用 mkboot(在 github 中查找)来解包和打包引导映像。
很少有实际设备使用 vanilla mkbootimg,而是对其进行自定义。 Marvel 和 MTK 因修改引导加载程序以加载其丑陋的专有引导映像而臭名昭著。
我还会检查启动映像中的 DTS 是否作为单独的部分出现。如果是这种情况,那么您需要确保打开包装并重新包装。我不认为你现在在做。