android kernel 与文件系统

来源:互联网 发布:数据库别名有什么作用 编辑:程序博客网 时间:2024/05/17 02:50

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文件是不可以的。

原创粉丝点击