转载ramdisk.imgsystem.imguserdata.img介绍与解包、打包方法
内存盘放系统IMG,重起不掉数据设置教程

内存盘放系统IMG,重起不掉数据设置教程
做的锐起无盘,服务器内存用到了8G,用2G做SC2超级缓存,再用4G做内存盘,还有2G
给系统用,也够了。
如果你的系统IMG是稀疏文件,那4G内存盘也足够放了
内存盘放锐起的客户机系统IMG文件,那效果自然不要我说,谁都知道4G的内存盘的速度,那可不是普通硬盘可以比的,就是现在最牛B的固态SSD硬盘也无法可比。
这些我不多说,下面主要详细写写图文教程:怎么安装和设置SuperSpeed RamDisk
安装基本是“下一步”没什么可说的。
到了下面这个图意思要注册信息。
下面我已经提供了文件和注册机下载。
所以我们选择YES,再运行keygen.exe注册,把注册信息复制到注册窗
这样就安装了,然后我们开设置:
我们可以到控制面板里找:看下图
也可以右键我的电脑,找到RamDisk,进入下面设置。
android主要镜像(image)解析

android主要镜像(image)解析img解析:ramdisk.img:android根文件系统,在android编译系统生成的out/target/product/root目录中结构:./init.trout.rc./default.prop 保存一些调试参数,对于开发者相当重要./proc./dev./init.rc 一些启动参数./init./sys./init.goldfish.rc./sbin./sbin/adbd./system system.img挂载点./data userdata.img挂载点userdata.img 保存用户、应用信息。
结构:/data/app 所有安装后的app会移至此处,apk被拆成dex和apk,dex为目标文件,apk为资源包/data/data 应用程序内部存储信息,sharepreference、database,etcsystem.img 包含整个android系统结构:system/app android出厂内置应用在此,同时,在这里的app可以获得一些特别的权限。
system/framework android框架在此,不宜乱动,开发者可以使用adb push + 拔电池开关机可以快速验证问题。
(前提是eng 版本)Special App:SystemUI.apk 状态栏藏在里面。
framework-res.apk包含整个系统res文件夹 including 系统UI、一些配置参数、theme、style、animationrecovery.img 按power键+音量上键(android默认)可以进去,可以执行T卡升级,format,backup userdata,restore userdata 结构:不知道boot.img 包含一个linux kernel (maybe named as zImage)和一个ramdisk。
img文件结构在源码system/core/mkbootimg/bootimg.h中声明uboot.img android启动时第一个加载的镜像,初始化硬件和基本输入出系统。
Android中system.img的两种格式及其相互转换方法

Android中system.img的两种格式及其相互转换方法搞Android的同学经常会接触到system.img。
但是该文件经常以两种格式出现:raw和sparse。
一种是raw ext4 image,即经常说的raw image,使用file观察它:其特点是完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载,因此比较大(一般1G左右)。
[plain] view plaincopy1.$ file system.img2.system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f 8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files) 信息非常明确了。
另一种是sparse ext4 image,即经常说的simg,使用file观察它:[plain] view plaincopy1.$ file system.img2.system.img: data就是说是一个非常普通的dat文件。
由于它将raw ext4进行稀疏描述,因此尺寸比较小(没有全零的无效填充区,一般在300到500M之间)。
android本身提供了源代码工具在两者之间转换,源代码位于:[plain] view plaincopy1.system/core/libsparse/simg2img.c // 将sparse image转换为raw image;2.system/core/libsparse/img2simg.c // 将raw image转换为sparse image;如果完整的进行过一次Android的编译,默认会将simg2img当作主机工具编译出来,放在out/host/linux-x86/bin/simg2img处。
但默认是不会编译img2simg的,我们可以手工进行编译:[plain] view plaincopy1.$ . build/envsetup.sh2.$ lunch aosp_hammerhead-userdebug3.$ make img2simg_host这样就会编译出out/host/linux-x86/bin/img2simg。
【转】编译android之后生成的img文件介绍

【转】编译android之后生成的img文件介绍编译android 之后生成的 img 文件介绍在编译android 之后,会生成几个image 文件,这些文件是:1。
ramdisk.img : 一个分区影像文件,它会在kernel 启动的时候,以只读的方式被 mount ,这个文件中只是包含了 /init 以及一些配置文件,这个ramdisk 被用来调用init,以及把真正的root file system mount 起来。
2。
system.img:是包含了整个系统,android 的framework,application 等等,会被挂接到 "/" 上,包含了系统中所有的二进制文件system|-- app| |-- Browser.apk| |-- Contacts.apk| |-- ContactsProvider.apk| |-- Development.apk| |-- Fallback.apk| |-- GoogleApps.apk| |-- GoogleAppsProvider.apk| |-- Home.apk| |-- ImProvider.apk| |-- Maps.apk| |-- MediaProvider.apk| |-- Phone.apk| |-- SettingsProvider.apk| |-- TelephonyProvider.apk| |-- XmppService.apk| `-- XmppSettings.apk|-- bin| |-- AudioHardwareRecord | |-- AudioInRecord| |-- RecursiveMutexTest | |-- SRecTest| |-- SRecTestAudio| |-- UAPI_PortabilityTest | |-- UAPI_SrecT est| |-- UAPI_test| |-- am| |-- app_process| |-- busybox| |-- cat -> toolbox| |-- chmod -> toolbox| |-- cmp -> toolbox| |-- crasher| |-- dalvikvm| |-- date -> toolbox| |-- dbus-daemon| |-- dd -> toolbox| |-- debuggerd| |-- dexdump| |-- dexopt| |-- df -> toolbox| |-- dmesg -> toolbox| |-- drm1_unit_test| |-- drm2_unit_test| |-- dumpstate| |-- dumpsys| |-- exists -> toolbox| |-- getevent -> toolbox| |-- hd -> toolbox| |-- ifconfig -> toolbox | |-- input| |-- insmod -> toolbox | |-- install_boot_image | |-- ioctl -> toolbox| |-- kill -> toolbox| |-- linker| |-- ln -> toolbox| |-- log -> toolbox| |-- logcat| |-- ls -> toolbox| |-- lsmod -> toolbox | |-- mem_profiler| |-- mkdir -> toolbox | |-- mkdosfs -> toolbox | |-- monkey| |-- mount -> toolbox | |-- mtptest| |-- netcfg| |-- netstat -> toolbox | |-- notify -> toolbox | |-- ping -> toolbox| |-- powerd -> toolbox | |-- pppd| |-- printenv -> toolbox | |-- ps -> toolbox| |-- pv| |-- r -> toolbox| |-- reboot -> toolbox| |-- renice -> toolbox| |-- resetradio -> toolbox | |-- rild| |-- rm -> toolbox| |-- rmdir -> toolbox| |-- rmmod -> toolbox| |-- ro.xml| |-- ro2.xml| |-- roerror.xml| |-- rotatefb -> toolbox | |-- route -> toolbox| |-- runtime| |-- sdutil| |-- sendevent -> toolbox | |-- service| |-- setconsole -> toolbox | |-- setkey -> toolbox| |-- setprop -> toolbox | |-- sh| |-- showmap| |-- showslab| |-- sleep -> toolbox| |-- smd -> toolbox| |-- sqlite3| |-- ssltest| |-- start -> toolbox| |-- stop -> toolbox| |-- su| |-- sync -> toolbox| |-- syren -> toolbox| |-- system_server| |-- toolbox| |-- umount -> toolbox| |-- usbd| |-- watchprops -> toolbox | |-- webgrab -> toolbox | `-- wipe -> toolbox|-- build.prop|-- etc| |-- event-log-tags| |-- favorites-default.xml | `-- gservices.xml|-- fonts| |-- DroidSans-Bold.ttf| |-- DroidSans.ttf| |-- DroidSansFallback.ttf | |-- DroidSansMono.ttf| |-- DroidSerif-Bold.ttf| |-- DroidSerif-BoldItalic.ttf | |-- DroidSerif-Italic.ttf| `-- DroidSerif-Regular.ttf |-- framework| |-- am.jar| |-- core.jar| |-- ext.jar| |-- framework-res.apk| |-- framework-tests.jar| |-- framework.jar| |-- input.jar| |-- monkey.jar| `-- ssltest.jar|-- lib| |-- libFFTEm.so| |-- libUAPI_jni.so| |-- libaes.so| |-- libandroid_runtime.so | |-- libaudioflinger.so| |-- libc.so| |-- libcorecg.so| |-- libcrypto.so| |-- libctest.so| |-- libcutils.so| |-- libdbus.so| |-- libdl.so| |-- libdrm1.so| |-- libdrm1_jni.so| |-- libdvm.so| |-- libembunit.so| |-- libevent.so| |-- libexpat.so| |-- libhardware.so| |-- libicudata.so| |-- libicui18n.so| |-- libicuuc.so| |-- libm.so| |-- libmedia.so| |-- libmedia_jni.so| |-- libnativehelper.so| |-- libopengles_cm.so| |-- libpim.so| |-- libpixelflinger.so| |-- libpv.so| |-- libreference-ril.so| |-- libril.so| |-- libsgl.so| |-- libsonivox.so| |-- libsqlite.so| |-- libssl.so| |-- libstdc++.so| |-- libsurfaceflinger.so| |-- libsystem_server.so| |-- libthread_db.so| |-- libui.so| |-- libutils.so| |-- libwebcore.so| |-- libz.so| `-- security| `-- cacerts.bks|-- lost+found|-- media| `-- audio| `-- ringtones| |-- em_ringtone1.mp3 | |-- em_ringtone2.mp3 | |-- ring3.mp3| `-- ringer.mp3|-- sounds| `-- test.mid`-- usr|-- keychars| |-- qwerty.kcm.bin| |-- qwerty2.kcm.bin| `-- tuttle2.kcm.bin|-- keylayout| |-- qwerty.kl| `-- tuttle2.kl|-- share| |-- bsk| | |-- V_FD_speed_101.bsk | | `-- V_FD_std_101.bsk| `-- zoneinfo| |-- zoneinfo.dat| `-- zoneinfo.idx`-- srec`-- config|-- | |-- audio| | `-- v139| | `-- v139_113.nwv| |-- baseline.par| |-- baseline11k.par| |-- baseline8k.par| |-- dictionary| | `-- basic.ok| |-- g2p| | |-- en-US-15k.dictionary | | |-- en-US-60k.dictionary | | |-- en-US-90k.dictionary| | `-- en-US-ttp.data| |-- grammars| | |-- VoiceDialer.g2g| | |-- bothtags5.g2g| | |-- dynamic-test.g2g| | `-- enroll.g2g| `-- models| |-- generic.lda| |-- generic.mul| |-- generic.swiarb| |-- generic.swimdllst| |-- generic_f.swimdl| `-- generic_m.swimdl|-- shared| `-- sigmoid_param`-- speech_prompt.mp33。
Android的文件系统根目录的结构

经过这几天在网上搜索关于Android文件系统的相关资料,发现已经有很多高手分析了Android的文件系统,这些高手多从不同的方面分析了其文件系统的结构和运行原理。
我这里就写一下自己的理解。
首先是Android的文件系统根目录的结构:# pwd && ls -a -l/drwxrwxrwt root root 2009-06-10 09:53 sqlite_stmt_journalsdrwxrwx--- system cache 2008-09-06 22:51 cached---rwxrwx system system 1970-01-01 08:00 sdcardlrwxrwxrwx root root 2009-06-09 22:11 etc -> /system/etcdrwxr-xr-x root root 2008-09-06 22:45 systemdrwxr-xr-x root root 1970-01-01 08:00 sysdrwxr-x--- root root 1970-01-01 08:00 sbin-rw-r--r-- root root 117 1970-01-01 08:00 runme.shdr-xr-xr-x root root 1970-01-01 08:00 proc-rwxr-x--- root root 1704 1970-01-01 08:00 init.trout.rc-rwxr-x--- root root 9329 1970-01-01 08:00 init.rc-rwxr-x--- root root 1677 1970-01-01 08:00 init.goldfish.rc-rwxr-x--- root root 106636 1970-01-01 08:00 init-rw-r--r-- root root 118 1970-01-01 08:00 default.propdrwxrwx--x system system 2008-09-06 22:51 datadrwx------ root root 2009-06-07 16:29 rootdrwxr-xr-x root root 2009-06-09 22:11 devsqlite_stmt_journals:一个根目录下的tmpfs文件系统,用于存放临时文件数据。
ramdisk.img及boot.img的生成过程

ramdisk.img及boot.img的生成过程ramdisk.img及boot.img的生成过程ramdisk.imgramdisk.img是组成boot.img的重要部分,从Android/build/core/Makefile中可以看到ramdisk.img的生成该过程.# the ramdiskINTERNAL_RAMDISK_FILES := $(filter $(TARGET_ROOT_OUT)/%, \ $(ALL_PREBUILT) \ $(ALL_COPIED_HEADERS) \$(ALL_GENERATED_SOURCES) $(ALL_DEFAULT_INSTALLED_ MODULES))BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET) $(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) | $(MINIGZIP)...$(hide) $(MKBOOTFS) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $@ramdisk.img是用mkbootfs工具从out/target/product/tcc8900/root目录制作得到,所以,需要把注意力转移到out/target/product/tcc8900/root 目录及其内容是如何生成的这一主题上来。
其实,ALL_PREBUILT包含了root目录中的大多数内容,另外的ALL_COPIED_HEADERS,ALL_GENERATED_SOURCES暂时不予以考虑。
以下列表列出了与out/target/product/tcc8900/root生成相关的文件:/init.goldfish.rc------------------->Android/system/core/rootdir/etc/init.goldfish.rc/init.rc ------------------->device/telechips/tcc92xx-common/init.rc如果device/telechips/tcc92xx-common/init.rc不才存在,将使用Android/system/core/rootdir/etc/init.rc文件/sbin(create)-------------------------------->Android/system/core/rootdir/Android.mk/dev(create)--------------------------------->Android/system/core/rootdir/Android.mk/proc(create)-------------------------------->Android/system/core/rootdir/Android.mk/sys(create)--------------------------------->Android/system/core/rootdir/Android.mk/system(create)------------------------------>Android/system/core/rootdir/Android.mk/data(create)-------------------------------->Android/system/core/rootdir/Android.mk/sbin/adbd(compile)-------------------------->Android/system/core/adb/Android.mk/init(compile)------------------------------->Android/system/core/init/Android.mk/sbin/timetest(compile)---------------------->Android/system/core/extras/timeinfo/Android.mk /lib/modules/tcc92x_nand.ko(copy)------------>Android/hardware/telechips/nand/Makefile/lib/modules/ufsd.ko(copy)------------------->Android/telechips/tcc92xx-common/Android.mk/lib/modules/viqe.ko(copy)------------------->Android/telechips/tcc92xx-common/Android.mk至于其他的诸如/config , /cache, /nand,/inand,/mnt,/mnt/nand,/sata,/scisi,/app-cache等目录都在init.rc中被创建。
Android的文件系统结构

