$ binwalk -e linux_image.img
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Android bootimg, kernel size: 6897653 bytes, kernel addr: 0x81C08000, ramdisk size: 5959520 bytes, ramdisk addr: 0x81C08000, product name: ""
2048 0x800 Linux kernel ARM boot executable zImage (little-endian)
18479 0x482F gzip compressed data, maximum compression, from Unix, last modified: 1970-01-01 00:00:00 (null date)
6761720 0x672CF8 device tree image (dtb)
6883304 0x6907E8 Unix path: /dev/block/platform/soc/7824900.sdhci/by-name/vendor
6899712 0x694800 gzip compressed data, maximum compression, has original file name: "rootfs.cpio", from Unix, last modified: 2019-04-06 00:42:26
9706949 0x941DC5 MySQL ISAM compressed data file Version 11
$ dd if=linux_image.img of=vmlinuz bs=1 skip=2048 count=6897653
$ file vmlinuz
vmlinuz: Linux kernel ARM boot executable zImage (little-endian)
$ dd if=vmlinuz bs=1 skip=$(LC_ALL=C grep -a -b -o $'\x1f\x8b\x08\x00\x00\x00\x00\x00' vmlinuz-3.18.66-perf | head -n 1 | cut -d ':' -f 1) | zcat | grep -a 'Linux version'
Linux version 3.18.66 (build@test) (gcc version 4.9.3 (GCC) ) #1 SMP PREEMPT Fri Apr 1 13:16:33 PDT 2018运行'qemu-system-arm.exe vexpress-a9 -cpu cortex-a7 -smp 4 -kernel vmlinuz‘空白屏幕
发布于 2019-11-29 18:54:05
如果你从某个地方随机拉出一个Arm Linux内核(包括Android),并试图在它打算启动的硬件以外的任何硬件上运行它,预期的结果是它在启动时很早就崩溃了,无法向屏幕或串行端口输出任何东西,即出现黑屏,但没有任何反应。这里最有可能的情况是你的映像是好的,没有损坏,只是它不是为在你运行它的vexpress-a9板上运行而构建的。
如果这真的是为vexpress-a9构建的内核,那么下一个问题就是您没有通过-dtb选项向QEMU传递设备树blob。现代的Linux内核不会硬编码所有关于它们可以在其上运行的主板的信息,而是期望引导加载程序(在本例中是QEMU )向它们传递一个数据文件,该文件提供关于主板的所有设备在哪里的信息。如果你不这样做,那么结果和上面的是一样的:内核在启动的很早就崩溃了,不能输出任何信息,所以黑屏。
https://stackoverflow.com/questions/59095310
复制相似问题