android 8 自启动,android 8.1添加开机启动服务

android 8.1添加开机启动服务

修改文件:

From 0ecbea62c6ceed9bc54a29524f04cd593e036eaa Mon Sep 17 00:00:00 2001

From: “xu.han747” xu.han747@sim.com

Date: Wed, 25 Dec 2019 20:53:35 +0800

Subject: [PATCH] [Sim8950l_yunchongba]-system-[Add boot startup script]

Change-Id: I73f7a69afa275ac3108b5ec7bafbd5bff019ddb2

…/device/qcom/msm8953_32/initlogkernel.sh | 84 ++++++++++++++++++++++

…/device/qcom/msm8953_32/msm8953_32.mk | 3 +

…/device/qcom/sepolicy/common/file_contexts | 1 +

…/system/core/libcutils/fs_config.cpp | 1 +

sim8950l_yunchong/system/core/rootdir/init.rc | 6 ++

…/prebuilts/api/26.0/private/initlogkernel.te | 4 ++

…/prebuilts/api/26.0/public/initlogkernel.te | 4 ++

…/system/sepolicy/private/initlogkernel.te | 4 ++

sim8950l_yunchong/system/sepolicy/public/domain.te | 1 +

sim8950l_yunchong/system/sepolicy/public/init.te | 14 ++±

…/system/sepolicy/public/initlogkernel.te | 4 ++

11 files changed, 124 insertions(+), 2 deletions(-)

create mode 100644 sim8950l_yunchong/device/qcom/msm8953_32/initlogkernel.sh

create mode 100644 sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/private/initlogkernel.te

create mode 100644 sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/public/initlogkernel.te

create mode 100644 sim8950l_yunchong/system/sepolicy/private/initlogkernel.te

create mode 100644 sim8950l_yunchong/system/sepolicy/public/initlogkernel.te

diff --git a/sim8950l_yunchong/device/qcom/msm8953_32/initlogkernel.sh b/sim8950l_yunchong/device/qcom/msm8953_32/initlogkernel.sh

new file mode 100644

index 0000000…f9a099b

— /dev/null

+++ b/sim8950l_yunchong/device/qcom/msm8953_32/initlogkernel.sh

@@ -0,0 +1,84 @@

+#!/vendor/bin/sh

+

+LOG_TAG=“logcat”

+LOG_NAME="${0}:"

+

+logcat_pid=""

+cp_pid=""

+

+sdcard_path="/sdcard"

+mount | grep “/sdcard ext4” > /dev/null

+

+#while [ $? == 1 ]

+#do

+# sleep 1

+# mount | grep “/sdcard ext4”

+#done

+

+loge ()

+{

/system/bin/log -t L O G T A G − p e " LOG_TAG -p e "LOGT​AG−pe"LOG_NAME $@"

+}

+logi ()

+{

/system/bin/log -t L O G T A G − p i " LOG_TAG -p i "LOGT​AG−pi"LOG_NAME $@"

+}

+failed ()

+{

loge “$1: exit code $2”

exit $2

+}

+start_logcat ()

+{

if [ ! -d “${sdcard_path}/log” ]; then

/system/bin/mkdir ${sdcard_path}/log/

fi

if [ ! -d “${sdcard_path}/log/pstore” ]; then

/system/bin/mkdir ${sdcard_path}/log/pstore/

fi

#if [ -f “/sys/fs/pstore/dmesg-ramoops-0” ]; then

#/system/bin/tar czf ${sdcard_path}/log/pstore/$(ls -l /sdcard/log/pstore/|grep "^-"|wc -l).tar.gz sys/fs/pstore/

#rm /sys/fs/pstore/dmesg-ramoops-0

#fi

if [ ! -d “/mnt/external_sd” ]; then

/system/bin/mkdir /mnt/external_sd/

fi

if [ ! -d “/mnt/external_sd/Log” ]; then

/system/bin/mkdir /mnt/external_sd/Log/

fi

if [ ! -d “/mnt/external_sd/Log/drive/” ]; then

/system/bin/mkdir /mnt/external_sd/Log/drive/

fi

/system/bin/chmod 777 /mnt/external_sd/Log/drive/

#/system/bin/cp /mnt/external_sd/Log/drive/logcat_kernel.log /mnt/external_sd/Log/drive/logcat_kernel.log.last

#/system/bin/mkdir ${sdcard_path}/log/

/system/bin/logcat -b kernel -f /mnt/external_sd/Log/drive/logcat_kernel.log -r1024 -n 25 -v time &

logcat_pid=$!

logi “start_logcat: logcat pid = $logcat_pid”

+}

