Android 文件系统制作教程

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

android文件系统制作教程

1)认识android文件系统分区

splash1 :开机画面,Nandroid备份为splash1.img

recovery :设备序列号为mtd1,该分区是恢复模式(即开机按Home+End进入的界面),Nandroid备份为recovery.img

boot :设备序列号为mtd2,底层操作系统内核启动分区,挂载为/目录,Nandroid备份为boot.img

system :设备序列号为mtd3,G1的Android核心平台,挂载为/system目录,通常为只读,Nandroid备份为system.img

cache :设备序列号为mtd4,G1的缓存临时文件夹,挂载为 /cache目录,事实上除了T-mobile的OTA更新外,别无用处,Nandroid备份为cache.img

userdata:设备序列号为mtd5,G1中用户安装的软件以及各种数据,挂载为/data目录,Nandroid备份为data.img

2)常用的fastboot命令

重启G1:

$ fastboot reboot

刷所有分区并重启手机

$ fastboot flashall

刷指定分区:

$ fastboot flash {partition} {file.img}

如:fastboot flash system /备份/system.img

擦除分区:

$ fastboot erase {partition}

如:fastboot erase system

使用update.zip整体刷新

$ fastboot update {update.zip}

刷自定义开机画面:

$ fasboot flash splash1 mysplash.rgb565

3)利用Makefile制作update.zip

从update.zip这个刷机包反推的介绍整个android文件系统的制作过程

并编写了一个Makefile文件,利用 Makefile的”依赖检查”机制管理各种文件的生成步骤和依赖关系;

-1.前期准备

将所有的文件都放在/home/xiaoliang/workspace 目录下,目录下有这些文件夹:

auto-sign data system META-INF root

两个环境变量含义和必须的目录:

SRC_HOME : android源代码所在的目录,例如我放在 /home/xiaoliang/android_src 下

JAVA_HOME: JAVA SDK的目录,我的是 /server/jdk1.5.0_21

0.进行一次源代码编译

1.然后看下面的Makefile

#设置环境变量,JAVA_HOME默认就有

SRC_HOME=/home/liangwei/android_src

#它依赖于system,data,META-INF三个目录和一个boot.img镜像,并且它需要签名

update.zip : boot.img $(shell find system data META-INF)

#生成update_unsign.zip

zip -qr update_unsign.zip system data META-INF boot.img

#签名

$(JAVA_HOME)/bin/java -jar auto-sign/signapk.jar auto-sign/testkey.x509.pem auto-sign/ testkey.pk8 update_unsign.zip update.zip

#删除中间文件

rm -f update_unsign.zip

#依赖于ramdisk.img 和 kernel.img 两个镜像

boot.img:ramdisk.img kernel.img

#使用mkbootimg制作

$(SRC_HOME)/out/host/linux-x86/bin/mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel kernel.img --ramdisk ramdisk.img -o boot.img

#其实它就是源码编译后生成的zImage,拷贝过来改个名字

kernel.img:$(SRC_HOME)/kernel/msm/arch/arm/boot/zImage

cp -f $(SRC_HOME)/kernel/msm/arch/arm/boot/zImage ./kernel.img

#是将root文件夹使用mkbootfs制作的镜像

ramdisk.img:$(shell find root)

$(SRC_HOME)/out/host/linux-x86/bin/mkbootfs ./root |gzip > ramdisk.img

2.总结一下,其实update.zip主要就是三个部分组成:

启动部分: root文件夹 + zImage内核镜像 = boot.img

系统文件部分: system文件夹

用户文件部分: data文件夹

就是:root + system + data + zIamage = update.zip

3.文件的出处

root,system,data文件夹: 来自”$(SRC_HOME)/out/target/product/generic”zIamage: 来自”$(SRC_HOME)/kernel/msm/arch/arm/boot/zImage”

4.刷机脚本:META-INF文件夹

该需要自己创建,并且里面包含1个文件 : com/google/android/update-script ,内容为: show_progress 0.500000 0

format SYSTEM:

copy_dir PACKAGE:system SYSTEM:

set_perm_recursive 0 0 0755 0644 SYSTEM:

set_perm_recursive 0 2000 0755 0755 SYSTEM:bin

set_perm 0 3003 02755 SYSTEM:bin/netcfg

set_perm 0 3004 02755 SYSTEM:bin/ping

set_perm 0 0 04755 SYSTEM:bin/su

set_perm 1002 1002 0440 SYSTEM:etc/dbus.conf

set_perm 1014 2000 0550 SYSTEM:etc/dhcpcd/dhcpcd-run-hooks

set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh

set_perm_recursive 0 0 0755 0555 SYSTEM:etc/ppp

show_progress 0.200000 0

delete_recursive DATA:dalvik-cache

copy_dir PACKAGE:data DATA:

set_perm_recursive 1000 1000 0771 0555 DATA:dalvik-cache

write_raw_image PACKAGE:boot.img BOOT:

show_progress 0.200000 10

4)makefile脚本,制作各种单独的分区文件ramdisk.img,system.img,boot.img

#***********************************

#build android rom script

#***********************************

SRC_HOME=/home/liangwei/android_src

update.zip : boot.img $(shell find system data META-INF)

rm -rf update_unsign.zip

相关文档
最新文档