ramdiskimg解压
㈠ 如何修改android系统的ramdisk以及boot镜像
ramdisk 是一种基于内存的虚拟磁盘技术,采用ext2文件系统。ramdisk.gz是ramdisk文件再压缩后的格式。查看ramdisk.gz根文件系统,或者对原有的文件系统进行修改,只需解压,再把获得的镜像文件挂载即可。
修改步骤如下:
解压:转到ramdisk.gz所在文件夹#gunzip ramdisk.gz
注意,解压后会得到ramdisk镜像文件,该镜像文件会把原有的ramdisk.gz覆盖,因此如果想保留ramdisk.gz复制到其他文件夹后再解压。挂载: #mkdir /mnt/loop
#mount –o loop ramdisk /mnt/loop //挂载镜像到loop目录
#cd /mnt/loop这里可以看到, 就是ramdisk.gz成功加载后的目录。修改文件系统的内容比如设置固定的IP地址,MAC地址。
umount /mnt/loop卸载 /mnt/loop0。
重新压缩成.gz压缩文件
#gzip –v9 ramdisk//生成新的ramdisk.gz压缩文件。
㈡ android的文件系统怎么生成
Android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 userdata目录下。因此,我们可以把ramdisk.img里的所有文件复制出来,system.img和userdata.img分别解压到 ramdisk文件系统中的system和 userdata目录下。
2、分离Android文件系统出来
system.img,ramdisk.img,userdata.img映像文件是采用cpio打包、gzip压缩的,可以通过file命令验证:
file ramdisk.img
输出:
ramdisk.img: gzip compressed data, from Unix,
last modified: Wed Mar 18 17:16:10 2009
Android源码编译后除了生成system.img,userdata.img之外还生成system和 userdata文件夹,因此不需要解压它们。Android源码编译后还生成root文件夹,其实root下的文件与 ramdisk.img 里的文件是一样的,不过这里还是介绍怎样把 ramdisk.img解压出来:
将ramdisk.img复制一份到任何其他目录下,将其
㈢ 安卓怎么使用修改过的源码编译程序
1、Android的文件系统结构是怎样的,我们安装的程序放在那里?
编译Android源码之后,在out/target/proct/generic一些文件:
ramdisk.img、system.img、userdata.img、 system、 data、root
其中, system.img是由 system打包压缩得到的, userdata.img是由 data打包压缩得到的。
ramdisk.img是模拟器的文件系统,把ramdisk.img解压出来可知道,ramdisk.img里的文件跟root文件夹的文件基本一样。模拟器装载ramdisk.img并解压到内存,接着分别把system.img和userdata.img挂载到 ramdisk下的system和data目录。我们编译出来的应用程序就是放在system/app下的。用户安装的程序则是放在data/app下。
2、Android SDK和android源码能为我们提供什么工具?
AndroidSDK提供有很多工具,如adb,ddms,emulator,aapt等,并提供kernel-qemu、ramdisk.img、system.img、userdata.img。因此,只要有android SDK,我们就可以在模拟器上把android跑起来。
Android源码可以编译出android SDK、adb等工具、android文件系统,以及ADT插件,也就是说,我们可以从android源码编译出所有android相关的东西。
3、 把Android源 码”make”之后会生成许多工具和android文件系统(system.img等),我们又可以使用“makesdk”来生成android SDK,android
SDK也包括有工具和android文件系统(system.img等),而原来安装的时候我们也安装了androidSDK,那么我们在开发时应该使用那些工具和android文件系统呢?
㈣ 如何解包/编辑/打包android系统的boot.img文件
Android产品中,内核格式是linux标准的zImage,根文件系统采用ramdisk格式。这两者在Android下是直接合并在一起取名为boot.img,会放在一个独立分区当中。这个分区格式是Android自行制定的格式。Android开发时,最标准的做法是重新编译于内核和根文件系统,然后调用Android给的命令行文件mkbootimg(out/host/linux-x86/bin/)来打包。 在制作手机ROM时,有时会单独编译内核或抽出根文件进行修改内容,比如我只编译内核,其余的地方不变。这样重新安装巨大的Android开发环境实在不划算。因此很多boot.img解包工具被人开发出来,这一些工具都是把内核和根文件系统从一个现成的boot.img抽取出来,修发后再次打包还原。一.常见的解包工具因为boot.img的格式比较简单,它主要分为三大块(有的可能有四块)因此很多人开发分析工具,有是linuxshell脚本,比如repack-zImage,也有人采用perl,还有C语言编写的unbootimg, 我使用的是在源码位置system/core/mkbootimg/下的mkbootimg。为了简化,蓝点工坊把与mkbootimg中打包工具和解包工具以及所包含的libmincrpty库抽出来,并且重写一个Makefile,作为开源项目。使用者只需要在linux(需安装gcc,make,一般是标配)或windows(需要安装mingw)的命令行执行make,即可产生可执行文件mkbootimg,unpackbootimg。二.解/打包工具使用解包工具:unpackbootimg常见格式 unpackbootimg-i.\tmp\boot.img-o.\out 这一句命令行表示把boot.img解包,所有文件输出到out目录下它会解压出如下文件:boot.img-zImage(内核文件)boot.img-ramdisk.gz(根文件系统打包文件) boot.img-cmdline(mkbootimgcmdline参数) boot.img-pagesize(mkbootimgpagesize参数) boot.img-base(mkbootimgbase参数)打包工具:mkbootimg(Android自带)常见的命令格式: ./mkbootimg --cmdline'no_console_suspend=1console=null' --kernel zImage --ramdisk boot/boot.img-ramdisk.gz -o boot.img--base02e00000 这句含义是把内核文件zImage和boot目录下的根文件压缩包boot.img-ramdisk.gz打包成boot.img. 其中cmdline和base的值均来源于unpackbootimg的结果