普通文本  |  496行  |  16.79 KB

#
# Copyright 2012 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import init.flo.usb.rc

on early-init
    mount debugfs debugfs /sys/kernel/debug
    chown system system /sys/kernel/debug/kgsl/proc
    symlink /data/tombstones /tombstones

on init
    # See storage config details at http://source.android.com/tech/storage/
    mkdir /mnt/shell/emulated 0700 shell shell
    mkdir /storage/emulated 0555 root root

    export EXTERNAL_STORAGE /storage/emulated/legacy
    export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
    export EMULATED_STORAGE_TARGET /storage/emulated

    # Support legacy paths
    symlink /storage/emulated/legacy /sdcard
    symlink /storage/emulated/legacy /mnt/sdcard
    symlink /storage/emulated/legacy /storage/sdcard0
    symlink /mnt/shell/emulated/0 /storage/emulated/legacy

on init
    # Set permissions for persist partition
    mkdir /persist 0771 system system
    mkdir /firmware 0771 system system

on fs
    mount_all ./fstab.flo
    setprop ro.crypto.fuse_sdcard true
    write /sys/kernel/boot_adsp/boot 1

on early-boot
    # set RLIMIT_MEMLOCK to 64MB
    setrlimit 8 67108864 67108864

on boot
    #Create QMUX deamon socket area
    mkdir /dev/socket/qmux_radio 0770 radio radio
    chmod 2770 /dev/socket/qmux_radio
    mkdir /dev/socket/qmux_audio 0770 media audio
    chmod 2770 /dev/socket/qmux_audio
    mkdir /dev/socket/qmux_bluetooth 0770 bluetooth net_bt_stack
    chmod 2770 /dev/socket/qmux_bluetooth
    mkdir /dev/socket/qmux_gps 0770 gps gps
    chmod 2770 /dev/socket/qmux_gps

    # Allow QMUX daemon to assign port open wait time
    chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait

    #Remove SUID bit for iproute2 ip tool
    chmod 0755 /system/bin/ip

    #port-bridge
    chmod 0660 /dev/smd0
    chown system system /dev/smd0

    chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state

    # create symlink for fb1 as HDMI
    symlink /dev/graphics/fb1 /dev/graphics/hdmi

    # Remove write permissions to video related nodes
    chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
    chmod 0664 /sys/devices/virtual/graphics/fb1/video_mode
    chmod 0664 /sys/devices/virtual/graphics/fb1/format_3d

    # Change owner and group for media server and surface flinger
    chown system system /sys/devices/virtual/graphics/fb1/format_3d
    chown system system /sys/devices/virtual/graphics/fb1/hpd

    #For bridgemgr daemon to inform the USB driver of the correct transport
    chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport

    chmod 660 /dev/rtc0
    chown system system /dev/rtc0

    chown root system /proc/net/ip_conntrack

    # Enable DEBUG_SUSPEND, DEBUG_EXIT_SUSPEND, and DEBUG_WAKEUP
    write /sys/module/wakelock/parameters/debug_mask 7

    write /proc/sys/vm/swappiness 0

    #To allow interfaces to get v6 address when tethering is enabled
    write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra 2


# NFC: create data/nfc for nv storage
    mkdir /data/nfc 770 nfc nfc
    mkdir /data/nfc/param 770 nfc nfc

# Assign TCP buffer thresholds to be ceiling value of technology maximums
# Increased technology maximums should be reflected here.
    write /proc/sys/net/core/rmem_max  1220608
    write /proc/sys/net/core/wmem_max  1220608

# msm specific files that need to be created on /data
on post-fs-data
    mkdir /data/media 0770 media_rw media_rw

    # Create the directories used by the Wireless subsystem
    mkdir /data/misc/wifi 0770 wifi wifi
    mkdir /data/misc/wifi/sockets 0770 wifi wifi
    mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
    mkdir /data/misc/dhcp 0770 dhcp dhcp

    chown system system /dev/wcnss_wlan
    write /sys/module/wcnss_ssr_8960/parameters/enable_riva_ssr 1

    mkdir /data/tombstones 0771 system system
    mkdir /tombstones/modem 0771 system system
    mkdir /tombstones/lpass 0771 system system
    mkdir /tombstones/wcnss 0771 system system
    mkdir /tombstones/dsps 0771 system system
    mkdir /tombstones/mdm 0771 system system

# to observe dnsmasq.leases file for dhcp information of soft ap.
    chown dhcp system /data/misc/dhcp

    # Create directory used by audio subsystem
    mkdir /data/misc/audio 0770 audio audio

    # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections
    # We chown/chmod /persist again so because mount is run as root + defaults
    chown system system /persist
    chmod 0664 /sys/devices/platform/msm_sdcc.1/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.2/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.3/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.4/polling

    # Chown polling nodes as needed from UI running on system server
    chown system system /sys/devices/platform/msm_sdcc.1/polling
    chown system system /sys/devices/platform/msm_sdcc.2/polling
    chown system system /sys/devices/platform/msm_sdcc.3/polling
    chown system system /sys/devices/platform/msm_sdcc.4/polling

    #Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant
    mkdir /data/system 0775 system system
    #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant

    #Create directory used by sensor subsystem(dsps)
    mkdir /data/system/sensors
    chmod 665 /data/system/sensors
    write /data/system/sensors/settings 1
    chmod 660 /data/system/sensors/settings

    # AKM setting data
    mkdir /data/misc/sensors
    chmod 775 /data/misc/sensors

    mkdir /persist/sensors
    chmod 775 /persist/sensors

    # Modify from 777 (for camera calibration) to 775
    chmod 775 /persist/camera_calibration

    # Modify from 777 (for lightsensor) to 775
    chmod 775 /persist/lightsensor

    # Modify from 777 (for lightsensor calibration data) to 664
    chmod 664 /persist/lightsensor/AL3010_Config.ini

    chmod 664 /persist/ssn
    chmod 664 /persist/60isn

    #Provide the access to hostapd.conf only to root and group
    chmod 0660 /data/hostapd/hostapd.conf

    # Enable the setgid bit on the directory
    mkdir /data/audio 0770 media audio
    chmod 2770 /data/audio

    # kickstart
    mkdir /data/qcks 0770 system system
    chown system /dev/block/platform/msm_sdcc.1/by-name

    setprop vold.post_fs_data_done 1

    rm /data/local/tmp/adreno_config.txt

    # White LED
    chown system system /sys/class/leds/white/device/lock
    chown system system /sys/class/leds/white/brightness
    chown system system /sys/class/leds/white/device/grpfreq
    chown system system /sys/class/leds/white/device/grppwm
    chown system system /sys/class/leds/white/device/blink

    # communicate with mpdecision and thermald
    mkdir /dev/socket/mpdecision 0770 system system
    chmod 2770 /dev/socket/mpdecision

    # adjust vibrator amplitude
    write /sys/class/timed_output/vibrator/amp 70

    # Enable Power modes and set the CPU Freq Sampling rates
    write /sys/module/rpm_resources/enable_low_power/L2_cache 1
    write /sys/module/rpm_resources/enable_low_power/pxo 1
    write /sys/module/rpm_resources/enable_low_power/vdd_dig 1
    write /sys/module/rpm_resources/enable_low_power/vdd_mem 1
    write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "ondemand"
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "ondemand"
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "ondemand"
    write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor "ondemand"
    write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold 90
    write /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate 50000
    write /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy 1
    write /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor 4
    write /sys/devices/system/cpu/cpufreq/ondemand/down_differential 10
    write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core 60
    write /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core 3
    write /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq 918000
    write /sys/devices/system/cpu/cpufreq/ondemand/sync_freq 1026000
    write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load 80
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 384000
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 384000
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 384000
    write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 384000
    write /sys/devices/system/cpu/cpu1/online 1
    write /sys/devices/system/cpu/cpu2/online 1
    write /sys/devices/system/cpu/cpu3/online 1
    write /dev/cpuctl/apps/cpu.notify_on_migrate 1

on charger
    # Enable Power modes and set the CPU Freq Sampling rates
    write /sys/module/rpm_resources/enable_low_power/L2_cache 1
    write /sys/module/rpm_resources/enable_low_power/pxo 1
    write /sys/module/rpm_resources/enable_low_power/vdd_dig 1
    write /sys/module/rpm_resources/enable_low_power/vdd_mem 1
    write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled 1
    write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold 90
    write /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate 50000
    write /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy 1
    write /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor 4
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 384000
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 384000
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 384000
    write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 384000

on property:init.svc.wpa_supplicant=stopped
    stop dhcpcd

service irsc_util /system/bin/logwrapper /system/bin/irsc_util "/etc/sec_config"
    class main
    user root
    oneshot

service rmt_storage /system/bin/rmt_storage
    class main
    user root

service hciattach /system/bin/sh /system/etc/init.flo.bt.sh
    class late_start
    user bluetooth
    group qcom_oncrpc bluetooth net_bt_admin system net_bt_stack
    disabled
    oneshot

on property:bluetooth.hciattach=true
    start hciattach

on property:bluetooth.hciattach=false
    setprop bluetooth.status off

service bridgemgrd /system/bin/bridgemgrd
    class main
    user radio
    group radio

service qcom-c_main-sh /system/bin/sh /init.qcom.class_main.sh
    class main
    user root
    oneshot

# QMUX must be in multiple groups to support external process connections
service qmuxd /system/bin/qmuxd
    class main
    user radio
    group radio audio bluetooth gps net_bt_stack
    disabled

service ks_checker /system/bin/sh /system/etc/kickstart_checker.sh
    class core
    oneshot

service kickstart /system/bin/qcks -i /firmware/image/ -r /data/tombstones/mdm/
    class core
    user system
    group system
    disabled
    oneshot

service asus-dbug-d /data/data/com.asus.debugger/files/asus-debugger-d
    class late_start
    disabled

on property:gsm.radio.kickstart=on
    start kickstart

on property:gsm.radio.kickstart=off
    stop kickstart

on property:ril.asus_debugger_running=1
    start asus-dbug-d

service netmgrd /system/bin/netmgrd
    class main
    disabled


service sensors /system/bin/sensors.qcom
    class late_start
    user root
    group root

service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    -O/data/misc/wifi/sockets \
    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    #   we will start as root and wpa_supplicant will switch to user wifi
    #   after setting up the capabilities required for WEXT
    #   user wifi
    #   group wifi inet keystore
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

service p2p_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
    -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
    -I/system/etc/wifi/p2p_supplicant_overlay.conf -N \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 \
    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
#   we will start as root and wpa_supplicant will switch to user wifi
#   after setting up the capabilities required for WEXT
#   user wifi
#   group wifi inet keystore
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

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

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

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

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

service dhcpcd_bt-pan /system/bin/dhcpcd -ABKL
    class main
    disabled
    oneshot

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

on property:ro.data.large_tcp_window_size=true
    # Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB)
    write /proc/sys/net/ipv4/tcp_adv_win_scale  1

service charger /charger
    class charger

# virtual sdcard daemon running as media_rw (1023)
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
    class late_start

service thermald /system/bin/thermald
    class main

service mpdecision /system/bin/mpdecision --no_sleep --avg_comp
    class main

service ppd /system/bin/mm-pp-daemon
    class late_start
    disabled
    user system
    socket pps stream 0660 system system graphics
    group system graphics

service qcamerasvr /system/bin/mm-qcamera-daemon
    class late_start
    user camera
    group camera system inet input

service wcnss_init /system/bin/sh /system/etc/init.flo.wifi.sh
    class main
    user system
    group system wifi
    oneshot

service bdAddrLoader /system/bin/bdAddrLoader -f /persist/bluetooth/.bdaddr -h -x
    class main
    user bluetooth
    group system bluetooth net_bt_stack
    oneshot

# bugreport is triggered by holding down volume down, volume up and power
service bugreport /system/bin/dumpstate -d -p -B \
        -o /data/data/com.android.shell/files/bugreports/bugreport
    class main
    disabled
    oneshot
    keycodes 114 115 116

service qseecomd /system/bin/qseecomd
    class late_start
    user system
    group system

service diag_mdlog /system/bin/logwrapper /system/bin/diag_mdlog -s 100
    class late_start
    disabled



# on property:gsm.sim.state=READY
#    start diag_mdlog

on property:ro.boot.baseband=mdm
    start qmuxd
    start netmgrd

on property:ro.boot.baseband=apq
    setprop ro.radio.noril yes
    stop ril-daemon

on property:init.svc.surfaceflinger=running
    start ppd

on property:init.svc.surfaceflinger=stopped
    stop ppd