由安装Busybox到Android过程中想到的

Android 的文件系统以ramdisk.img 形式压缩,在系统启动时每次都启动解压挂载之;

Android 文件系统中/data 目录主要存放用户数据,以userdata.img 形式压缩,在系统挂载完总文件系统后解压该镜象文件并复制其中的内容至文件系统中的/data 目录下。

Android 文件系统中/system 目录主要存放系统数据,以system.img 形式压缩,在系统挂载完文件系统后解压该镜象文件并复制其中的内容至文件系统中的/data 目录下。

系统运行过程用户可以对用户数据/data 目录,进行读写操作(adb shell mount 可证明),并且操作在关机后被保存下来。如何实现(--猜每次关机前会把/data 重新压缩更新成一个新userdata.img 。)

系统运行过程中用户不可以对系统数据/system 目录,进行写操作,只能读。所以system.img 是不会被更新的。

同理系统运行过程文件系统框架也不会被改变,所以ramdisk.img 也是不会被更新的。

(不可理解的是既然都在运行时不能不修改为什么要把/system 单独做成一个镜象,而不是直接做在ramdisk,img 中,这样在启动时还可以省去解压挂载/system 这个步骤对应init.rc 中如下步骤:

# Mount /system rw first to give the filesystem a chance to save a checkpoint

mount yaffs2 mtd@system /system

mount yaffs2 mtd@system /system ro remou

要把busybox 安装到Android 文件系统中,可以把busybox 命令adb push/data 下,这样也能实现在开机busybox 仍然存在;

但是为了保证环境变量开机恢复必须使修改的init.rc 文件也开机保证修改,但该文件在根目录下,每次开机系统都会导入ramdisk.img 中原来的init.rc 文件,所以要实现可保存的修改只能修改ramdisk.img 中的init.rc 文件。具体方法略。

实现上面两点就可以实现busyboxAndroid 的永久安装。

你可能感兴趣的:(android)