0%

背景:云手机项目,底座为华为鲲鹏 920(ARM64)+ AMD GPU,Android 以容器方式运行在 Docker / K8S 之上(KBox 底座)。AOSP 升级到 15 之后,部分容器出现"能 ping 通 IP、域名解析却失败"的网络故障。本文记录从症状到根因的完整排查过程,最终合成于提交 13585312d9efe158f41530c68a60b225c6e61cfd。


1. 症状

android_59:/ # ping -c 2 223.5.5.5          # IP 层通
64 bytes from 223.5.5.5: icmp_seq=1 ttl=41 time=27.2 ms

android_59:/ # ping -c 2 www.baidu.com       # 解析层死
ping: unknown host www.baidu.com

resolver 侧的日志签名把问题钉死在"没有 DNS 服务器",而不是"DNS 查询发出去被拒":

# packages/modules/DnsResolver/res_send.cpp:500-509
doQuery: rcode=0, ancount=0, return value=-3      # -3 = -ESRCH(nameserverCount()==0 → 查询根本没发出)
# packages/modules/DnsResolver/DnsProxyListener.cpp:909-910
GetAddrInfoHandler::run: {0 786432 0 983040 1000 0}
#                                ^^^^ dns_netid=0:没有默认网络,resolver 拿不到 nameserver 列表

Android 的 DNS 链路是:网络注册 → NetworkAgent 携带 LinkProperties(含 DNS 列表)→ ConnectivityService 交给 DnsManager → setResolverConfiguration 下发给 netd/resolver。链路上任何一环断掉,resolver 的 nameserverCount 就是 0,所有域名解析立即返回 -ESRCH。

排查从此展开,最终发现是三层故障叠加:

flowchart TD
    A["症状: 能 ping IP<br/>域名解析 unknown host"] --> B{"第一层:<br/>接口有没有被跟踪?"}
    B -->|"正则被 AAPT 剥掉反斜杠"| C["wlan0 不被 EthernetTracker 认领<br/>→ 无 NetworkAgent → dns_netid=0"]
    B -->|"已跟踪"| D{"第二层:<br/>静态配置有没有生效?"}
    D -->|"id 不匹配 / 文件读不到"| E["lp 无 DNS<br/>AOSP 15 已废弃 net.dns* 兜底"]
    D -->|"已生效"| F{"第三层:<br/>网关在不在?"}
    F -->|"重启后 main 表 default 丢失"| G["provisioning 失败<br/>无默认路由 + 无 DNS → 全死"]
    F -->|"在"| H["健康"]

    style C fill:#ffcccc
    style E fill:#ffcccc
    style G fill:#ffcccc
    style H fill:#ccffcc
阅读全文 »

容器里 init 崩了却查不到日志:用 strace 抓启动现场

背景:commit 046e29a6(“修正 K8S 运行时 & 兼容 Docker 运行时”)改了 __system_property_area_init 相关逻辑,合入后容器环境的 Android 起不来。
现象:进容器 sh 看进程列表,没有 init 进程;logcat 空、dmesg 空、tombstone 没有——什么日志都没留下。
结局:靠把启动命令换成 strace init 抓到了现场。

阅读全文 »

容器里 Android 开不了机:一次 netd 反复 abort 的排查

环境:云OS 容器化 Android 15,宿主内核 5.10.0-277.0.0.bonc,鲲鹏 ARM64 服务器,Docker 与 K8s 双环境部署。
现象:开机流程卡死,sys.boot_completed 一直为空,netd 每 5 秒崩一次。
这篇的写法是"我当时怎么想的",推理链尽量摊开,方便对照源码自己走一遍。

阅读全文 »

最近在处理远程 SMB 共享目录时遇到了一个很典型的卡顿问题,排查下来发现是 Bandizip 的右键菜单功能导致的。这里记录一下排查过程和解决方法,给有类似情况的同学参考。

问题现象

我的本地 Windows 10 PC 通过公网隧道挂载了一个远程 SMB 共享目录,隧道带宽很小。每次在共享目录里对压缩文件点击右键时,资源管理器都会卡住很久,有时甚至会直接报告"无响应"。

一开始以为是网络问题,但观察任务管理器发现,每次触发右键菜单的瞬间,网络流量就会突然上升——说明资源管理器在尝试读取远程文件。

阅读全文 »

做定制系统的同学应该都碰到过这个需求:MDM 服务要在不知道当前密码的情况下,强制重置或清空锁屏密码。乍一看不难,但真做起来坑不少。本文记录一下我在 Android 16 上用 Escrow Token 机制踩过的路。

阅读全文 »

📖 前言

在 Dell R730xd 这样的服务器上利用 ESXi 进行显卡直通(PCIe Passthrough),是构建低成本 AI 计算平台的经典方案。然而,在配置 Debian 13 虚拟机并尝试运行大语言模型(LLM)时,许多用户(包括我自己)都会卡在最后一步——NVIDIA 驱动安装。

历经多次踩坑,尝试了各种参数和旧版驱动无果后,最终发现了解决此问题的“银弹”:-m=kernel-open。本文将重点记录这一关键步骤,帮助大家少走弯路。

阅读全文 »

这篇内容是记录部署 OpenCode 的指南,整理了最顺滑的安装路径,踩过的坑都帮你填平了,直接跟着走就行。
面向公网环境,使用国内公网镜像源加速。

阅读全文 »