- 浏览: 507941 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lin_kk:
最近正在学,请问LZ有源码事例吗,如果有能发一下我邮箱吗,万分 ...
使用libgdx及其中的box2d 2.1的注意事项 -
ahong520:
编译都通不过
ffmpeg对音频解码的一般步骤 -
辽东小小:
yajun_soft 写道XXX@XXX:~$ adb she ...
adb push的Permission denied -
cdtdx:
好文, 相当不错啊. 收了.
什么是app2sd,app2ext,data2ext?app移动到SD卡哪里去了? /mnt/asec /mnt/secure -
dickycat:
学习了,最近正在学这一块,年纪大了,学起来有点吃亏!
使用libgdx及其中的box2d 2.1的注意事项
在android的emulator的几点knowledge中,俺对android的各种disk images很好奇,一直想知道怎么去know和hack这些images,所以就有了这篇paper。
- 用file来查看文件类型
- chenjian@ubuntu8:/tmp/images$ file *
kernel-qemu: data
local.img: data
ramdisk.img: gzip compressed data, from Unix, last modified: Thu Oct 22 16:30:38 2009
system.img: VMS Alpha executable
userdata.img: VMS Alpha executable
opl.img: VMS Alpha executable - 可见有三种,data, gzip和VMS Alpha executable;
- 再看从avd目录取得的image文件
- chenjian@ubuntu8:/tmp/images/HVGA.avd$ file *
cache.img: VMS Alpha executable
userdata.img: VMS Alpha executable
userdata-qemu.img: data - 仍然没有逃脱以上三种image类型。
- 用表格表示如下
文件类型 文件 data kernel-qemu
local.img
userdata-qemu.imggzip ramdisk.img VMS Alpha executable system.img
userdata.img(images目录)
opl.img
userdata.img(avd目录)
cache.img
- chenjian@ubuntu8:/tmp/images$ file *
- ramdisk.img
- 可以使用这个命令来查看ramdisk.img
- root@ubuntu8:/tmp/images# gzip -d -S .img ramdisk.img
root@ubuntu8:/tmp/images# ls -lrt ramdisk
-rw-r–r– 1 root root 260608 Oct 22 01:34 ramdisk - 可见ramdisk.img被解压成ramdisk,
- root@ubuntu8:/tmp/images# file ramdisk
ramdisk: ASCII cpio archive (SVR4 with no CRC) - 可见ramdisk是个cpio文件,需要用cpio来extract
- root@ubuntu8:/tmp/images# mkdir ramdiskdir 创建ramdiskdir来装ramdisk的内容
root@ubuntu8:/tmp/images# cd ramdiskdir/ cd到该目录中
root@ubuntu8:/tmp/images/ramdiskdir# cpio -idmv <../ramdisk 使用cpio来extractramdisk文件
data
default.prop
dev
init
init.goldfish.rc
init.rc
proc
sbin
sbin/adbd
sys
system
509 blocks
root@ubuntu8:/tmp/images/ramdiskdir# ls 这就是被打包在ramdisk中的文件
data default.prop dev init init.goldfish.rc init.rc proc sbin sys system - 使用find和file来看这些文件,发现init其实是个ARM arch的可执行文件,这也和emulator中所说的linux是ARM arch相吻合
root@ubuntu8:/tmp/images/ramdiskdir# find . -type f|file -f -
./default.prop: ASCII text
./init.rc: ASCII English text
./init.goldfish.rc: ASCII English text
./init: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped
./sbin/adbd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped - 查看某些文件的md5
root@ubuntu8:/tmp/images/ramdir# find . -name "init*"|xargs md5sum
c3cff931e494bb4872f0ebefe1dad548 ./init.rc
90dd60a3458cce84901d12b362880339 ./init.goldfish.rc
7a950533c62fe91300a5b31b12a38084 ./init - ls –lrt 这些文件
root@ubuntu8:/tmp/images/ramdir# find . |grep init|xargs ls -lrt
-rwxr-x— 1 root root 11875 Jan 1 1970 ./init.rc
-rwxr-x— 1 root root 2138 Jan 1 1970 ./init.goldfish.rc
-rwxr-x— 1 root root 127548 Jan 1 1970 ./init
- data
data文件共有这么几个,kernel-qemu,local.img和userdata-qemu.img。
什么是data文件?如何使用这些文件?我们面临着么两个问题 - VMS Alpha executable
VMS Alpah executable共有这么几个system.img,userdata.img,opl.img,userdata.img和cache.img。
什么是VMS Alpha executable?如何使用这些文件?我们面临这么两个问题。。。 - adb shell(1.5版本)
使用这个命令据说可以在emulator起来以后进入到android os的shell中,我们来看看、- D:Program FilesOPhoneSDK_1.5.betatools>adb shell
# pwd
pwd
/ - # ls -l
ls -l
lrwxrwxrwx root root 2010-01-31 15:03 preload -> /system/preload
drwxr-xr-x root root 2010-01-31 15:03 Linux
lrwxrwxrwx root root 2010-01-31 15:03 bin -> /opl/telephony/bin
lrwxrwxrwx root root 2010-01-31 15:03 usr -> /opl/telephony/usr
lrwxrwxrwx root root 2010-01-31 15:03 lib -> /opl/telephony/lib
drwxrwxrwt root root 2010-01-31 15:05 tmp
drwxrwxrwt root root 2010-01-31 15:05 sqlite_stmt_journals
drwxrwx— system cache 2009-12-20 10:11 cache
drwxr-xr-x system system 2009-10-10 13:11 opl
drwxrwxrwx system system 2009-10-24 01:48 local
d——— system system 2010-01-31 15:03 sdcard
drwxr-xr-x root root 2010-01-31 15:03 d
lrwxrwxrwx root root 2010-01-31 15:03 etc -> /system/etc
drwxr-xr-x root root 2009-10-22 16:20 system
drwxr-xr-x root root 1970-01-01 08:00 sys
drwxr-x— root root 1970-01-01 08:00 sbin
dr-xr-xr-x root root 1970-01-01 08:00 proc
-rwxr-x— root root 11875 1970-01-01 08:00 init.rc
-rwxr-x— root root 2138 1970-01-01 08:00 init.goldfish.rc
-rwxr-x— root root 127548 1970-01-01 08:00 init
-rw-r–r– root root 118 1970-01-01 08:00 default.prop
drwxrwx–x system system 2009-12-20 10:11 data
drwx—— root root 1970-01-01 08:00 root
drwxr-xr-x root root 2010-01-31 15:04 dev - 果然,可以run一些linux下的基本命令,如ls,pwd等,证明了我们确实是获得了一个linux shell
- 另外黄颜色显示的文件和我们在ramdisk中看到的文件似乎大小一致,暗示它们是同一。
- run mount to see有那些文件系统被mount了
# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
tmpfs /tmp tmpfs rw 0 0
/dev/block/mtdblock0 /system yaffs2 rw 0 0
/dev/block/mtdblock4 /opl yaffs2 rw 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock3 /local yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0 - 我们看见了system,opl,data,local和cache;恩,这些名字和那个表格里的data/VMS Alpha Executable似乎有些重合
/system,/opl和/cache是VMS Alpha Executable的system.img,opl.img和cache.img转换而来
/local是data的local.img转换而来
/data嘛,就不太好判断,不知道和userdata.img和userdata-qemu.img有什么关系没?
但至少我们知道可以查看/system来明白system image包含哪些东西了吧。。。,比如/system/framework就是android的framework啦
也可以知道可以查看/cache来明白什么是cache image的内涵了吧。。。
对于local image同理可得。。。 - 另外,adb shell提供的command有限,比如没有zcat,cp,uname和busybox等,有没有办法能将这些命令加入进去呢?
到这里下载busybox,http://benno.id.au/blog/2007/11/14/android-busybox,然后按照提示将busybox push至/data/busybox目录,install后即可运行所有的busybox applet。比如:# /data/busybox/zcat /proc/config.gz|/data/busybox/more
/data/busybox/zcat /proc/config.gz|/data/busybox/more
#
# Automatically generated make config: don’t edit
# Linux kernel version: 2.6.25
# Mon Nov 10 05:02:15 2008
所以我们就能知道1.5的Android用的linux kernel是2.6.25版本的。。。
- D:Program FilesOPhoneSDK_1.5.betatools>adb shell
- kernel在哪里?
- 什么是yaffs2? http://en.wikipedia.org/wiki/YAFFS2
ok,这又是一种新的文件系统,designed specially for NAND chips;YAFFS2是YAFFS的第二版,为了适应新的NAND chips,这些新chip的page size有2048bytes,plus 64bytes的spare areas;老版本的NAND chips的page是512bytes,plus 16bytes spare area。 - 这些disk images从何而来?
从这篇文章编译Android1.5里能否得到一些启示?
在编译android1.5后,其实我们能得到3个img文件,似乎可以下断言,这三个image是在编译android的过程中得到的。有关生成他们的过程又是另外一个话题,估计得去读makefile了。root@ubuntu8:/ophone/android-1.5# find . -name *.img
./out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
./out/target/product/generic/userdata.img
./out/target/product/generic/system.img
./out/target/product/generic/ramdisk.img
BTW, out目录是在编译过程中产生的目录,其余目录则是source目录 -
如何增大/data目录的大小?
/data目录缺省大小仅有64M,这导致在调试某些大apk时,emulator会报告insufficient storage,为了解决这个问题,可以使用emulator的-partition-size来指定/data目录的大小;从下列命令可以看出userdata.img被map成mtd1,而mtd1又被mount成/data# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0# cat /proc/mtd
cat /proc/mtd
dev: size erasesize name
mtd0: 07c20000 00020000 "system"
mtd1: 07c20000 00020000 "userdata"
mtd2: 04000000 00020000 "cache"
发表评论
-
编译XT720 gingerbread
2013-05-04 11:18 826在android根目录下执行". build/env ... -
编译mx 内核成功
2013-03-18 17:48 831转 : http://hi.baidu.com/_xi ... -
ubuntu下面找不到ZTE V880设备
2012-12-06 16:22 786两种方法:第一种方法是你连上你的手机,重启电脑,再adb de ... -
Android中解决图像解码导致的OOM问题
2012-10-01 18:41 796http://7dot9.com/2011/08/androi ... -
编译Android下纯C的静态程序,undefined reference to raise
2012-07-08 23:28 2338尝试在Android下编译纯C的静态程序,执行gcc -v - ... -
开发Android下纯C程序时,打开时提示not found
2012-07-08 20:09 1342这个问题烦了我一天了..郁闷.本人想试验一下使用ndk里面的t ... -
NDK报错:make: *** 没有规则可以创建“obj/local/armeabi/objs/a/a.o”需要的目标“/a.c”。 停止。
2012-07-05 21:02 2146android开发用ndk编译so库时,有时直接从别的地 ... -
adb push的Permission denied
2012-05-30 17:19 3578遇到的问题是 zhanglanyun@zhanglan ... -
adb pull失败问题解决方法
2012-05-30 17:03 2117问题:使用adb pull命令从android系统中读取文件失 ... -
关于app2sd、a2sd、data2sd、a2sd+的区别的解释
2012-05-17 11:47 1031因为看到很多机友对这个概念不理解。首先解释一下这些缩写,全部的 ... -
什么是app2sd,app2ext,data2ext?app移动到SD卡哪里去了? /mnt/asec /mnt/secure
2012-05-17 10:56 3328Google Android手机的软件为了安全性和稳定性 ... -
android 如何自定义ProgressBar
2012-04-22 15:39 1896原文:http://blog.sina.com.cn/s/bl ... -
修改MAC,没有nvs_map.bin时该怎么做
2012-04-10 16:53 1785Basically: nvs_map.bin is what ... -
Android Activity LaunchMode 验证
2012-03-31 11:23 876在Android中,每个Activity有4种LaunchMo ... -
Android改变MAC地址
2012-03-30 13:42 21481.Find out your original MAC ad ... -
C通过JNI 层调用Java的静态和非静态方法
2012-03-26 09:47 39201、主要流程 1、 新建一个测试类TestProv ... -
使用ndk或linux下独立交叉编译(ffmpeg)
2012-03-18 21:48 22711、ndk 编译程序 在NDK的apps目录下创建he ... -
android-ndk-r7 编译 ffmpeg-0.10
2012-03-18 21:46 4564看了这篇文章 http://blog.sina.com ... -
android2.3 MODIFY_PHONE_STATE
2012-02-27 22:14 3034一直被一些莫名其妙的电话骚扰,而且只响两声就断了,一直 ... -
Androidmanifest.xml里的<uses-feature>
2011-12-27 17:10 1321如果你是一个Android用户,而且你有一个老旧的安装有and ...
相关推荐
Android-BitmapCache ... The sample app shows you how to use the library by creating a ViewPager of images downloaded from the web. These are cached in the LruCache and/or Disk Cache. Summary A cache
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
soas (Sample Of All Samples) - Try APK ...Download images using volley (with Memory and Disk caching) Json (using Gson) ListView with a custom Adapter (based on BaseAdapter) SwipeToReferesh (usin
Along with merge, it also contains the image decoder for decoding images from resources/disk and are sampled to prevent OutOfMemoryError. Examples of Bitmap Merger with this project Merging at ...
Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to ...
Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to ...
[mode] [options]要么 chmod +x build && ./build -help要么 double-click on it [包裹] -swf (✓ Default: ShockWave Flash) -dmg (✓ Apple disk images) -app (✓ Application bundle) -apk (✓ Android ...
实现图片下载和缓存功能,可以将图片下载... The sample app shows you how to use the library by creating a ViewPager of images downloaded from the web. These are cached in the LruCache and/or Disk Cache.
视频人脸识别,取代jmf。。。 Introduction JavaCV uses wrappers from the JavaCPP Presets of commonly ... // We can easily and efficiently access the elements of matrices and images // through an Indexer ...
支持选择本地视频或图片功能源码,源码MediaChooser,该Media Chooser功能源码可以实现选择本地视频和相片的,同时还配有两种的选择模式,一种是文件夹选择...Library to browse & select videos and images from disk.