您的位置:首页 > 移动开发 > Android开发

android kernel 与文件系统

2013-06-07 08:49 351 查看
android 系统上kernel与文件系统是打包到一块的。

一般烧录文件的时候有kernel,system,userdata分区。

我们在编译之后,在out目录下生成了



如上图所示目录文件

其中system分区如下所示:



root分区如下所示:



我们查看mk-ics.sh 在kernel编译的时候有这么一句

make -j $JOBS uImage CONFIG_INITRAMFS_SOURCE="../out/target/product/godbox/root"

后面就是拷贝了,config_initramfs_source 这是指明了ramfs文件系统的路径

这个路径就是我们刚才看到的root目录,这个目录下是一个完整的文件系统。

之前一直理解成烧录的system是文件系统,其实不是,system只是文件系统 根目录下的system分区。

与之前的linux平台不同,linux平台的文件系统与kernel是分离开的,文件系统很大,android上的文件系统很小,与kernel打包到一块也不过是几M

但是linux上面的文件系统有40多M。

我修改了源码目录下/system/core/init/init.c文件,查看此目录下的makefile 有这么一句

include $(BUILD_EXECUTABLE)

这也就是说 编译成一个可执行文件

LOCAL_MODULE:= init

编译完成的名称是init,在编译过程中,可以看到生成init文件是生成在刚才的root目录下的

因为编译kernel的过程中,将该root目录一块打包到kernel文件里面了,所以直接使用adb push 命令替换/init文件是不可以的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: