init.rc解析

Android初始化语言由四大类声明组成:行为类(Actions),命令类(Commands),服务类(Services),选项类(Options).

* 初始化语言以行为单位,由以空格间隔的语言符号组成。C风格的反斜杠转义符可以用来插入空白到语言符号。双引号也可以用来防止文本被空格分成多个语言符号。当反斜杠在行末时,作为折行符。

* #开始(前面允许有空格)的行为注释行。

* ActionsServices隐含声明一个新的段落。所有该段落下CommandsOptions的声明属于该段落。第一段落前的CommandsOptions被忽略。

* ActionsServices拥有独一无二的命名。在它们之后声明相同命名的类将被当作错误并忽略。

Actions

-------

Actions是一系列命令的命名。Actions拥有一个触发器(trigger)用来决定action何时执行。当一个action在符合触发条件被执行时,如果它还没被加入到待执行队列中的话,则加入到队列最后。

队列中的action依次执行,action中的命令也依次执行。Init在执行命令的中间处理其它活动(设备创建/销毁,property设置,进程重启)

Actions表现形式为:

on <trigger>

<command>

<command>

<command>

Services

--------

Services是由init启动,在它们退出时重启(可选)Service表现形式为:

service <name> <pathname> [ <argument> ]*

<option>

<option>

...

Options

-------

OptionsServices的修饰,它们影响init何时、如何运行service.

critical

这是一个设备关键服务(device-critical service) .如果它在4分钟内退出超过4次,设备将重启并进入恢复模式。

disabled

这个服务的级别将不会自动启动,它必须被依照服务名指定启动才可以启动。

setenv <name> <value>

设置已启动的进程的环境变量<name>的值<value>

socket <name> <type> <perm> [ <user> [ <group> ] ]

创建一个名为/dev/socket/<name>unix domin socket,并传送它的fd到已启动的进程。<type>必须为"dgram""stream".用户和组默认为0.

user <username>

在执行服务前改变用户名。当前默认为root.如果你的进程需要linux能力,你不能使用这个命令。你必须在还是root时请求能力,并下降到你需要的uid.

group <groupname> [ <groupname> ]*

在执行服务前改变组。在第一个组后的组将设为进程附加组(通过setgroups()).当前默认为root.

oneshot

在服务退出后不重启。

class <name>

service指定一个类别名。同样类名的所有的服务可以一起启动或停止。如果没有指定类别的服务默认为"default"类。

onrestart

当服务重启时执行一个命令。

Triggers

--------

Triggers(触发器)是一个字符串,可以用来匹配某种类型的事件并执行一个action

boot

这是当init开始后执行的第一个触发器(/init.conf被加载)

<name>=<value>

property <name>被设为指定的值<value>时触发。

device-added-<path>

device-removed-<path>

当设备节点被添加或移除时触发。

service-exited-<name>

当指定的服务存在时触发

Commands

--------

exec <path> [ <argument> ]*

Fork并执行一个程序(<path>).这将被block直到程序执行完毕。最好避免执行例如内建命令以外的程序,它可能会导致init被阻塞不动。

export <name> <value>

设定全局环境变量<name>的值<value>,当这个命令执行后所有的进程都可以取得。

ifup <interface>

使网络接口<interface>联机。

import <filename>

解析一个init配置文件,扩展当前配置文件。

hostname <name>

设置主机名

chmod <octal-mode> <path>

改变文件访问权限

chown <owner> <group> <path>

改变文件所属和组

class_start <serviceclass>

当指定类别的服务没有运行,启动该类别所有的服务。

class_stop <serviceclass>

当指定类别的服务正在运行,停止该类别所有的服务。

domainname <name>

设置域名。

insmod <path>

加载该路径<path>的模块

mkdir <path> [mode] [owner] [group]

<path>创建一个目录,可选选项:mod,owner,group.如果没有指定,目录以755权限,ownerroot,grouproot创建.

mount <type> <device> <dir> [ <mountoption> ]*

尝试mount <device>到目录<dir>. <device>可以用mtd@name格式以命名指定一个mtd块设备。<mountoption>包含"ro","rw","remount","noatime".

setkey

暂时没有

setprop <name> <value>

设置系统property <name>的值<value>.

setrlimit <resource> <cur> <max>

设置resourcerlimit.

start <service>

启动一个没有运行的服务。

stop <service>

停止一个正在运行的服务。

symlink <target> <path>

创建一个<path>的符号链接到<target>

