【Android源码 栏目提醒】:本文主要为网学会员提供“android文件系统制作教程 - 综合课件”,希望对需要android文件系统制作教程 - 综合课件网友有所帮助,学习一下!
android文件系统制作教程1 —- 认识android文件系统分区 nbsp nbsp splash1 开机画面Nandroid备份为splash1.img recovery 设备序列号为mtd1该分区是恢复模式即开机按HomeEnd进入的界面Nandroid备份为recovery.img boot 设备序列号为mtd2底层操作系统内核启动分区挂载 为/目录Nandroid备份为boot.img system 设备序列号为mtd3G1的Android核心平台挂 载为/system目录通常为只读Nandroid备份为system.img cache 设备序列号为mtd4G1的缓存临时文件夹挂载为 /cache目录事实上除了T-mobile的OTA更新外别无用处Nandroid备份为cache.img userdata 设备序列号为mtd5G1中用户安装的软件以及各种 数据挂载为/data目录Nandroid备份为data.img nbsp android文件系统制作教程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 android文件系统制作教程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.进行一次源代码编译 nbsp 1.然后看下面的Makefile 设置环境变量JAVA_HOME默认就有 SRC_HOME/home/liangwei/android_src nbspnbsp 它依赖于systemdataMETA-INF三个目录和一个boot.img镜像并且它需要签名 update.zip : boot.img shell find system data META-INF nbspnbspnbsp 生成update_unsign.zip nbspnbspnbsp zip -qr update_unsign.zip system data META-INF boot.img nbspnbspnbsp 签名 nbspnbspnbsp JAVA_HOME/bin/java -jar auto-sign/signapk.jar auto-sign/testkey.x509.pem auto-sign/testkey.pk8 update_unsign.zip update.zip nbspnbspnbsp 删除中间文件 nbspnbspnbsp rm -f update_unsign.zip nbspnbsp 依赖于ramdisk.img 和 kernel.img 两个镜像 boot.img:ramdisk.img kernel.img nbspnbspnbsp 使用mkbootimg制作 nbspnbspnbsp SRC_HOME/out/host/linux-x86/bin/mkbootimg --cmdline no_console_suspend1 consolenull --kernel kernel.img --ramdisk ramdisk.img -o boot.img nbspnbsp 其实它就是源码编译后生成的zImage拷贝过来改个名字 kernel.img:SRC_HOME/kernel/msm/arch/arm/boot/zImage nbspnbspnbsp cp -f SRC_HOME/kernel/msm/arch/arm/boot/zImage ./kernel.img nbspnbsp 是将root文件夹使用mkbootfs制作的镜像 ramdisk.img:shell find root nbspnbspnbsp 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.文件的出处 rootsystemdata文件夹: 来自”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 nbsp android文件系统制作教程4 —- makefile脚本制作各种单独的分区文件ramdisk.imgsystem.imgboot.img nbspnbspnbsp build android rom script SRC_HOME/home/liangwei/android_src nbspnbsp update.zip : boot.img shell find system data META-INF nbspnbspnbsp rm -rf update_unsign.zip nbspnbspnbsp zip -qr update_unsign.zip system data META-INF boot.img nbspnbspnbsp JAVA_HOME/bin/java -jar auto-sign/signapk.jar auto-sign/testkey.x509.pem auto-sign/testkey.pk8 update_unsign.zip update.zip nbspnbspnbsp rm -f update_unsign.zip nbspnbsp boot.img:ramdisk.img kernel.img nbspnbspnbsp SRC_HOME/out/host/linux-x86/bin/mkbootimg --cmdline no_console_suspend1 consolenull --kernel kernel.img --ramdisk ramdisk.img -o boot.img nbspnbsp kernel.img:SRC_HOME/kernel/msm/arch/arm/boot/zImage nbspnbspnbsp cp -f SRC_HOME/kernel/msm/arch/arm/boot/zImage ./kernel.img nbspnbsp kernel-qemu:SRC_HOME/kernel/common/arch/arm/boot/zImage nbspnbspnbsp cp -f SRC_HOME/kernel/common/arch/arm/boot/zImage ./kernel-qemu nbspnbsp ramdisk.img:shell find root nbspnbspnbsp SRC_HOME/out/host/linux-x86/bin/mkbootfs ./root gzip gt ramdisk.img nbspnbsp system.img : shell find system nbspnbspnbsp SRC_HOME/out/host/linux-x86/bin/mkyaffs2image ./system system.img nbspnbsp userdata.img:shell find data nbspnbspnbsp SRC_HOME/out/host/linux-x86/bin/mkyaffs2image ./data userdata.img nbspnbsp userdata-qemu.img:userdata.img nbspnbspnbsp rm -rf userdata-qemu.img nbspnbspnbsp cp userdata.img userdata-qemu.img initlogo.rle:logo.png nbspnbspnbsp convert -depth 8 logo.png rgb:logo.raw nbspnbspnbsp SRC_HOME/out/host/linux-x86/bin/rgb2565 -rle ltlogo.raw gtinitlogo.rle nbspnbspnbsp cp -rf initlogo.rle data/data/com.android.mysplash/ nbspnbspnbsp rm -rf logo.raw nbspnbsp .PHONY:run run:system.img ramdisk.img kernel-qemu userdata-qemu.img nbspnbspnbsp /server/android-sdk-linux_86/tools/emulator -show-kernel -sysdir ./ nbsp android文件系统制作教程5 —- 两行命令从png制作启动界面initlogo.rle 用图片工具编辑好想要的png之后保存为logo.png 在logo.png所在命令下执行命令: 使用ImageMagick自带的convert命令进行raw格式转换 convert -depth 8 logo.png rgb:logo.raw nbspnbsp android自带的rgb2565工具对raw文件进行rle565格式转换 SRC_HOME/out/host/linux-x86/bin/rgb2565 -rle initlogo.rle nbspnbsp 然后将initlogo.rle拷贝到android系统根目录也就是root目录底下 cp initlogo.rle root/ nbspnbsp 删除中间文件 rm -f logo.raw上一篇:Android系统移植(二)