Android与标准Linux对比

     这篇文章布局好乱呀,有时间得整理一下。

声明本文是积累式的写法,不会为去写而写,是先总结一些写一些:

Android文件系统与linux文件系统层次结构标准(FHS)对比:

 FHS  Android
 /tmp  /data/local/tmp
 /bin  /system/bin
 /etc  /etc -> /system/etc
 /lib  /system/lib
 /var  无,可用/data/local/tmp代替先
 /sys  /sys
 /proc  /proc
 /mnt  /mnt
 /media  无,可用/mnt代替
 /root  无,无可替代
 /sbin  /sbin
   
   
   
一般的linux程序都是按照FHS来的,如果要直接编译到Android中用,一些目录就要按照上边对应的改。


Android底层功能与标准linux对比:

 功能  Linux  Android
 管理动态设备文件  udev/mdev  ueventd(init) [好文章]
 管理动态存储挂载  udev/mdev  Vold
 管理静态存储挂载  fstab  Vold
 向上层报告  无  Vold
 init进程  init/linuxrc  init
图形界面 X Windows/Qt/MiniGui Gralloc+SurfaceFlinger/Minui
蓝牙驱动  BluZ  BlueDroid

Android 4.2蓝牙介绍-Android中的Bluetooth

 音频库  libalsa  tinyalso《Android音频系统之音频框架-TinyAlsa》
     
     
     
     
     
     

遇到一些记录一些。弄明白了这些,从底层向Android出发就方便多了。

很多文章都在说它代替了udev,这个真是一个不负责人的说法,Vold全称Volume Daemon,顾名思义,它是管理卷的,所谓卷也就是硬盘/Flash/sdcard之类的存储设备,它负责将上述的存储设备自动挂载到指定目录。
在Android中与udev相提并论的是ueventd,它是管理/dev/下设备文件的。
而Vold只会检测是否为存储设备,如果是就会挂载。


---------------------------------------
Udev的工作中包括管理/dev下设备文件和自动挂载文件系统,不过Vold全称是Volume Daemon专门的卷管理,它是没有管理/dev下的设备文件的,这个功劳不是它的,创建设备文件的是ueventd。
在Android中不能和其它linux进行一对一的对应了,因为Vold甚至还包括和上层的通信,而udev没有,管理好设备文件和挂载动态的存储设备就完了。还有一个区别是Vold是管理了所有的卷无论静态还是动态,而udev只管理动态的,管理静态的是fstab。

关于/tmp目录的问题,这个是最直接的问题了,一般的开源软件都是直接用hardcode的方法默认将临时文件放到/tmp目录中的,这点一定要注意,编译一个开源的软件到Android上时首先创建一个/tmp目录。没有/tmp目录会出现很多问题。等到测试好发布的时候要把hardcode的/tmp目录调整到自己新创建的目录一般在/data/misc/${func}/tmp一般${func}为自己的功能的名字。


Android源码目录:

/cts 兼容性测试套件

/kernel 内核


Android系统目录功能介绍

/cache分区

使用:在进行OTA升级(俗称:刷机)的时候会用到/cache/recovery目录

1.利用/cache/recovery/command会传递参数.:update.zip的路径.

2.升级过程产生的Log文件也会放到/cache/recovery目录中.:last_install,last_locale,last_log,一般供调试人员使用.

3.当然/cache目录也可以存放update.zip.

4.看到其它地方说Google Play会将软件包下载到些处.

这些是我在工作中遇到的.

完整包升级:

将以下内容写入到/cache/recovery/command

boot-recovery

--update_package=/data/media/0/update.zip

--wipe_cache

reboot

执行reboot recovery 即可升级.



你可能感兴趣的:(linux,android,fhs)