sysclktz <mins_west_of_gmt>

设置系统时区(GMT0)

trigger <event>

触发一个事件。用于调用其它action

write <path> <string> [ <string> ]*

打开<path>的文件并写入一个或多个字符串。

Properties

----------

Init会更新一些系统property以提供查看它正在干嘛。

init.action

当前正在执行的action,如果没有则为""

init.command

被执行的命令,如果没有则为""

init.svc.<name>

命名为<name>的服务的状态("stopped", "running", "restarting")

init.rc 示例:

-----------------

# not complete -- just providing some examples of usage

#

on boot

export PATH /sbin:/system/sbin:/system/bin

export LD_LIBRARY_PATH /system/lib

mkdir /dev

mkdir /proc

mkdir /sys

mount tmpfs tmpfs /dev

mkdir /dev/pts

mkdir /dev/socket

mount devpts devpts /dev/pts

mount proc proc /proc

mount sysfs sysfs /sys

write /proc/cpu/alignment 4

ifup lo

hostname localhost

domainname localhost

mount yaffs2 mtd@system /system

mount yaffs2 mtd@userdata /data

import /system/etc/init.conf

class_start default

service adbd /sbin/adbd

user adb

group adb

service usbd /system/bin/usbd -r

user usbd

group usbd

socket usbd 666

service zygote /system/bin/app_process -Xzygote /system/bin --zygote

socket zygote 666

service runtime /system/bin/runtime

user system

group system

on device-added-/dev/compass

start akmd

on device-removed-/dev/compass

stop akmd

service akmd /sbin/akmd

disabled

user akmd

group akmd

调试

---------------

默认情况下,init执行的程序输出的信息和错误到/dev/null.为了debug,你可以通过Android程序logwrapper执行你的程序。这将复位向输出/错误输出到Android logging系统(通过logcat访问)

例如

service akmd /system/bin/logwrapper /sbin/akmd

 

