init.rc详解

https://www.cnblogs.com/newjiang/p/10434455.html

import 一个init配置文件,扩展当前配置
import /vendor/etc/init/hw/init. r o . h a r d w a r e . u s b . r c 引 入 配 置 i n i t . f r e e s c a l e . u s b . r c i m p o r t / v e n d o r / e t c / i n i t / h w / i n i t . {ro.hardware}.usb.rc 引入配置init.freescale.usb.rc import /vendor/etc/init/hw/init. ro.hardware.usb.rcinit.freescale.usb.rcimport/vendor/etc/init/hw/init.{ro.hardware}. r o . b o o t . s o c t y p e . r c 引 入 配 置 i n i t . f r e e s c a l e . i m x 8 q x p . r c i m p o r t / v e n d o r / e t c / i n i t / h w / i n i t . {ro.boot.soc_type}.rc 引入配置 init.freescale.imx8qxp.rc import /vendor/etc/init/hw/init. ro.boot.soctype.rcinit.freescale.imx8qxp.rcimport/vendor/etc/init/hw/init.{ro.hardware}.${ro.boot.storage_type}.rc 引入配置 init.freescale.emmc.rc

执行顺序: early-init init early-fs fs post-fs early-boot boot service
on early-init //init之前、加载完所有rc文件后即执行
# mount the debugfs
mount debugfs none /sys/kernel/debug/ mode=0755 //【设置kerneldebug等级】

on early-init
start early_init_sh //启动服务 service early_init_sh /vendor/bin/init.insmod.sh /vendor/etc/early.init.cfg sys.all.early_init.ready

on init //加载propety各项属性文件之前执行,在init变为propety service之前都属于init阶段。
start watchdogd

# Support legacy paths
symlink /sdcard /mnt/sdcard
symlink /sdcard /storage/sdcard0

# setup the global environment
export CORE_REGISTER_FILE /vendor/etc/core_register			//export 提交变量
export COMPONENT_REGISTER_FILE /vendor/etc/component_register
export CONTENTPIPE_REGISTER_FILE /vendor/etc/contentpipe_register

# disable cursor blink for fbcon, if no splash screen support
write /sys/class/graphics/fbcon/cursor_blink 0					//打开文件,write 0到/sys/class/graphics/fbcon/cursor_blink。如果没有文件会被创建。有的话,会truncated?

# deattch the fbcon as hdmi hotplug conflict with fbcon
write /sys/class/vtconsole/vtcon1/bind 0

# set default schedTune value for foreground/top-app (only affects EAS)
write /dev/stune/foreground/schedtune.boost 10
write /dev/stune/foreground/schedtune.prefer_idle 1
write /dev/stune/top-app/schedtune.boost 40
write /dev/stune/top-app/schedtune.prefer_idle 1
write /dev/stune/rt/schedtune.boost 50
write /dev/stune/rt/schedtune.prefer_idle 1

on late-fs
# Start keymaster service
start vendor.keymaster-3-0-${ro.boot.keystore}

on early-boot //启动属性服务后即执行
# Config lowmemorykiller options
setprop ro.lmk.use_minfree_levels true

# Set the host name which used in console
export HOSTNAME mek_8q			// 导出、设置 终端主机名为mek_8q

# Set permission for IIM node
symlink /dev/mxs_viim /dev/mxc_mem

# Enable Tethering in the Settings
setprop ro.tether.denied false		//拒绝设置 网络共享为 false =》 相当于设置为true

setprop sys.hwc.disable     1
setprop vendor.2d.composition 0
setprop hwc.stretch.filter  1

# fsl omx graphic manager media framework property
setprop rw.VIDEO_RENDER_NAME video_render.surface
setprop media.fsl_codec.flag 7
setprop media.amphion_vpu.enable-tile 0

#Define the config for dual camera
#For landscape mode, orient is 0
#For portrait mode, orient is 90
#the android before honycomb are all in portrait mode
setprop camera.disable_zsl_mode 1
setprop back_camera_name imx8_ov5640_mipi,max9286_mipi,imx8_ov5640
setprop back_camera_orient 0
setprop front_camera_name imx8_ov5640,imx8_ov5640_mipi,uvc
setprop front_camera_orient 0

Tweak the mmc device read ahead buffer size //调整mmc设备的预读缓冲区大小 为2048kb =>2M

write /sys/block/mmcblk0/queue/read_ahead_kb 2048
write /sys/block/mmcblk1/queue/read_ahead_kb 2048

# Set period_us for usb audio
setprop ro.audio.usb.period_us 20000

# Wifi firmware reload path
#chown wifi wifi /sys/module/bcmdhd/parameters/firmware_path
#chown wifi wifi /sys/module/bcmdhd/parameters/nvram_path

# Prepare for wifi
setprop wifi.interface wlan0
setprop wifi.ap.interface wlan0
setprop wifi.concurrent.interface p2p0

# FMAC Wifi Default country code for testing
setprop ro.boot.wificountrycode us			//这个为什么要设置成us 而不是CN

# Prepare for bluetooth
chmod 0666 /sys/class/rfkill/rfkill0/state			//更改rfkill节点权限为可读写
chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state	//更改所有者
write /sys/class/rfkill/rfkill0/state 0				//写0,先拉低引脚

setprop persist.service.bdroid.bdaddr 22:22:67:C6:69:73		//设置蓝牙默认mac地址

setprop qcom.bluetooth.soc rome_uart
setprop vendor.wc_transport.start_hci false

# Set the density to 213 tvdpi to match CDD.
setprop ro.sf.lcd_density 213

# Set tracefs permission to 755
chmod 0755 /sys/kernel/debug/tracing

