生成ramdisk-uboot.img和解压ramdisk-uboot.img

生成ramdisk-uboot.img和解压ramdisk-uboot.img

view plaincopy to clipboardprint?

    out/host/linux-x86/bin/mkbootfsout/target/product/903/root|out/host/linux-x86/bin/minigzip>out/target/product/903/ramdisk.imgmkimage-Aarm-Olinux-Tramdisk-Cnone-a0x20800000-n"ramdisk"-dout/target/product/903/ramdisk.imgout/target/product/903/ramdisk-uboot.img

解压:

How to extract the ramdisk content from uboot format ramdisk image 假設有一包ramdisk "initrd.gz",使用u-boot下的mkimage建立uboot format ramdisk image (ramdisk-uboot.img)在原本的ramdisk image前加64 bytes檔頭資訊:tools/mkimage -A arm -O linux -T ramdisk -C none -a 0x20800000 -n "ramdisk" -d initrd.gz ramdisk-uboot.img可以用下面的指令 extract the ramdisk content (init.gz) from uboot format ramdisk imagedd if=ramdisk-uboot.img of=ramdisk.img.gz bs=1 skip=64

android编译后生成的ramdisk是一个gzip格式的文件# file ramdisk.imgramdisk.img: gzip compressed data, from Unix那么先解压,因为后缀不是.gz,所以用-s 选项gunzip -S .img ramdisk.img这样生成了一个新文件ramdisk查看是什么格式# file ramdiskramdisk: ASCII cpio archive (SVR4 with no CRC)ok,是一个cpio格式的文件再次解压先创建一个目录,假设叫rfs,并进入# cpio -i -F ../ramdisk512 blocks

  这下,你就能看见并操作ramdisk里面的内容了。当然你也可以直接在外面进行操作,但是还是建议把cpio解压缩出来的内容全部集中在一个文件夹里面,因为一会我们还要将其压缩成新的ramdisk.img。

  OK,现在开始修改步骤吧。用任何一款编辑器打开init.rc,首先在PATH那里加上你的Busybox安装路径,然后注释内容,我们要手工启动他们。

  # zygote {  # exec /system/bin/app_process  # args {  # 0 -Xzygote  # 1 /system/bin  # 2 –zygote  # }  # autostart 1  # }# runtime {  # exec /system/bin/runtime  # autostart 1  # }

  在这里需要注意,不要同时把两者都注释了,注释某一个,再试验手工启动它,如果两者同时注释我这里有问题,无法启动。

  好,接下来,使用下列命令重新打包成镜像

  cpio -i -t -F ../ramdisk.img > list

  cpio -o -H newc -O lk.img < list

  当前目录下生成的lk.img就是我们的新镜像了。使用自己的镜像启动emulator;

理想的路总是为有信心的人预备着

生成ramdisk-uboot.img和解压ramdisk-uboot.img

相关文章:

你感兴趣的文章:

标签云: