转载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打包工具,兄弟们在网上下载即可搞定后就刷机哦~~~。
Android系统镜像文件的打包过程分析
Android系统镜像文件的打包过程分析在前面一篇文章中,我们分析了Android模块的编译过程。
当Android系统的所有模块都编译好之后,我们就可以对编译出来的模块文件进行打包了。
打包结果是获得一系列的镜像文件,例如system.img、boot.img、ramdisk.img、userdata.img和recovery.img等。
这些镜像文件最终可以烧录到手机上运行。
在本文中,我们就详细分析Android系统的镜像文件的打包过程。
Android系统镜像文件的打包工作同样是由Android编译系统来完成的,如图1所示:从前面和这两篇文章可以知道,Android编译系统在初始化的过程中,会通过根目录下的Makefile脚本加载build/core/main.mk脚本,接着build/core/main.mk脚本又会加载build/core/Makefile脚本,而Android系统镜像文件就是由build/core/Makefile脚本负责打包生成的。
在build/core/main.mk文件中,与Android系统镜像文件打包过程相关的内容如下所示:[plain] view plain copy......ifdef FULL_BUILD# The base list of modules to build for this product is specified# by the appropriate product definition file, which was included# by product_config.make.product_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES) # Filter out the overridden packages before doing expansionproduct_MODULES := $(filter-out $(foreach p, $(product_MODULES), \$(PACKAGES.$(p).OVERRIDES)), $(product_MODULES))$(call expand-required-modules,product_MODULES,$(product_MODULES))product_FILES := $(call module-installed-files, $(product_MODULES))else# We're not doing a full build, and are probably only including# a subset of the module makefiles. Don't try to build any modules# requested by the product, because we probably won't have rules# to build them.product_FILES :=endif......modules_to_install := $(sort \$(ALL_DEFAULT_INSTALLED_MODULES) \$(product_FILES) \$(foreach tag,$(tags_to_install),$($(tag)_MODULES)) \$(call get-tagged-modules, shell_$(TARGET_SHELL)) \$(CUSTOM_MODULES) \)# Some packages may override others using LOCAL_OVERRIDES_PACKAGES.# Filter out (do not install) any overridden packages.overridden_packages := $(call get-package-overrides,$(modules_to_install))ifdef overridden_packages# old_modules_to_install := $(modules_to_install)modules_to_install := \$(filter-out $(foreach p,$(overridden_packages),$(p) %/$(p).apk), \$(modules_to_install))endif......# Install all of the host modulesmodules_to_install += $(sort $(modules_to_install) $(ALL_HOST_INSTALLED_FILES))# build/core/Makefile contains extra stuff that we don't want to pollute this# top-level makefile with. It expects that ALL_DEFAULT_INSTALLED_MODULES# contains everything that's built during the current make, but it also further# extends ALL_DEFAULT_INSTALLED_MODULES.ALL_DEFAULT_INSTALLED_MODULES := $(modules_to_install)include $(BUILD_SYSTEM)/Makefilemodules_to_install := $(sort $(ALL_DEFAULT_INSTALLED_MODULES))ALL_DEFAULT_INSTALLED_MODULES :=.......PHONY: ramdiskramdisk: $(INSTALLED_RAMDISK_TARGET).PHONY: userdataimageuserdataimage: $(INSTALLED_USERDATAIMAGE_TARGET).......PHONY: bootimagebootimage: $(INSTALLED_BOOTIMAGE_TARGET)......如果定义在FULL_BUILD这个变量,就意味着我们是要对整个系统进行编译,并且编译完成之后,需要将编译得到的文件进行打包,以便可以得到相应的镜像文件,否则的话,就仅仅是对某些模块进行编译。
从官方原生ROM(system.img)定制update.zip刷机包
要定制自已ROM首先要从官方原生ROM提取system.imgsystem.img这个系统文件解包并打包成update.zip的形式用来刷机,update.zip制作步骤:一、准备工作:1、提取system.img ,具体方法见:提取到后,把system.img 放到你的linux 操作环境可以访问的某个文件夹,例如system/system.img ,尽量把文件夹命名成system ,以后就不用修改压缩包了(Linux 的路径书写方式,这里需要提示一点,Linux 终端是对大小写敏感的,请注意。
)2、Linux 操作环境(任意的,例如:虚拟机安装、虚拟机LiveCD、实机安装、实机LiveCD 等等,不在本教程讨论范围)3、img 解包工具unyaffs.zip(3.99 KB, 下载次数: 74)下载并解压缩。
二、解包system.img文件1、启动Linux并以root 用户登录(如何用root登录,自己在网上搜索一下吧),把刚才解压的unyaffs 复制到/bin 文件夹下2、启动终端,进入/bin 文件夹(cd /bin),输入如下命令sudo chmod 777 unyaffs (赋予unyaffs 执行权限):3、进入刚才存放system.img 文件夹,(例如我的是/media/Soft/system/(这里的media 是挂载的硬盘分区,Soft是硬盘分区卷标(我的是F盘))里,执行命令unyaffs system.img (解包img 的命令行),直到屏幕显示:4、进入system文件夹删除system.img 文件5、在终端命令行状态下输入命令sudo chmod -R 777 * (为system 文件夹下所有目录和文件赋予最高权限):三、打包最原始的update.zip1、在终端命令行状态下输入命令返回system的上一级目录(父目录),如下图2、在终端命令行下执行zip -r system.zip system(把system文件夹打包成zip文件)3、把system.zip文件夹重命名为update.zip 备用,system 文件可以删除了(如果以后需要从这里提取原机程序,是可以保留的)四、修改update.zip 为可刷机的ROM包1、重新启动计算机,进入windows操作系统2、这里我们需要两个东东:①刷机脚本②内核(boot.img)。
【沙发管家】智能电视如何通过ADB获取ROOT权限?
【沙发管家】智能电视如何通过ADB获取ROOT权限?如何通过adb获取root权限(安卓的网络盒子和智能电视通用)Android 系统rom里面最主要的就3个文件:boot.img、system.img、userdata.img其中boot.img 存放着内核以及Android系统的配置信息,比如android系统各文件夹的读写权限,adb 的权限。
所以如果你要修改adb的root权限,修改boot.img对应的地方就行了。
system.img中存放的是系统的各种库,系统预装的app等。
userdata.img是存放用户的配置信息。
本文将介绍如何解开boot.img文件,修改对应的文件,使adb登录后为root用户。
使用工具:bootimg.exe 常用于解包boot.img 、recovery.img等等。
简要流程:1.解包 boot.img命令: bootimg --unpack-bootimg注:boot.img应和bootimg.exe在同一目录下。
2.解包 ramdisk.gz (从boot.img 解包获得)命令: bootimg --unpack-ramdisk注:会产生目录initrd,此目录下包含各种可执行程序和驱动程序。
在此目录下修改文件default.prop。
将ro.secure=0,意为关闭保护。
3.打包 ramdisk.gz命令: bootimg --repack-ramdisk注:当前目录必须存在cpiolist.txt 和initrd目录 ,4.打包boot.img命令: bootimg --repack-bootimg5.将boot.img刷入,在PC机上测试。
最后温馨提醒一下,ROOT有风险,需谨慎!!。
关于android的各种diskimages
关于android的各种diskimages关于android的各种disk images对android的各种disk images很好奇,一直想知道怎么去know 和hack这些images,所以就有了这篇paper。
1.用file来查看文件类型1.chenjian@ubuntu8:/tmp/images$ file *2.kernel-qemu: data3.local.img: data4.ramdisk.img: gzip compressed data, from Unix, last modified: Thu Oct 22 16:30:38 20095.system.img: VMS Alpha executableerdata.img: VMS Alpha executable7.opl.img: VMS Alpha executable8.可见有三种,data, gzip和VMS Alpha executable;9.再看从avd目录取得的image文件10.chenjian@ubuntu8:/tmp/images/HVGA.avd$ file *11.cache.img: VMS Alpha executableerdata.img: VMS Alpha executableerdata-qemu.img: data14.仍然没有逃脱以上三种image类型。
15.用表格表示如下2.ramdisk.img0.可以使用这个命令来查看ramdisk.img1.root@ubuntu8:/tmp/images# gzip -d -S .img ramdisk.img2.root@ubuntu8:/tmp/images# ls -lrt ramdisk3.-rw-r--r-- 1 root root 260608 Oct 22 01:34 ramdisk4.可见ramdisk.img被解压成ramdisk,5.root@ubuntu8:/tmp/images# file ramdisk6.ramdisk: ASCII cpio archive (SVR4 with no CRC)7.可见ramdisk是个cpio文件,需要用cpio来extract8.root@ubuntu8:/tmp/images# mkdir ramdiskdir 创建ramdiskdir来装ramdisk 的内容9.root@ubuntu8:/tmp/images# cd ramdiskdir/ cd到该目录中10.root@ubuntu8:/tmp/images/ramdiskdir# cpio -idmv <../ramdisk 使用cpio来extractramdisk文件11.data12.default.prop13.dev14.init15.init.goldfish.rc16.init.rc17.proc18.sbin19.sbin/adbd20.sys21.system22.509 blocks23.root@ubuntu8:/tmp/images/ramdiskdir#ls 这就是被打包在ramdisk中的文件24.data default.prop dev init init.goldfish.rc init.rc proc sbin sys system25.使用find和file来看这些文件,发现init其实是个ARM arch的可执行文件,这也和emulator中所说的linux是ARM arch相吻合26.root@ubuntu8:/tmp/images/ramdiskdir# find . -type f|file -f -27../default.prop: ASCII text28../init.rc: ASCII English text29../init.goldfish.rc: ASCII English text30../init: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped31../sbin/adbd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped32.查看某些文件的md5root@ubuntu8:/tmp/images/ramdir# find . -name "init*"|xargs md5sumc3cff931e494bb4872f0ebefe1dad548 ./init.rc90dd60a3458cce84901d12b362880339 ./init.goldfish.rc7a950533c62fe91300a5b31b12a38084 ./init33.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 ./init3.data4.data文件共有这么几个,kernel-qemu,local.img和userdata-qemu.img。
android中各种img文件的作用以及系统启动过程
android中各种img文件的作用以及系统启动过程android中各种img文件的作用以及系统启动过程2011-11-09 17:41首先通过编译,先将android内核编译成功。
正常情况下,在目录out/target.product/generic/(但是有的就没有generic文件,如freescale和iriver;但是lonshinetech下面就有这个文件,依据情况而定,只要能找到生成的三个文件就可以。
例如:~/freescale/R9.2/out/target/product/imx51_bbg$ )下会生成三个文件:ramdisk.img,system.img,userdata.img。
这三个文件的作用如下:(1)ramdisk.img一个分区影像文件,它会在kernel 启动的时候,以只读的方式被mount ,这个文件中只是包含了/init 以及一些配置文件,这个ramdisk 被用来调用init,以及把真正的root file system mount 起来。
#其实ramdisk.img的内容就是/out/target/product/generic/root目录的压缩而已。
方法1:android编译生成后的ramdisk.img是一个gzip 格式的文件,输入命令# file ramdisk.img, 会得到=>ramdisk.img: gzip compressed data, from Unix那么先解压ramdisk.img,因为后缀不是.gz,所以用—S选项, # gunzip -S .img ramdisk.img这样就得到一个新文件ramdisk.img,用# file ramdisk 查看格式, 得到=> ramdisk: ASCII cpio archive (SVR4 with no CRC) 可以看出解压生成的ramdisk是cpio格式的文件,再次解压,为了防止解压后文件混乱,首次建立一个目录如:# mkdir rfs //rfs可以用来放ramdisk解压后的文件, 进入# cd rfs解压# cpio -i -F ../ramdisk 方法2:将ramdisk.img复制一份到任何其他目录下,将其改名为ramdisk.img.gz,然后使用命令# gunzip ramdisk.img.gz,然后新建一个文件夹ramdisk,进入,输入命令# cpio -i -F ../ramdisk.img 得到结果如下drwxr-xr-x 8 root root 4096 2011-01-12 11:36 ./drwxr-xr-x 13 root root 4096 2011-01-12 11:35 ../drwxrwx--x 2 root root 4096 2011-01-12 11:36 data/-rw-r--r-- 1 root root 118 2011-01-12 11:36 default.propdrwxr-xr-x 2 root root 4096 2011-01-12 11:36 dev/-rwxr-x--- 1 root root 107784 2011-01-12 11:36 init*-rwxr-x--- 1 root root 492 2011-01-12 11:36init.freescale.rc*-rwxr-x--- 1 root root 1677 2011-01-12 11:36init.goldfish.rc*-rwxr-x--- 1 root root 18263 2011-01-12 11:36 init.rc*drwxr-xr-x 2 root root 4096 2011-01-12 11:36 proc/drwxr-x--- 2 root root 4096 2011-01-12 11:36 sbin/drwxr-xr-x 2 root root 4096 2011-01-12 11:36 sys/drwxr-xr-x 2 root root 4096 2011-01-12 11:36 system/ #可以看出这写文件是和root目录下的内容完全一样,其实就是对root目录的打包和压缩。
fastboot刷机命令齐全
在安卓手机中fastboot是一种比recovery更底层的模式。
fastboot是一种线刷,就是使用USB数据线连接手机的一种刷机模式。
这种模式是更接近于硬件的界面,所以这个模式一般好似在手机变砖或者修复时使用的。
今天就说说fastboot的详细教程。
分区解释:system:系统分区.userdata:数据分区.cache:缓存分区recovery:Recovery分区.boot:存放内核和ramdisk的分区.hboot:这个是SPL所在的分区.很重要哦.也是fastboot所在的分区.刷错就真的变砖了.splash1:这个就是开机第一屏幕了.radio:这个是radio所在的分区连接数据线,按下电源键进入fastboot usb.运行CMD【单击开始,选择运行,在弹出的框框里输入cmd,确定,弹出cmd界面】然后直接输入 fastboot flash recovery XXXX\recovery.img 【XXXX是recovery.img 的位置】,我的位置是D盘,那自然就是fastboot flash recovery D:\recovery.img具体大家放哪里就请自行修改了。
然后按回车,OK ,已经刷入recovery了。
重启手机即可。
基本命令:显示设备:adb devices发送电脑端文件到设备SD卡:adb push 文件路径/文件名/sdcard/发送SD卡文件到电脑:adb pull /sdcard/文件路径/文件名D:\进行shell操作:adb shell查看adb命令帮助:adb help显示fastboot设备:fastboot devices查看fastboot命令帮助:fastboot help获取手机相关信息:fastboot getvar allreboot重启相关依次类推,需要擦除哪个分区就填写哪个分区的名字。
写入分区(flash)依次类推,需要擦除哪个分区就填写哪个分区的名字。
Android 中的各个Image
IM820中各个Image之间的关系OBJCOPY: objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中。
Objcopy使用GNU BFD库去读或写目标文件。
Objcopy可以使用不同于源目标文件的格式来写目的目标文件(也即是说可以将一种格式的目标文件转换成另一种格式的目标文件)对内核的一些解释:vmlinuz: 是可引导的、压缩的内核。
“vm”代表“Virtual Memory”。
vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz;vmlinux:未压缩的内核,是ELF文件即编译出来的最原始的文件;Image: 内核映像文件, 其实就是vmlinux的OBJCOPY;zImage: 用gzip对vmlinux压缩后的文件的OBJCOPY;uImage:是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别;对在IM820中这些是如何生成内核的一些说明:vmlinux: 由mydroid/kernel/android-2.6.29/Makefile生成:在Makfile的526行 all:vmlinux //可以看出编译内核肯定会得到vmlinuxImage由Mydroid/kernel/arch/arm/boot/.Image.cmd第一行文件生成cmd_arch/arm/boot/Image := arm-none-linux-gnueabi-objcopy -O binary -R .note -R .note.gnu.build-id -R .comment -S vmlinux arch/arm/boot/ImagezImage由 Mydroid/kernel/arch/arm/boot/.zImage.cmd文件的第一行生成cmd_arch/arm/boot/zImage := arm-none-linux-gnueabi-objcopy -O binary -R .note -R .note.gnu.build-id -R .comment -S arch/arm/ boot/compressed/vmlinuxarch/arm/boot/zImage//compressed/vmlinux的意思是用gzip压缩过的vmlinuxuImage由Mydroid/arch/arm/boot/.uImage.cmd文件的第一行生成cmd_arch/arm/boot/uImage:=/bin/bash /mnt/sdb1/home/lijl/25.14/mydroid/kernel/android-2.6.29/scripts/mkuboot.sh -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n 'Linux-2.6.29-omap1' -d arch/arm/boot/zImage arch/arm/boot/uImagemkuboot.sh 这个脚本其实就是指/home/mid/bin/mkimage这个命令,这个命令是专门给zImage 自动加上uboot的用的文件头的;P59A的启动方式是:开机自动执行ROM code (TI提供已经固化) 然后ROM Code可以片选从一个SD卡或者T卡装载入x-loader到Ti芯片自带的RAM (64K),这是第一级引导程序一般比较小,然后x-loader 又把 uboot.bin装载到一个大的外部RAM(256MB)中,这是第二级引导程序,然后由第二级引导程序装入内核引导次序依次为:Rom code -> x-loader->uboot.bin->kernel;x-loader 的Makefile在 mydroid/bootable/bootloader/ x-loader/Makefile生成文件是:MLOUboot.bin 的Makefile在 mydroid/bootable/bootloader/ u-boot /Makefile生成文件是:u-boot.binuImage就是 kernel文件系统是通过mydroid/Makefile的make j8生成分别是:userdata.img 用户文件系统其实就是userdata目录的内容system.img 系统文件系统其实就是system目录中的内容ramdisk.img 其实就是/文件目录下的内容一般烧内核的时候,把内核和根文件系统同时烧入因此要生成uMulti文件uMulti = uImage + ramdisk.img第一烧录到板子上的文件:1, MLO, u-boot.in, userdata.img, system.img uMulti uboot引导环境变量文件;Uboot环境文件如下,是告诉引导程序一些信息的“bootdelay 3bootargs console=ttyS2,115200n8 mem=256M videoout=omap24xxvout:rotation=0bootcmd nand unlock; nand read.i 81C00000 0x0200000 0x500000; bootm 81C00000“下面再描述如何编译recovery.img(这个是在恢复出厂设置,或升级软件时用到的)编译recovery.img 直接./mydroid下执行make recoveryimage就可以了;但编译会出错,经过查询可以知道真正的Makefile在./mydroid /build/core目录在Makefile中用到变量TARGET_NO_KERNEL,要执行TARGET_NO_KERNEL不能为TRUE 修改./vendor/ti/zoom2/BoardConfig.mk :把TARGET_NO_KERNEL := true导致我们目前在编译的时候,默认没有生成 recovery.img,要生成 recovery.img 必须屏蔽 TARGET_NO_KERNEL := true创建目录: ./vendor/ti/zoom2/recovery/res拷贝编译好的内核到目录:vendor/ti/zoom2cp zImage ./vendor/ti/zoom2/kernel命令: make recoveryimage单独生成 recovery.img, ramdisk-recovery.imgrecovery.img:是recovery文件系统;ramdisk-recovery.img 是根文件系统;。
mkbootimg用法
mkbootimg用法首先需要明确的是,mkbootimg是一个可执行程序,用于生成Android设备的引导映像文件。
这个映像文件包括启动器、内核和根文件系统等必要的元素,是自启动Android设备所必需的重要文件。
本文将详细介绍如何使用mkbootimg生成自定义的引导映像文件。
第一步:准备工作在使用mkbootimg之前,需要准备以下文件:1. Android内核文件(vmlinuz)2. 根文件系统文件(ramdisk.img)3. 适配的硬件设备机型(例如Nexus 6P、Pixel、OnePlus 6T 等)将这些文件准备好以后,就可以开始使用mkbootimg来生成引导映像文件。
第二步:生成引导映像文件使用mkbootimg需要指定一些参数,具体如下:--kernel:表示内核文件路径。
--ramdisk:表示根文件系统文件路径。
--cmdline:表示传递给内核的命令行参数。
--base:表示内核加载的地址,默认为0x100000。
--pagesize:表示页面大小,Android中页面大小默认为2048字节。
--output:表示生成的引导映像文件的输出路径。
举例来说,可以使用以下命令生成引导映像文件:mkbootimg --kernel ./vmlinuz --ramdisk ./ramdisk.img --cmdline "console=ttyS0,115200n8 androidboot.console=ttyS0 androidboot.hardware=ranchu user_debug=31" --base 0x100000 --pagesize 2048 --output ./boot.img其中,路径参数需要根据实际情况替换成相应的文件路径。
第三步:刷写引导映像文件生成引导映像文件后,需要将其刷写到设备的引导分区才能让设备启动。
具体刷写方法因设备而异,一般可以通过刷机工具或者adb 命令行进行操作。
simg2img imgsing用法
simg2img imgsing用法simg2img和img2simg是Android系统中的两个工具,用于将系统镜像文件(system.img、userdata.img等)转换成可读写的img格式,以及将img格式转换成只读的simg格式。
这些工具通常在开发和定制Android系统时使用,以便在不同设备上部署和管理系统镜像。
simg2img和img2simg的用法很简单。
下面分别介绍它们的用法。
1. simg2img的用法:simg2img工具用于将simg格式的系统镜像文件转换为img格式。
使用该工具的命令格式如下:```simg2img <source_simg_file> <output_img_file>```其中,`<source_simg_file>`是要转换的simg格式系统镜像文件的路径,`<output_img_file>`是转换后的img格式系统镜像文件的输出路径。
例如,要将名为system.simg的simg格式系统镜像文件转换为img格式,可以使用以下命令:```simg2img system.simg system.img```执行上述命令后,将生成一个名为system.img的可读写的img格式系统镜像文件。
2. img2simg的用法:img2simg工具用于将img格式的系统镜像文件转换为simg格式。
使用该工具的命令格式如下:```img2simg <source_img_file> <output_simg_file>```其中,`<source_img_file>`是要转换的img格式系统镜像文件的路径,`<output_simg_file>`是转换后的simg格式系统镜像文件的输出路径。
举个例子,要将名为system.img的img格式系统镜像文件转换为simg格式,可以使用以下命令:```img2simg system.img system.simg```执行上述命令后,将生成一个名为system.simg的只读的simg格式系统镜像文件。
- 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卡上,然后通过在机器上操作控制菜单,就可完成烧录。