+kill_logcat ()

+{

logi “kill_logcat: pid = $logcat_pid”

careful not to kill zero or null!

kill -TERM $logcat_pid

this shell doesn’t exit now – wait returns for normal exit

+}

+

+# init does SIGTERM on ctl.stop for service

+#trap “kill_logcat” TERM INT

+

+start_logcat

+

+#wait $cp_pid

+#busybox sync

+wait $logcat_pid

+

+logi “logcat service stopped”

+

+exit 0

diff --git a/sim8950l_yunchong/device/qcom/msm8953_32/msm8953_32.mk b/sim8950l_yunchong/device/qcom/msm8953_32/msm8953_32.mk

index ca4661a…af7572e 100644

— a/sim8950l_yunchong/device/qcom/msm8953_32/msm8953_32.mk

+++ b/sim8950l_yunchong/device/qcom/msm8953_32/msm8953_32.mk

@@ -233,6 +233,9 @@ PRODUCT_COPY_FILES += \

#fstab.qcom

PRODUCT_PACKAGES += fstab.qcom

+#initkernellog

+PRODUCT_COPY_FILES += \

device/qcom/msm8953_32/initlogkernel.sh:$(TARGET_COPY_OUT_VENDOR)/bin/initlogkernel.sh

#OEM Services library

PRODUCT_PACKAGES += oem-services

diff --git a/sim8950l_yunchong/device/qcom/sepolicy/common/file_contexts b/sim8950l_yunchong/device/qcom/sepolicy/common/file_contexts

index 4dbd2ea…2b1b815 100755

— a/sim8950l_yunchong/device/qcom/sepolicy/common/file_contexts

+++ b/sim8950l_yunchong/device/qcom/sepolicy/common/file_contexts

@@ -698,6 +698,7 @@

/firmware/image(/.*)? u:object_r:firmware_file:s0

/(vendor|system/vendor)/bin/grep u:object_r:vendor_toolbox_exec:s0

+/(vendor|system/vendor)/bin/initlogkernel.sh u:object_r:initlogkernel_exec:s0

##################################

#vendor toolbox

diff --git a/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/private/file_contexts b/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/private/file_contexts

index 4dbd2ea…2b1b815 100755

— a/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/private/file_contexts

+++ b/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/private/file_contexts

@@ -698,6 +698,7 @@

/firmware/image(/.*)? u:object_r:firmware_file:s0

/(vendor|system/vendor)/bin/grep u:object_r:vendor_toolbox_exec:s0

+/(vendor|system/vendor)/bin/initlogkernel.sh u:object_r:initlogkernel_exec:s0

##################################

#vendor toolbox

diff --git a/sim8950l_yunchong/system/core/libcutils/fs_config.cpp b/sim8950l_yunchong/system/core/libcutils/fs_config.cpp

index 2ec2283…e45d06f 100644

— a/sim8950l_yunchong/system/core/libcutils/fs_config.cpp

+++ b/sim8950l_yunchong/system/core/libcutils/fs_config.cpp

