调试Android初始化语言

问题描述 投票:0回答:1

我正在尝试修改与Android 9中的init.rc相关的文件(使用来自Lantronix的已root的snapdragon 845开发平台)。我要修改的文件是“/vendor/etc/init/hostapd.android.rc”。

目的是在WIFI热点开启后添加默认路由(网关)。该代码在终端中运行良好:

ip address add 192.168.43.1/24 dev wlan0

因此,我遵循了 ASOP 中的 init readme.md,可在此处获取(https://android.googlesource.com/platform/system/core/+/master/init/README.md)。我修改了 hostapd.android.rc 添加以下行:

on property:init.svc.hostapd=running
exec - -- /system/bin/sleep 2
exec - -- /system/bin/ip address add 192.168.43.1/24 dev wlan0

上面的代码应该在热点启用后触发,等待两秒钟并将网关地址添加到wlan0(我的热点网络)。

就是hostapd.android.rc文件的内容:

#
# init.rc fragment for hostapd on Android
# Copyright (c) 2002-2016, Jouni Malinen <[email protected]>
#
# This software may be distributed under the terms of the BSD license.
# See README for more details.
#

on post-fs-data
    mkdir /data/vendor/wifi 0770 wifi wifi
    mkdir /data/vendor/wifi/hostapd 0770 wifi wifi
    mkdir /data/vendor/wifi/hostapd/sockets 0770 wifi wifi

service hostapd /vendor/bin/hw/hostapd
    interface [email protected]::IHostapd default
    class main
    capabilities NET_ADMIN NET_RAW
    user wifi
    group wifi net_raw net_admin
    disabled
    oneshot

on property:init.svc.hostapd=running
    exec - -- /system/bin/sleep 2
    exec - -- /system/bin/ip address add 192.168.43.1/24 dev wlan0

但是,它不起作用,我不知道原因。我想知道如何检查是否有任何错误。使用

logcat
dumpsys
都不会显示任何内容。

如何调试hostapd.android.rc文件的执行?我想验证以下几点:

  • 属性“init.svc.hostapd=running”是否被触发?
  • 执行命令的输出是什么?我可以添加“echo”进行调试吗?

提前谢谢您!

android operating-system init
1个回答
1
投票

您可以在初始化脚本中写入

/dev/kmesg
(使用
adb shell dmesg
命令读取),这是一个示例:

write /dev/kmsg "product model is ${ro.product.model}"

您还可以通过添加以下内容来增加 init 的详细程度:

on early-init
    setprop sys.init_log_level 7
    # or
    loglevel 7

此更改后,有如此多的日志,我在内核日志中收到此消息:

init: 58 output lines suppressed due to ratelimiting

所以我必须修改内核文件

ratelimit.h
,如下所示:

#define DEFAULT_RATELIMIT_BURST     500 /* default was 10 */
© www.soinside.com 2019 - 2024. All rights reserved.