# Default backlight device
setprop hw.backlight.dev "56228000.mipi_dsi_bridge.0"
# Chmod/chown FSL specific sys entry
chown system system /sys/class/backlight/56228000.mipi_dsi_bridge.0/brightness
chmod 0660 /sys/class/backlight/56228000.mipi_dsi_bridge.0/brightness

# Set light sensor threshold lux value
setprop ro.lightsensor.threshold  20

# enlarge media max memory size to 3G.
setprop ro.media.maxmem 3221225471

start vendor.wifi_hal_legacy

on boot //boot的时候执行。
start audioserver
start mediadrm
start media
start drm

Services(服务)是一个程序,以 service开头,由init进程启动,一般运行于另外一个init的子进程,
所以启动service前需要判断对应的可执行文件是否存在。init生成的子进程,定义在rc文件,
其中每一个service,在启动时会通过fork方式生成子进程。Services(服务)的形式如下:

service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ //service 服务名 文件路径
-ip2p0 -Dnl80211 -c/vendor/etc/wifi/p2p_supplicant.conf \ //opetion 用来配置 wpa_supplicant这项服务
-I/vendor/etc/wifi/p2p_supplicant_overlay.conf -N
-iwlan0 -Dnl80211 -c/vendor/etc/wifi/wpa_supplicant.conf
-I/vendor/etc/wifi/wpa_supplicant_overlay.conf
-O/data/vendor/wifi/wpa/sockets
-e/data/vendor/wifi/entropy.bin -g@android:wpa_wlan0
socket wpa_wlan0 dgram 660 wifi wifi //socket [ [ ] ] # 申请socket资源,为服务创建socket,可以创建多个
//native层用的是android_os_UEventObserver.cpp,使用uevent.c通过socket传递
class main //为这个Service(wpa_supplicant)指定class 。所有的Service可以用class name(main)同时开启和结束
disabled //不随class自动启动,Service不会自动开启当它的class启动时,必须显示的started by name(用其名字)
oneshot //当退出时不要重启Service

service sensor_fusion /vendor/bin/fsl_sensor_fusion
class main
seclabel u:r:sensors:s0
user system //改变 username(system) 当执行这个Service之前
group input //改变groupname(input)当执行Service之前
oneshot

Set watchdog timer to 30 seconds and pet it every 10 seconds to get a 20 second margin

service watchdogd /sbin/watchdogd 10 20
class core
seclabel u:r:watchdogd:s0

service dhcpcd_wlan0 /system/bin/dhcpcd -aABDKL
class main
disabled
oneshot

service dhcpcd_p2p /system/bin/dhcpcd -aABKL
class main
disabled
oneshot

service dhcpcd_eth0 /system/bin/dhcpcd -ABKL eth0
class main
disabled
oneshot

service dhcpcd_bt-pan /system/bin/dhcpcd -ABKL
class main
disabled //不随class自动启动,Service不会自动开启当它的class启动时,必须显示的started by name(用其名字)
oneshot //当退出时不要重启Service

service iprenew_wlan0 /system/bin/dhcpcd -n
class main
disabled
oneshot

service iprenew_p2p /system/bin/dhcpcd -n
class main
disabled
oneshot

service iprenew_eth0 /system/bin/dhcpcd -n eth0
class main
disabled
oneshot

service iprenew_bt-pan /system/bin/dhcpcd -n
class main
disabled
oneshot

bugreport is triggered by holding down volume down, volume up and power

service bugreport /system/bin/dumpstate -d -p -B -z
-o /data/user_de/0/com.android.shell/files/bugreports/bugreport
class main
disabled
oneshot
keycodes 114 115 116

on property:vendor.wc_transport.start_hci=true
start start_hci_filter

on property:vendor.wc_transport.start_hci=false
stop start_hci_filter

service start_hci_filter /vendor/bin/wcnss_filter
class late_start
user bluetooth
group bluetooth diag
disabled

on property:vendor.wc_transport.start_root=true
start hci_filter_root

on property:vendor.wc_transport.start_root=false
stop hci_filter_root

service hci_filter_root /vendor/bin/wcnss_filter
class late_start
user bluetooth
group bluetooth diag system
disabled

on fs

mount ext4 partitions

mount_all /vendor/etc/fstab.freescale

# Adjust parameters for dm-verity device
write /sys/block/dm-0/queue/read_ahead_kb 4096

# Update dm-verity state and set partition.*.verified properties
verity_update_state

on verity-logging
exec u:r:slideshow:s0 – /sbin/slideshow warning/verity_red_1 warning/verity_red_2 //调用程序并转移进程

on post-fs
# Set netd memlock rlimit to 8MB
setrlimit 8 8388608 8388608 //设置当前程序可以打开的最大文件数到系统规定程序可以打开的最大文件数

# Turn on swap
swapon_all /vendor/etc/fstab.freescale		//调用fs_mgr_swapon_all on the fstab(/vendor/etc/fstab.freescale)文件

# Swap in only 1 page at a time
write /proc/sys/vm/page-cluster 0

# This may have been created by the recovery system with the wrong context.
restorecon /cache/recovery   恢复文件到sercurity(/cache/recovery) context在file_contexts配置的

on post-fs-data
setprop vold.post_fs_data_done 1

# tmp dir for opencl Compiler
setprop TMPDIR /data/vendor/.opencl-cache
mkdir /data/vendor/.opencl-cache 0771 camera camera

on zygote-start
# Create the directories used by the Wireless subsystem //创建wireless子系统使用的目录
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
mkdir /data/vendor/wifi 0771 wifi wifi
mkdir /data/vendor/wifi/wpa 0770 wifi wifi
mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
mkdir /data/misc/dhcp 0770 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp

service early_init_sh /vendor/bin/init.insmod.sh /vendor/etc/early.init.cfg sys.all.early_init.ready
class main
user root
group root system
disabled
oneshot

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值