@@ -157,6 +157,7 @@ static const struct fs_path_config android_files[] = {

{ 00440, AID_ROOT, AID_SHELL, 0, “system/etc/init.goldfish.rc” },

{ 00550, AID_ROOT, AID_SHELL, 0, “system/etc/init.goldfish.sh” },

{ 00550, AID_ROOT, AID_SHELL, 0, “system/etc/init.ril” },

{ 00755, AID_ROOT, AID_SHELL, 0, “vendor/bin/initlogkernel.sh” },

{ 00555, AID_ROOT, AID_ROOT, 0, “system/etc/ppp/" },

{ 00555, AID_ROOT, AID_ROOT, 0, "system/etc/rc.” },

{ 00440, AID_ROOT, AID_ROOT, 0, “system/etc/recovery.img” },

diff --git a/sim8950l_yunchong/system/core/rootdir/init.rc b/sim8950l_yunchong/system/core/rootdir/init.rc

index 9214c4b…5fe13bc 100644

— a/sim8950l_yunchong/system/core/rootdir/init.rc

+++ b/sim8950l_yunchong/system/core/rootdir/init.rc

@@ -741,3 +741,9 @@ on property:ro.debuggable=1

service flash_recovery /system/bin/install-recovery.sh

class main

oneshot

+service initlogkernel /verdor/bin/initlogkernel.sh

class main

user root

group root

oneshot

diff --git a/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/private/initlogkernel.te b/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/private/initlogkernel.te

new file mode 100644

index 0000000…55ce43b

— /dev/null

+++ b/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/private/initlogkernel.te

@@ -0,0 +1,4 @@

+typeattribute yos coredomain;

+typeattribute yos mlstrustedsubject;

+init_daemon_domain(initlogkernel)

diff --git a/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/public/initlogkernel.te b/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/public/initlogkernel.te

new file mode 100644

index 0000000…a76d83d

— /dev/null

+++ b/sim8950l_yunchong/system/sepolicy/prebuilts/api/26.0/public/initlogkernel.te

@@ -0,0 +1,4 @@

+type initlogkernel, domain;

+type initlogkernel_exec, exec_type, vendor_file_type,file_type;

+

+

diff --git a/sim8950l_yunchong/system/sepolicy/private/initlogkernel.te b/sim8950l_yunchong/system/sepolicy/private/initlogkernel.te

new file mode 100644

index 0000000…55ce43b

— /dev/null

+++ b/sim8950l_yunchong/system/sepolicy/private/initlogkernel.te

@@ -0,0 +1,4 @@

+typeattribute yos coredomain;

+typeattribute yos mlstrustedsubject;

+init_daemon_domain(initlogkernel)

+

diff --git a/sim8950l_yunchong/system/sepolicy/public/domain.te b/sim8950l_yunchong/system/sepolicy/public/domain.te

index 69ea412…bd040f2 100644

— a/sim8950l_yunchong/system/sepolicy/public/domain.te

+++ b/sim8950l_yunchong/system/sepolicy/public/domain.te

@@ -407,6 +407,7 @@ neverallow {

vendor_file_type

exec_type

-yos_exec

-initlogkernel_exec

}:dir_file_class_set { create write setattr relabelfrom append unlink link rename };

neverallow { domain -recovery -kernel with_asan(`-asan_extract’) } { system_file vendor_file_type exec_type }:dir_file_class_set relabelto;

diff --git a/sim8950l_yunchong/system/sepolicy/public/init.te b/sim8950l_yunchong/system/sepolicy/public/init.te

index 5ef66e6…ad8ee40 100644

— a/sim8950l_yunchong/system/sepolicy/public/init.te

+++ b/sim8950l_yunchong/system/sepolicy/public/init.te

@@ -428,7 +428,7 @@ neverallow init shell_data_file:lnk_file read;

neverallow init app_data_file:lnk_file read;

init should never execute a program without changing to another domain.

-neverallow init { file_type fs_type -yos_exec }:file execute_no_trans;

+neverallow init { file_type fs_type -yos_exec -initlogkernel_exec}:file execute_no_trans;

Init never adds or uses services via service_manager.

neverallow init service_manager_type:service_manager { add find };

@@ -439,4 +439,14 @@ neverallow init shell_data_file:dir { write add_name remove_name };

yos service

allow init yos_exec:dir { create setattr write add_name };

-allow init yos_exec:file { append setattr execute_no_trans create write };

\ No newline at end of file

+allow init yos_exec:file { append setattr execute_no_trans create write };

+

+# initlogkernel service

+allow init initlogkernel_exec:dir { read open };

+allow init initlogkernel_exec:dir search;

+allow init initlogkernel_exec:dir getattr;

+allow init initlogkernel_exec:capability dac_override;

+allow init initlogkernel_exec:dir { getattr search };

+allow init initlogkernel_exec:lnk_file read;

+allow init initlogkernel_exec:dir { write create add_name setattr };

+allow init initlogkernel_exec:file { read getattr open execute execute_no_trans };

diff --git a/sim8950l_yunchong/system/sepolicy/public/initlogkernel.te b/sim8950l_yunchong/system/sepolicy/public/initlogkernel.te

new file mode 100644

index 0000000…a76d83d

— /dev/null

+++ b/sim8950l_yunchong/system/sepolicy/public/initlogkernel.te

@@ -0,0 +1,4 @@

+type initlogkernel, domain;

+type initlogkernel_exec, exec_type, vendor_file_type,file_type;

+

+

diff --git a/sim8950l_yunchong/device/qcom/common/rootdir/etc/init.qcom.rc b/sim8950l_yunchong/device/qcom/common/rootdir/etc/init.qcom.rc

index 9214c4b…5fe13bc 100644

— a/sim8950l_yunchong/device/qcom/common/rootdir/etc/init.qcom.rc

+++ b/sim8950l_yunchong/device/qcom/common/rootdir/etc/init.qcom.rc

@@ -741,3 +741,9 @@ on property:ro.debuggable=1

chmod 0777 /vendor/initlogkernel.sh

1.9.1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值