[python]   view plain copy print ?
  1. on early-init  
  2.     start ueventd  
  3.   
  4. on init  
  5.   
  6. sysclktz 0  
  7.   
  8. loglevel 3  
  9.   
  10. # setup the global environment  
  11.     export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/system/busybox/bin:/system/busybox/sbin:/system/busybox/usr/bin:/system/busybox/usr/sbin  
  12.     export LD_LIBRARY_PATH /vendor/lib:/system/lib  
  13.     export ANDROID_BOOTLOGO 1  
  14.     export ANDROID_ROOT /system  
  15.     export ANDROID_ASSETS /system/app  
  16.     export ANDROID_DATA /data  
  17.     export EXTERNAL_STORAGE /mnt/sdcard  
  18.     export ASEC_MOUNTPOINT /mnt/asec  
  19.     export LOOP_MOUNTPOINT /mnt/obb  
  20.     export BOOTCLASSPATH /system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar  
  21.   
  22. # Backward compatibility  
  23.     symlink /system/etc /etc  
  24.     symlink /sys/kernel/debug /d  
  25.   
  26. # Right now vendor lives on the same filesystem as system,  
  27. # but someday that may change.  
  28.     symlink /system/vendor /vendor  
  29.   
  30. # create mountpoints  
  31.     mkdir /mnt 0775 root system  
  32.     mkdir /mnt/sdcard 0000 system system  
  33.   
  34. # Create cgroup mount point for cpu accounting  
  35.     mkdir /acct  
  36.     mount cgroup none /acct cpuacct  
  37.     mkdir /acct/uid  
  38.   
  39. # Backwards Compat - XXX: Going away in G*  
  40.     symlink /mnt/sdcard /sdcard  
  41.   
  42.     mkdir /system  
  43.     mkdir /data 0771 system system  
  44.     mkdir /cache 0770 system cache  
  45.     mkdir /config 0500 root root  
  46.   
  47.     # Directory for putting things only root should see.  
  48.     mkdir /mnt/secure 0700 root root  
  49.   
  50.     # Directory for staging bindmounts  
  51.     mkdir /mnt/secure/staging 0700 root root  
  52.   
  53.     # Directory-target for where the secure container  
  54.     # imagefile directory will be bind-mounted  
  55.     mkdir /mnt/secure/asec  0700 root root  
  56.   
  57.     # Secure container public mount points.  
  58.     mkdir /mnt/asec  0700 root system  
  59.     mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000  
  60.   
  61.     # Filesystem image public mount points.  
  62.     mkdir /mnt/obb 0700 root system  
  63.     mount tmpfs tmpfs /mnt/obb mode=0755,gid=1000  
  64.   
  65.     #for  cmdline 3G dialup  
  66.     mkdir /var 0000 system system  
  67.     mount tmpfs tmpfs  /var size=2m  
  68.     mkdir /var/lock  
  69.     mkdir /var/run  
  70.     mkdir /var/log  
  71.     mount usbfs none /proc/bus/usb -o devmode=0666  
  72.   
  73.     write /proc/sys/kernel/panic_on_oops 1  
  74.     write /proc/sys/kernel/hung_task_timeout_secs 0  
  75.     write /proc/cpu/alignment 4  
  76.     write /proc/sys/kernel/sched_latency_ns 10000000  
  77.     write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000  
  78.     write /proc/sys/kernel/sched_compat_yield 1  
  79.     write /proc/sys/kernel/sched_child_runs_first 0  
  80.   
  81. # Create cgroup mount points for process groups  
  82.     mkdir /dev/cpuctl  
  83.     mount cgroup none /dev/cpuctl cpu  
  84.     chown system system /dev/cpuctl  
  85.     chown system system /dev/cpuctl/tasks  
  86.     chmod 0777 /dev/cpuctl/tasks  
  87.     write /dev/cpuctl/cpu.shares 1024  
  88.   
  89.     mkdir /dev/cpuctl/fg_boost  
  90.     chown system system /dev/cpuctl/fg_boost/tasks  
  91.     chmod 0777 /dev/cpuctl/fg_boost/tasks  
  92.     write /dev/cpuctl/fg_boost/cpu.shares 1024  
  93.   
  94.     mkdir /dev/cpuctl/bg_non_interactive  
  95.     chown system system /dev/cpuctl/bg_non_interactive/tasks  
  96.     chmod 0777 /dev/cpuctl/bg_non_interactive/tasks  
  97.     # 5.0 %  
  98.     write /dev/cpuctl/bg_non_interactive/cpu.shares 52  
  99.   
  100. on fs  
  101. # mount mtd partitions  
  102.     # Mount /system rw first to give the filesystem a chance to save a checkpoint  
  103.       mount yaffs2 mtd@system /system  
  104.       mount yaffs2 mtd@system /system rw remount  
  105.       mount yaffs2 mtd@userdata /data nosuid nodev  
  106.       mount yaffs2 mtd@cache /cache nosuid nodev  
  107.   
  108. on post-fs  
  109.     # once everything is setup, no need to modify /  
  110.     #  mount rootfs rootfs / rw remount  
  111.   
  112.     # We chown/chmod /data again so because mount is run as root + defaults  
  113.     chown system system /data  
  114.     chmod 0771 /data  
  115.   
  116.     # Create dump dir and collect dumps.  
  117.     # Do this before we mount cache so eventually we can use cache for  
  118.     # storing dumps on platforms which do not have a dedicated dump partition.  
  119.      
  120.     mkdir /data/dontpanic  
  121.     chown root log /data/dontpanic  
  122.     chmod 0750 /data/dontpanic  
  123.   
  124.     # Collect apanic data, free resources and re-arm trigger  
  125.     copy /proc/apanic_console /data/dontpanic/apanic_console  
  126.     chown root log /data/dontpanic/apanic_console  
  127.     chmod 0640 /data/dontpanic/apanic_console  
  128.   
  129.     copy /proc/apanic_threads /data/dontpanic/apanic_threads  
  130.     chown root log /data/dontpanic/apanic_threads  
  131.     chmod 0640 /data/dontpanic/apanic_threads  
  132.   
  133.     write /proc/apanic_console 1  
  134.   
  135.     # Same reason as /data above  
  136.     chown system cache /cache  
  137.     chmod 0770 /cache  
  138.   
  139.     # This may have been created by the recovery system with odd permissions  
  140.     chown system cache /cache/recovery  
  141.     chmod 0770 /cache/recovery  
  142.   
  143.     #change permissions on vmallocinfo so we can grab it from bugreports  
  144.     chown root log /proc/vmallocinfo  
  145.     chmod 0440 /proc/vmallocinfo  
  146.   
  147.     #change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks  
  148.     chown root system /proc/kmsg  
  149.     chmod 0440 /proc/kmsg  
  150.     chown root system /proc/sysrq-trigger  
  151.     chmod 0220 /proc/sysrq-trigger  
  152.   
  153. # create basic filesystem structure  
  154.     mkdir /data/misc 01771 system misc  
  155.     mkdir /data/misc/bluetoothd 0770 bluetooth bir /data/lost+found 0770  
  156.     mkdir /cache/lost+found 0770  
  157.   
  158.     # double check the perms, in case lost+found already exists, and set owner  
  159.     chown root root /data/lost+found  
  160.     chmod 0770 /data/lost+found  
  161.     chown root root /cache/lost+found  
  162.     chmod 0770 /cache/lost+found  
  163.   
  164. #forlinx add for app to operate devices  
  165.     chmod 0666  /dev/leds  
  166.     chmod 0666  /dev/pwm  
  167.     chmod 0666  /dev/adc  
  168.     chmod 0666  /dev/s3c-cmm  
  169.     chmod 0666  /dev/s3c-g2d  
  170.     chmod 0666  /dev/s3c-g3d  
  171.     chmod 0666  /dev/s3c-jpg  
  172.     chmod 0666  /dev/s3c-mfc  
  173.   
  174.   
  175. on boot  
  176. # basic network init  
  177.     ifup lo  
  178.     hostname localhost  
  179.     domainname localdomain  
  180.   
  181. # set RLIMIT_NICE to allow priorities from 19 to -20  
  182.     setrlimit 13 40 40  
  183.   
  184. # Define the oom_adj values for the classes of processes that can be  
  185. # killed by the kernel.  These are used in ActivityManagerService.  
  186.     setprop ro.FOREGROUND_APP_ADJ 0  
  187.     setprop ro.VISIBLE_APP_ADJ 1  
  188.     setprop ro.PERCEPTIBLE_APP_ADJ 2  
  189.     setprop ro.HEAVY_WEIGHT_APP_ADJ 3  
  190.     setprop ro.SECONDARY_SERVER_ADJ 4  
  191.     setprop ro.BACKUP_APP_ADJ 5  
  192.     setprop ro.HOME_APP_ADJ 6  
  193.     setprop ro.HIDDEN_APP_MIN_ADJ 7  
  194.     setprop ro.EMPTY_APP_ADJ 15  
  195.   
  196. # Define the memory thresholds at which the above process classes will  
  197. # be killed.  These numbers are in pages (4k).  
  198.     setprop ro.FOREGROUND_APP_MEM 2048  
  199.     setprop ro.VISIBLE_APP_MEM 3072  
  200.     setprop ro.PERCEPTIBLE_APP_MEM 4096  
  201.     setprop ro.HEAVY_WEIGHT_APP_MEM 4096  
  202.     setprop ro.SECONDARY_SERVER_MEM 6144  
  203.     setprop ro.BACKUP_APP_MEM 6144  
  204.     setprop ro.HOME_APP_MEM 6144  
  205.     setprop ro.HIDDEN_APP_MEM 7168  
  206.     setprop ro.EMPTY_APP_MEM 8192  
  207.   
  208. # Define the Wi-Fi and other props  
  209.     setprop wifi.interface wlan0  
  210.     setprop wlan.interface wlan0  
  211.     setprop wlan.driver.status ok  
  212.     setprop wlan.modpath /system/lib/libwifi/  
  213. #    setprop ro.sf.hwrotation 270  
  214.   
  215.   
  216.   
  217. # Write value must be consistent with the above properties.  
  218. # Note that the driver only supports 6 slots, so we have combined some of  
  219. # the classes into the same memory level; the associated processes of higher  
  220. # classes will still be killed first.  
  221.     write /sys/module/lowmemorykiller/parameters/adj 0,1,2,4,7,15  
  222.   
  223.     write /proc/sys/vm/overcommit_memory 1  
  224.     write /proc/sys/vm/min_free_order_shift 4  
  225.     write /sys/module/lowmemorykiller/parameters/minfree 2048,3072,4096,6144,7168,8192  
  226.   
  227.     # Set init its forked children's oom_adj.  
  228.     write /proc/1/oom_adj -16  
  229.   
  230.     # Tweak background writeout  
  231.     write /proc/sys/vm/dirty_expire_centisecs 200  
  232.     write /proc/sys/vm/dirty_background_ratio  5  
  233.   
  234.     # Permissions for System Server and daemons.  
  235.     chown radio system /sys/android_power/state  
  236.     chown radio system /sys/android_power/request_state  
  237.     chown radio system /sys/android_power/acquire_full_wake_lock  
  238.     chown radio system /sys/android_power/acquire_partial_wake_lock  
  239.     chown radio system /sys/android_power/release_wake_lock  
  240.     chown radio system /sys/power/state  
  241.     chown radio system /sys/power/wake_lock  
  242.     chown radio system /sys/power/wake_unlock  
  243.     chmod 0660 /sys/power/state  
  244.     chmod 0660 /sys/power/wake_lock  
  245.     chmod 0660 /sys/power/wake_unlock  
  246.   
  247.     chmod 0777 /sys/class/rfkill/rfkill0/state  
  248.     chmod 0777 /dev/video0  
  249.     chmod 0777 /dev/video1    
  250.     chmod 0777 /dev/video2  
  251.   
  252.     chown system system /sys/class/timed_output/vibrator/enable  
  253.     chown system system /sys/class/leds/keyboard-backlight/brightness  
  254.     chown system system /sys/class/leds/lcd-backlight/brightness  
  255.     chown system system /sys/class/leds/button-backlight/brightness  
  256.     chown system system /sys/class/leds/jogball-backlight/brightness  
  257.     chown system system /sys/class/leds/red/brightness  
  258.     chown system system /sys/class/leds/green/brightness  
  259.     chown system system /sys/class/leds/blue/brightness  
  260.     chown system system /sys/class/leds/red/device/grpfreq  
  261.     chown system system /sys/class/leds/red/device/grppwm  
  262.     chown system system /sys/class/leds/red/device/blink  
  263.     chown system system /sys/class/leds/red/brightness  
  264.     chown system system /sys/class/leds/green/brightness  
  265.     chown system system /sys/class/leds/blue/brightness  
  266.     chown system system /sys/class/leds/red/device/grpfreq  
  267.     chown system system /sys/class/leds/red/device/grppwm  
  268.     chown system system /sys/class/leds/red/device/blink  
  269.     chown system system /sys/class/timed_output/vibrator/enable  
  270.     chown system system /sys/module/sco/parameters/disable_esco  
  271.     chown system system /sys/kernel/ipv4/tcp_wmem_min  
  272.     chown system system /sys/kernel/ipv4/tcp_wmem_def  
  273.     chown system system /sys/kernel/ipv4/tcp_wmem_max  
  274.     chown system system /sys/kernel/ipv4/tcp_rmem_min  
  275.     chown system system /sys/kernel/ipv4/tcp_rmem_def  
  276.     chown system system /sys/kernel/ipv4/tcp_rmem_max  
  277.     chown root radio /proc/cmdline  
  278.   
  279. # Define TCP buffer sizes for various networks  
  280. #   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,  
  281.     setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208  
  282.     setprop net.tcp.buffersize.wifi    4095,87380,110208,4096,16384,110208  
  283.     setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208  
  284.     setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040  
  285.     setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680  
  286.      
  287.     setprop net.dns1 8.8.8.8   
  288.     setprop net.dns2 8.8.4.4  
  289.   
  290.     class_start default  
  291.   
  292. ## Daemon processes to be run by init.  
  293. ##  
  294. service ueventd /sbin/ueventd  
  295.     critical  
  296.   
  297. service console /system/bin/sh  
  298.     console  
  299.     disabled  
  300.     user root  
  301.     group log  
  302.   
  303. on property:ro.secure=0  
  304.     start console  
  305.   
  306.          
  307. # adbd is controlled by the persist.service.adb.enable system property  
  308. service adbd /sbin/adbd  
  309.     disabled  
  310.   
  311. # adbd on at boot in emulator  
  312. on property:ro.kernel.qemu=1  
  313.     start adbd  
  314.   
  315. on property:persist.service.adb.enable=1  
  316.     start adbd  
  317.   
  318. on property:persist.service.adb.enable=0  
  319.     stop adbd  
  320.   
  321. #forlinx add   
  322. service forlinx /forlinx.rc  
  323.          oneshot  
  324.   
  325.   
  326. service servicemanager /system/bin/servicemanager  
  327.     user system  
  328.     critical  
  329.     onrestart restart zygote  
  330.     onrestart restart media  
  331.   
  332. service vold /system/bin/vold  
  333.     socket vold stream 0660 root mount  
  334.     ioprio be 2  
  335.   
  336. service netd /system/bin/netd  
  337.     socket netd stream 0660 root system  
  338.   
  339. service debuggerd /system/bin/debuggerd  
  340.   
  341. service ril-daemon /system/bin/rild  
  342.     socket rild stream 660 root radio  
  343.     socket rild-debug stream 660 radio system  
  344.     user root  
  345.     group radio cache inet misc audio sdcard_rw  
  346.   
  347. service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server  
  348.     socket zygote stream 666  
  349.     onrestart write /sys/android_power/request_state wake  
  350.     onrestart write /sys/power/state on  
  351.     onrestart restart media  
  352.     onrestart restart netd  
  353.   
  354. service media /system/bin/mediaserver  
  355.     user media  
  356.     group system audio camera graphics inet net_bt net_bt_admin net_raw  
  357.     ioprio rt 4  
  358.   
  359. service bootanim /system/bin/bootanimation  
  360.     user graphics  
  361.     group graphics  
  362.     disabled  
  363.     oneshot  
  364.   
  365. service dbus /system/bin/dbus-daemon --system --nofork  
  366.     socket dbus stream 660 bluetooth bluetooth  
  367.     user bluetooth  
  368.     group bluetooth net_bt_admin  
  369.   
  370. service bluetoothd /system/bin/bluetoothd -n  
  371.     socket bluetooth stream 660 bluetooth bluetooth  
  372.     socket dbus_bluetooth stream 660 bluetooth bluetooth  
  373.     # init.rc does not yet support applying capabilities, so run as root and  
  374.     # let bluetoothd drop uid to bluetooth with the right linux capabilities  
  375.     group bluetooth net_bt_admin misc  
  376.     disabled  
  377.   
  378. service hfag /system/bin/sdptool add --channel=10 HFAG  
  379.     user bluetooth  
  380.     group bluetooth net_bt_admin  
  381.     disabled  
  382.     oneshot  
  383.   
  384. service hsag /system/bin/sdptool add --channel=11 HSAG  
  385.     user bluetooth  
  386.     group bluetooth net_bt_admin  
  387.     disabled  
  388.     oneshot  
  389.   
  390. service opush /system/bin/sdptool add --channel=12 OPUSH  
  391.     user bluetooth  
  392.     group bluetooth net_bt_admin  
  393.     disabled  
  394.     oneshot  
  395.   
  396. service pbap /system/bin/sdptool add --channel=19 PBAP  
  397.     user bluetooth  
  398.     group bluetooth net_bt_admin  
  399.     disabled  
  400.     oneshot  
  401.   
  402. service installd /system/bin/installd  
  403.     socket installd stream 600 system system  
  404.   
  405. #service flash_recovery /system/etc/install-recovery.sh  
  406. #    oneshot  
  407.   
  408. service racoon /system/bin/racoon  
  409.     socket racoon stream 600 system system  
  410.     # racoon will setuid to vpn after getting necessary resources.  
  411.     group net_admin  
  412.     disabled  
  413.     oneshot  
  414.   
  415. service mtpd /system/bin/mtpd  
  416.     socket mtpd stream 600 system system  
  417.     user vpn  
  418.     group vpn net_admin net_raw  
  419.     disabled  
  420.     oneshot  
  421.   
  422. service keystore /system/bin/keystore /data/misc/keystore  
  423.     user keystore  
  424.     group keystore  
  425.     socket keystore stream 666  
  426.   
  427. service dumpstate /system/bin/dumpstate -s  
  428.     socket dumpstate stream 0660 shell log  
  429.     disabled  
  430.     oneshot  
  431.   
  432. service OK6410-setup /system/etc/init.OK6410.sh  
  433.     oneshot  
  434.   
  435. # we will start as root and wpa_supplicant will switch to user wifi  
  436. # after setting up the capabilities required for WEXT    
  437. service wpa_supplicant /system/bin/wpa_supplicant \  
  438.     -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd  
  439. #    user wifi  
  440. #    group wifi inet keystore system   
  441.     socket wpa_wlan0 dgram 777 wifi wifi  
  442.     disabled  
  443.     oneshot  
  444.   
  445.   
  446. service dhcpcd_wlan0 /system/bin/dhcpcd -o domain_name_servers -t 120  -f /system/etc/dhcpcd/dhcpcd.conf -d wlan0  
  447.     group dhcp wifi system  
  448.     disabled  
  449.     oneshot  
  450.   
  451.   
  452. on property:init.svc.wpa_supplicant=stopped  
  453.     stop dhcpcd_wlan0  

猜你喜欢

转载自blog.csdn.net/u010664697/article/details/9050851
今日推荐