Android的⽂件系统结构1、Android⽂件系统的结构官⽅android源码编译后得到的⽂件如下:其中有system.img,ramdisk.img,userdata.img三个映像⽂件。
其中,ramdisk.img是⽂件系统,system.img包括了主要的包、库等⽂件,userdata.img包括了⼀些⽤户数据,当emulator加载这3个映像⽂件后,会把system.img和userdata.img分别加载到ramdisk⽂件系统中的system和userdata⽬录下。
2、分离组建Android⽂件系统system.img,ramdisk.img,userdata.img映像⽂件是采⽤cpio打包、gzip压缩的,可以通过file命令验证:filer amdisk.img,输出:[plain]1. ramdisk.img:gzip compressed data, from Unix, last modified:其中ramdisk.img是⼀个分区映像⽂件,即是⼀个⽂件系统(root file system),,kernel启动时,ramdisk负责init,system.img包括了主要系统,系统app等,挂载于⽂件系统下的system⽂件夹, userdata.img包括了⼀些⽤户数据,被挂载到⽂件系统下的data⽂件夹下。
另外Android源码编译后还有root、system、data三个⽂件夹,其实就是上述三个img解压之后的内容⽽已,root⽂件夹⾥⾯的内容就是ramdisk.img解压后的内容,即是⼀个⽂件系统,包括system、data、bin、dev等⽬录。
⽽system与data则对应着system.img与userdata.img 的解压后的内容。
验证⼀下就⾏了,将ramdisk.img复制⼀份到任何其他⽬录下,将其名称改为ramdisk.img.gz,并使⽤命令[java]1. gunzip ramdisk.img.gz然后新建⼀个名为ramdisk的⽂件夹,转到ramdisk⽬录,输⼊命令[html]1. <pre name="code" class="java">cpio-i -F ../ramdisk.img这下,就能看见ramdisk⾥⾯的内容与root⽂件夹⼀样的了。
安卓解包、打包system.img教程 (1)

