Android Ramdisk架构以及SEAndroid相关 - kiddlu/android-platform-knife GitHub Wiki

Ramdisk,zImage和cmdline参数等一起构造成了Android的boot.img

acct/         dev/                 init.environ.rc           init.qcom.sh*                init.usb.rc          res/              sys/
bt_firmware/  dsp/                 init.mdm.sh*              init.qcom.syspart_fixup.sh*  init.zygote32.rc     sbin/             system/
cache/        etc@                 init.msm.usb.configfs.rc  init.qcom.test.rc            init.zygote64_32.rc  sdcard@           ueventd.qcom.rc
charger@      file_contexts.bin    init.qcom.class_core.sh*  init.qcom.usb.rc             mnt/                 seapp_contexts    ueventd.rc
config/       firmware/            init.qcom.early_boot.sh*  init.qcom.usb.sh*            oem/                 selinux_version   vendor@
d@            fstab.qcom           init.qcom.factory.rc      init.rc                      persist/             sepolicy          verity_key
data/         init                 init.qcom.rc              init.target.rc               proc/                service_contexts
default.prop  init.class_main.sh*  init.qcom.sensors.sh*     init.usb.configfs.rc         property_contexts    storage/

大致可以分为几类:

  1. 用来mount文件系统的目录节点
  2. 启动脚本init..rc和init..sh
  3. 用来挂载文件系统的fstab,uevent.*.rc
  4. 用来部署系统properties的default.prop
  5. 用于SELinux规则建立的context和sepolicy
  6. 用来验证签名的verity_key
  7. 系统正常运行进程init, adbd, healthd

https://selinuxproject.org/page/NB_SEforAndroid_1 https://selinuxproject.org/page/NB_SEforAndroid_2 https://events.linuxfoundation.org/sites/events/files/slides/abs2014_seforandroid_smalley.pdf