我正在尝试修改与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文件的执行?我想验证以下几点:
提前谢谢您!
您可以在初始化脚本中写入
/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 */