安卓解包、打包system.img教程自从得知ROM助手可以解包IMG的文件后,再也不用安装LINUX系统来解包和打包system.img文件,这对于新手机友朋友无疑是一个劲爆的消息,很多朋友都对安装和操作LINUX系统的繁琐望而却步,不会安装LIXUX系统也就无法对system.img进行解包,进而就无法修改System.img里面的内容,制作属于自己的刷机包了也就无法谈起。
那么今天咱们就分享下如何在windows系统下对system.img进行解包修改和打包的。
1、提取system.img一般的刷机包后缀名是MD5或者tar格式,如果是MD5的话就重命名位tar 格式,然后再解压缩,PS:解压缩都会的吧。
解压出来之后里面有很多img文件,其中就包括system.img。
这就是今天的猪脚,搞的就是他。
三星刷机包作为案例。
2、下载安装ROM助手打开ROM助手,选择“系统精简”功能。
使用之前要注意,最好把一些杀毒软件暂时的关闭,3、加载system.img把第一步提取的system.img加载进去。
稍等片刻,等待加载完成。
4、精简和添加这时ROM助手把整个system.img的APK都显示出来了,在保证刷机包的完整性的同时,你想怎么玩就怎么玩,如果不尽兴的话ROM助手还有一层功效哦!!!继续往下看。
5、文件包的修改在加载完成后ROM助手的安装目录会生成一个文件夹,这里显示的是全部system.img的内容我的是 D:\MoGu\Temp\~0,在这里你可以尽情的移植,美化什么的,只要你会的都可以玩。
另外:ROM助手的美化功能在抓紧的开发测试中,敬请期待哦~~~6、封装IMG一切完成后点击右下角的“开始封装”等待封包完成,这样system.img的解包修改打包就结束了,是不是很简单的呀!!!在人家还在安装LINUX的时候你都完成了SYSTEM的封包,很有成就感的哈,7、刷机三星刷机包由于他的特殊性,是Tar格式最后还需要一个TAR打包工具,兄弟们在网上下载即可搞定后就刷机哦~~~。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ramdisk.img system.img userdata.img介绍及解包、打包方法2011-11-25 11:37:24分类:ramdisk.img system.img userdata.img介绍及解包、打包方法Android 源码编译后,在out/target/product/generic下生成的三个镜像文件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data。
ramdisk.img是根文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,android加载这3个映像文件后,会把system和userdata分别加载到ramdisk文件系统中的system和data目录下。
三个镜像文件及其三个目录树之间的生成关系是我们进行ROM制作的基础,下面将做详细介绍。
Ramdisk镜像是采用cpio打包,gzip压缩的。
用file验证:# file ramdisk.img输出: # ramdisk.img: gzip compressed data, from Unix为了便于说明问题,我们将ramdisk.img拷贝到其它一个目录,然后按以下步骤将ramdisk.img还原为目录树:# mv ramdisk.img ramdisk.img.gz# gunzip ramdisk.img.gz# mkdir ramdisk#cd ramdisk#mkdir temp#cd temp# cpio –i –F ../ramdisk.img这样,就得到一个完整的ramdisk目录,与out/target/product/generic/root对比后,我们发现它们是一样的内容。
通过执行以下的操作,我们可由目录树再生成ramdisk镜像# cd temp# find . | cpio -o -H newc | gzip > ../ramdisk-new.img 这两个镜像都属于yaffs2文件格式,生成方式是一样的。
我们就以system.img为例来说明。
System.img >> system目录树所需工具unyaffs, 下载地址/unyaffs/downloads/list # mkdir system# cd system# unyaffs ../system.imgsystem目录树>> system.img所需工具mkyaffs2image,Android源码编译后会生成该工具,在out/host/linux-x86/bin 目录下。
命令格式:# mkyaffs2image system/ system_new.img了解以上方法的意义在于,我们可以对镜像文件镜像修改,定制,以符合自己的需求。
网上有很多制作Android ROM的教程,这里罗列一些链接:北理工的陈罡写的两篇文章,是我目前发现的最好的教程,写的非常详细/26691/showart_2193396.html/26691/showart_2194274.html这两篇文章参考了国外论坛的几个经典教程:/showthread.php?t=566235/wiki/inde ... Re-Pack_Boot_Images国内还有一篇文章写的也不错,这篇文章更侧重于制作类似Patch的ROM包/201002/00ID1030.html这里基于自己的理解和测试,总结了一些方法步骤。
Android 的ROM包通常称为update.zip包,你可以到上下载现成的.zip 包。
要学习ROM包的制作,我们可以从这样一个zip包开始。
解开zip包后,通常有这样一些内容:1、boot.img 文件这是编译内核源代码生成的内核映像,然后与android源码编译出来的ramdisk.img一起通过mkbootimg工具创建出来的,图省事的朋友也可以从网上其他的刷机包里面拷贝一个能用的出来即可,基本上都差不多。
2、 META-INF目录这个目录是手工创建的,主要用来存放一个升级脚本update-script(这个脚本的内容与system目录中包含的文件有很大关联)以及签名。
3、system 目录这个目录就是编译android的平台源代码生成的要创建自己的ROM,我们通常会涉及到以下的一些工作:1.编译内核生成内核映像。
但一般情况下,我们没有必要自己去编,直接从刷机包里面取出一个就可以。
譬如,你要做一个2.2版本的升级包。
可以到网上找一个与自己机型相匹配的刷机包,从里面取出相应的kernel.img。
2.ramdisk.img的修改。
ramdisk.img 是根文件系统,Ugg boots,里面包含了启动配置脚本。
3.update-script的修改。
4.System的修改。
详细的步骤可以参考/26691/showart_2194274.html。
我们先做个简单的测试工作,来为后面更复杂的工作做好铺垫。
测试内容为:先对zip进行解包,然后分别在ramdisk和system的根目录下添加一个小文件,接着,生成新的ROM,并验证ROM是否可用。
这里要指出的是,这篇文章以及网上许多类似网站提到的方法都是针对HTC G1或Nexus one的。
而我在测试的时候,用的是HTC G3 Hero。
以上的方法导致的一个后果是,重新打包后再烧录,机器无法正常启动,adb shell也无法登陆。
后来在国外的一篇博客上看到了对此问题的说明,问题的根源很简单,从G3开始,打包的时候需要指定“--base”参数。
对于Hero,参数为”--base 0x”,但对于其它型号的机器,”--base"要设定为多少,需要参考内核代码的实现。
解包打包可用两个脚本完成unpack-bootimg.pl, repack-bootimg.pl。
其中打包脚本用到的mkbootimg工具,在out/host/linux-x86/bin目录下。
unpack-bootimg.pl可直接将boot.img生成内核镜像boot.img-kernel和ramdisk目录树boot.img- ramdisk。
repack-bootimg.pl可将boot.img-kernel和boot.img-ramdisk重新生成boot.img。
在解包后,我们在ramdisk和system目录下,各添加一个测试小文件(譬如叫mytest)。
做完这些开始组包,重新生成update.zip。
到这里我们的工作并没有完全结束,还有最后的一步——签名。
签名需要用到签名工具testsign.jar,这是一个基于java 1.6版本的工具。
在编译Android源码的时候,我们强调要用java 1.5。
在这里,我们必须切换到1.6版本。
1)重新生成boot.img将前面解包得到的boot.img-ramdisk 和编译源码后out/target/product/generic/下的root目录树放在一个目录下,然后用repack-bootimg.pl重新生成boot.img2) 创建一个目录myupdate,将上面生成的boot.img放到这个目录下3)将编译Android后,out/target/product/generic/生成的system目录树拷贝到myupdate目录4)在myupdate目录下创建update-script脚本目录# mkdir -p META-INF/com/google/android5)删除system/bin目录下的“符号链接”,创建update-script脚本研究原有的update-script脚本,我们可以大致看出update-script负责文件删除拷贝,权限设置,符号链接创建等工作。
我们可以在原有update-script的基础上进行修改以得到我们自己的update-script。
这里,我们要注意的是,要保证update-script 的link创建成功,必须把/system/bin下的link删除。
我们可以用一个脚本来做这个工作delsymlink。
我修改后与自己编译的Android2.2 system目录树相匹配的脚本。
6)重新打包并签名7)自制ROM下载时报错在试验过程中,我经常遇到如下的报错Can't open/sdcard/download/update.hiapk问题原因:当update-script 中有命令操作错误,脚本就会停止,并报这个错误,解决的办法就是修正脚本。
你可以从这个错误前面的提示,知道脚本哪一行出错了。
很多时候,你并不需要创建一个完整的ROM包。
你需要的只是,添加删除或修改一些功能(譬如你仅想添加一个应用,或者你想添加busybox工具)。
我们可以参考这里,来实现这个目的。
3.创建一个Patch功能的ROM很多时候,你并不需要创建一个完整的ROM包。
你需要的只是,添加删除或修改一些功能(譬如你仅想添加一个应用,或者你想添加busybox工具)。
我们可以参考这里,来实现这个目的。
我用一个简单的例子来说明这个过程。
该例子是在system目录下添加一个mytest文件,同时创建一个指向这个文件的符合链接mylink。
以下是过程:1)创建patch_update目录,并在该目录下执行# mkdir system# mkdir –p META-INF/com/google/android2)在system目录下生成mytest文件3)在META-INF/com/google/android 创建如下的update-scriptshow_progress 0.1 0copy_dir PACKAGE:system SYSTEM:symlink mytest SYSTEM:mylinkset_perm 0 0 0755 SYSTEM:mytest4) 打包签名如果前面的3步曲,你已经很好的掌握了,应付你的日常工作应该没有太大的问题。
但要成为真正的ROM高手,你还有很多东西要修炼。
你要了解整个启动过程,内核编译,Android源码的编译及配置,文件系统及启动配置。
烧录Android 机器HTC的官网上有一篇文章这里详细介绍了镜像包及烧机方法。
通常用两种烧录方式:recovery模式,fastboot模式。
通过一些组合键,可以进入烧录模式。
以HTC G3 Hero为例,“Home + Power”同时按,可以进入Recovery模式,“Back + Power”可以进入fastboot 模式。
Recovery模式比较常用,它相当菜单界面的下载模式。
直接把前面所述的update.zip 文件放到SD卡上,然后通过在机器上操作控制菜单,就可完成烧录。