社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
##################################################
目录
/system/media 和 /system/media/audio 目录
/system/app 跟 /system/priv-app 目录
/data/anr/traces.txt 文件与 /data/system/dropbox/*.txt 文件们
/data/location/gps 目录和 /data/system/location/ 目录以及 /data/property/ 目录
##################################################
——————————
手机的硬件设备和电脑一样 都需要不同的零部件拼装而成 只不过手机零部件相比于电脑零部件来说更精密
手机必备的零部件包括:
CPU 处理器
RAM 运存
ROM 内存
GPU 处理器
屏幕
摄像头
电池容量
网络模块
等等
%%%%%
手机芯片名为 SoC/System on Chip/系统级芯片 也有称片上系统
意指它是一个产品 是一个有专用目标的集成电路
可能很多人平时将她称为 CPU/中央处理器
其实手机的处理器并不只是 CPU 而是一个片上系统
一颗手机处理器包括了
CPU
GPU
基带
ISP
等众多单元 而这些单元集成在一起便是 SoC !!!
手机上的 soc 一般使用 ARM 架构
ARM 架构由 ARM 公司研发
ARM 公司会将 ARM 公版架构授权给芯片设计公司
由芯片设计公司对公版架构进行定制、改进以及最后的发布
%%%%%
就是跟电脑一样的中央处理器
手机 soc 的 CPU 一般会有 6 个或 8 个核心
分为性能核心和能效核心
性能核心频率较高 架构较先进 主要应对手机需要处理大型任务的时候 同时耗电较多
能效核心一般频率较低 架构较低级 主要用于日常的用户使用
现在来看几组 CPU 常用的丛集 常用为
1+3+4
4+4
2+6
2+4
CPU 和电脑的 CPU 概念也差不多
手机 CPU 好坏对系统是否能够流畅运行影响很大
CPU 的功能包括
顺序控制
操作控制
时间控制
数据处理
计算机指令解释
计算机软件中的数据处理
计算机中的所有操作都由 CPU 读取解码并执行指令
很多 CPU 都可以超频工作 需刷机 root
%%%%%
CPU 主要负责逻辑指令的执行和处理
但是当 CPU 遇到大量的简单计算时复杂的逻辑处理反而会降低运行效率
那这大量的简单计算究竟交给谁呢 那就是 GPU
GPU 主要负责图形渲染等计算工作 减轻 CPU 负担 增强游戏体验
%%%%%
我们平时用手机拍照录像的图像信号都会由 Image Signal Processing/ISP 进行处理
目前 ISP 芯片分为两种
一种是集成式 她跟 CPU、GPU 基带等一起集成在 soc 中
另一种是独立式 其拥有明显的优势 在图像处理能力和成像质量上都更加优秀
而且独立 ISP 一般是手机厂商根据不同机型的摄像硬件定制 也能更好的发挥出手机相机的实力
%%%%%
手机除了普通的 CPU 芯片以外 还有 MODEM 处理器芯片
该芯片的功能就是实现手机必需的通信功能
%%%%%
手机基带又称为 Radio 是手机中的一块电路
主要的作用是负责完成移动网络中无线信号的解调、解扰、解扩和解码的工作
手机通常由两大部分电路组成
一部分是高层处理部分 另一部分就是基带
基带英文全称 Baseband/信源 信息源也称 发终端
发出的没有经过 调制/进行频谱搬移和变换 的原始电信号所固有的 频带/频率带宽 称为基本频带 简称基带
简单来说手机处理器负责处理信息
而我们上网或通话时无线信号的收发均由基带完成
基带也分为集成式和外挂式
在骁龙 888 之前 高通骁龙 8 系一直使用的是外挂基带
这是因为骁龙 865 及以前的处理器均使用的是 7nm 以上制程 处理器内部寸土寸金
如果要保证 soc 的面积大小不变强行把基带集成进 soc 那必然会带来性能的牺牲
而如今的骁龙 888 使用了 5nm 制程 使得 soc 在相同面积内能容纳下更多的晶体管
所以高通这次就把基带集成进了 soc
基带芯片是指用来合成即将发射的基带信号或对接收到的基带信号进行解码的芯片
具体地说 就是发射时 把语音或其她数据信号编码成用来发射的基带码
接收时 把收到的基带码解码为语音或其她数据信号
主要完成通信终端的信息处理功能
%%%%%
ROM 手机内存容量即手机内部存储空间 和电脑的硬盘可以说是一个概念
ROM 的大小 影响手机内部可以放多少东西
个人觉得最好软件装 ROM 里 媒体文件等等放手机内存卡里
ROM 固件和 ROM 内存不是一个概念
就是各大论坛上说的固件 可以简单理解为刷入的系统 就像从网上下的 .iso 系统镜像
在 Android 系统领域里有原生的 Android 系统 现在大多数 Android 手机厂商的出厂手机都是原生的
还有基于原生系统上的优化系统 OS 等等
可以这样理解 原生的 Android 系统就像原版的 XP
优化系统就相当于 雨林木风版、深度版 XP 等等
一般而言 后者都要比原生的 Android 系统具有更良好的性能
而且有些差别很大 要比官方的系统在性能上好很多
当然也有其她的一些缺点,比如没有原生系统稳定 这点在中低端手机会特别明显
%%%%%
简称运存
这个和电脑的内存差不多
RAM 的大小影响手机可以同时运行多少软件 尤其是特别占运存的软件
——————————
如果没有安卓分区知识 建议看一下这篇文章:
下面主要是介绍了一下 Android 手机的硬软件结构以及主要分区的内容并简要的介绍了一些开机启动的过程
%%%%%
可以简单的把手机的 ROM 存储类比为我们电脑上的硬盘
这个硬盘被分成了几个分区:
bootloader 分区
boot 分区
system 分区
等等
所谓的刷机我们可以简单的理解成把软件安装在手机的某些分区中类似于我们在电脑上安装 Windows 系统到 C 盘
注意盘符的概念是微软创造的 盘符那一套在这里不适用 而是 Android 是基于 Linux 的挂载概念
Android 的主要分区:
BootLoader 分区
Boot 分区
Recoverty 分区
System 分区
Data 分区
Modem 分区
%%%%%
当按下电源键手机上电启动后,首先从 bootloader 分区中一个固定的地址开始执行指令
bootloader 就是 Android 版本的的 BIOS !!!
bootloader 分区分成两个部分,分别叫做
primary bootloader/主引导加载程序
secondary stage bootloader/二级引导加载程序
bootloader 的 primary bootloader 部分主要执行硬件检测 确保硬件能正常工作
然后将 secondary stage bootloader 拷贝到 内存/RAM 相应位置开始执行
Secondary stage bootloader 会进行一些硬件初始化工作 例如获取内存大小信息等 然后根据用户的按键进入到某种启动模式
比如说大家所熟知的通过电源键和其她一些按键的组合进入到 recovery、fastboot、 或者选择启动模式的启动界面以及进入工厂模式等等
我们在各大论坛上看到的 bootloader 通常指的就是 secondary stage bootloader
不过我们不需要关心太多的细节 可以简单的理解为 bootloader 就是一段启动代码 根据用户按键有选择的进入某种启动模式
%%%%%
fastboot 是 Android 定义的一种简单的刷机协议
用户可以通过 fastboot 命令行工具通过 USB 来进行刷机
例如:
fastboot flash boot boot.img /* 把 boot.img 的内容刷写到 boot 分区中 */
一般的手机厂商不直接提供 fastboot 模式刷机 而为了显示她们的 NB 之处总是会提供自己专有的刷机工具和刷机方法
比如说三星的 Odin 摩托的 RSD 华为的粉屏等等
但是其本质实际上是相同的 都是将软件直接 flash 到各个分区中
这种通常称为线刷 是比较原始的方法
当手机处于开不了机的情况下 可以使用相应厂家提供的工具进行刷入
不过需要注意的是 有一些机型无法修改 boot 分区!
%%%%%
recovery 是 Android 定义的一个标准刷机协议
当进入 recovery 模式时 Secondary stage bootloader 从 recovery 分区开始启动
recovery 分区实际上是一个简单的 Linux 系统
当内核启动完毕后 开始执行第一个程序 init
init 程序是 Linux 系统所有程序的老祖宗
init 会启动一个叫做 recovery 的程序
recovery 模式的名称也由此而来
通过 recovery 程序用户可以执行清除数据、安装刷机包等操作
一般的手机厂商都提供一个简单的 recovery 刷机 多数只能进行 upate 的操作 不能进行卡刷
如果想要自已卡刷 则需要事先刷入第三方的 Recovery 然后选择刷机包
大名鼎鼎的 CWM Recovery 就是一个加入了很多增强功能的 recovery
要想用上 CWM Recovery 前提是 recovery 分区可以被刷写
大家在论坛上看到的解锁 bootloader 通常指的就是解锁 recovery 或 fastboot 允许刷写 recovery 分区
这样大家就可以用上喜爱的 CWM Recovery 了!
%%%%%
实现手机必需的通信功能
大家通常所刷的 RADIO 就是刷写 modem 分区
在所有适配的 ROM 中这部分是不动 否则会造成通话不稳定
——————————
你有没有想过当我们按下电源键开机到进入到桌面到底是个什么样的过程呢?
%%%%%
当我们只是按下电源键开机时 会进入正常启动模式
Secondary stage bootloader/二级引导加载程序 会从 boot 分区开始启动
Boot 分区的格式是固定的
首先是一个头部
然后是 Linux 内核
最后是用作根文件系统的 ramdisk
一般针对每个机型的完整刷机包中会有一个 boot.img 文件 这就是 boot 分区镜像文件
当 Linux 内核启动完毕后 就开始执行根文件系统中的 init 程序
init 程序会读取启动脚本文件
init.rc
init.*.rc
下面是我安卓中的 init 文件:
-rwxr-x--- 1 root root 1.4M 1970-01-01 08:00 init
-rwxr-x--- 1 root root 1.1K 1970-01-01 08:00 init.environ.rc
-rwxr-x--- 1 root root 29K 1970-01-01 08:00 init.rc
-rwxr-x--- 1 root root 15K 1970-01-01 08:00 init.recovery.amlogic.rc
-rwxr-x--- 1 root root 7.5K 1970-01-01 08:00 init.usb.configfs.rc
-rwxr-x--- 1 root root 5.5K 1970-01-01 08:00 init.usb.rc
-rwxr-x--- 1 root root 511 1970-01-01 08:00 init.zygote32.rc
Android 内核挂载到
/nfsroot/androidfs
之后根据
init.rc
init.goldfish.rc
来初始化并装载系统库和相应程序等 直到开机完成
init.rc 脚本包括了文件系统初始化、装载的许多过程
init.rc 的工作主要是:
设置一些环境变量
创建 system、sdcard、data、cache 等目录
把一些文件系统 mount 到一些目录去
设置一些文件的用户群组、权限
设置一些线程参数
设置 TCP 缓存大小
启动脚本文件的格式大家可以在网上找到很多参考资料 这里就不列出了
根文件系统中有一个重要的配置文件
cmcc_jiangsu:/ # ls default.prop -alh
lrwxrwxrwx 1 root root 23 1970-01-01 08:00 default.prop -> system/etc/prop.default
cmcc_jiangsu:/ #
该文件的内容如下:
cmcc_jiangsu:/ # cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.build.version.release=9
ro.actionable_compatible_property.enabled=true
ro.secure=0
security.perf_harden=1
ro.allow.mock.location=0
ro.debuggable=1
tombstoned.max_tombstone_count=50
dalvik.vm.image-dex2oat-Xms=64m
dalvik.vm.image-dex2oat-Xmx=64m
dalvik.vm.dex2oat-Xms=64m
dalvik.vm.dex2oat-Xmx=512m
dalvik.vm.usejit=true
dalvik.vm.usejitprofiles=true
dalvik.vm.dexopt.secondary=true
dalvik.vm.appimageformat=lz4
pm.dexopt.first-boot=quicken
pm.dexopt.boot=verify
pm.dexopt.install=speed-profile
pm.dexopt.bg-dexopt=speed-profile
pm.dexopt.ab-ota=speed-profile
pm.dexopt.inactive=verify
pm.dexopt.shared=speed
dalvik.vm.dex2oat-minidebuginfo=true
debug.atrace.tags.enableflags=0
#
# BOOTIMAGE_BUILD_PROPERTIES
#
ro.bootimage.build.date=/* ... ... */
ro.bootimage.build.date.utc=/* ... ... */
ro.bootimage.build.fingerprint=/* ... ... */
persist.sys.usb.config=none
cmcc_jiangsu:/ #
文件中的每一行对某个属性赋值
需要注意的两个属性:
ro.secure
ro.debuggable
如果
ro.secure=0
允许我们运行 adbroot 命令
通常大家说的内核 ROOT 指的就是 ro.secure=0
ROOT 权限只是手机上有一个名为授权管理的程序 Superuser.apk 可以授予程序 root 用户的权限
如果
ro.debuggable=1
允许调试系统 APP
init 程序读取启动脚本 执行脚本中指定的动作和命令
脚本中的一部分是运行 system 分区的程序:
system 的 bin 目录下存放的都是可执行程序
其中有一个重要的可执行文件叫 app_process 一般称之为 Zygote
Zygote 是卵的意思 所有的 Android 进程都是由她生出来的
Zygote 首先会加载 dalvik 虚拟机 然后产生一个叫做 system_server 的进程
system_server 顾名思义被称作 Android的 系统服务程序
system_server 主要管理整个 android 系统
示例:
cmcc_jiangsu:/ # ls /system
app etc lib priv-app vendor
bin fake-libs lost+found product xbin
build.prop fonts media recovery-from-boot.p
compatibility_matrix.xml framework preinstall usr
cmcc_jiangsu:/ # ls /system -alh
total 2.2M
drwxr-xr-x 15 root root 4.0K 1970-01-01 08:00 .
drwxr-xr-x 23 root root 0 2015-01-01 08:00 ..
drwxr-xr-x 17 root root 4.0K 2022-06-26 11:03 app
drwxr-xr-x 3 root shell 8.0K 2022-06-26 11:03 bin
-rw------- 1 root root 14K 2022-06-26 10:21 build.prop
-rw-r--r-- 1 root root 87K 2022-06-26 10:21 compatibility_matrix.xml
drwxr-xr-x 14 root root 4.0K 2022-06-26 11:03 etc
drwxr-xr-x 2 root root 4.0K 2022-06-26 11:03 fake-libs
drwxr-xr-x 2 root root 12K 2022-06-26 11:03 fonts
drwxr-xr-x 4 root root 4.0K 2022-06-26 11:03 framework
drwxr-xr-x 8 root root 16K 2022-06-28 15:29 lib
drwx------ 2 root root 4.0K 1970-01-01 08:00 lost+found
drwxr-xr-x 3 root root 4.0K 2022-06-26 11:03 media
drwxr-xr-x 2 root root 4.0K 2022-07-10 17:17 preinstall
drwxr-xr-x 21 root root 4.0K 2022-06-26 11:03 priv-app
lrw-r--r-- 1 root root 8 2022-06-26 10:22 product -> /product
-rw-r--r-- 1 root root 4.4M 2022-06-26 10:22 recovery-from-boot.p
drwxr-xr-x 8 root root 4.0K 2022-06-26 11:03 usr
lrw-r--r-- 1 root root 7 2022-06-26 10:22 vendor -> /vendor
drwxr-xr-x 2 root shell 4.0K 2022-06-26 11:03 xbin
cmcc_jiangsu:/ # ls /system/bin/app* -alh
lrwxr-xr-x 1 root shell 13 2022-06-26 10:21 /system/bin/app_process -> app_process32
-rwxr-xr-x 1 root shell 28K 2022-06-26 10:21 /system/bin/app_process32
-rwxr-xr-x 1 root shell 71K 2022-06-26 10:21 /system/bin/applypatch
-rwxr-xr-x 1 root shell 33 2022-06-26 10:21 /system/bin/appops
-rwxr-xr-x 1 root shell 232 2022-06-26 10:21 /system/bin/appwidget
cmcc_jiangsu:/ # ps -A | grep system_server
system 3612 2600 1426196 195968 SyS_epoll_wait 0 S system_server
cmcc_jiangsu:/ #
system_server 启动完成后开始寻找一个叫做启动器的程序
找到之后由 zygote 开始启动执行启动器 这就是我们常见到的桌面程序!
至此我们总算弄明白了从电源键到桌面程序经历了什么!
##################################################
——————————
除了内核是放在 boot 分区之外 其她层的代码都是在 system 分区之中的
Boot 分区
Linux Kernel/Linux 内核
例如 WiFi、Audio 等驱动
System 分区
Library/动态链接库文件
例如各种 .so 文件
Android Runtime/安卓运行时环境
例如核心 lib 库
例如 Dalvik 虚拟机
Application Framework/应用框架
例如窗口管理
再例如程序安装包管理
Application/应用程序
例如 Home、Phone、Browser 等等
——————————
了解 system 分区必看的 Android 软件系统架构:
核心应用层
框架层
JNI 层
Dalvik 虚拟机层
本地库层
HAL 硬件抽象层
厂家适配层
Linux 内核
核心应用层:
这一层就是大家平常所接触的各种各样的系统自带应用
比如联系人
电话
音乐
等
应用层往下就是开发人员所接触的
框架层:
这一层是 Android 系统的核心
她提供了整个 Android 系统运作的机制
像窗口管理
程序安装包管理
还有开发人员所接触的
Activity
Service
broadcast
等等
JNI 层:
JNI 层是 Java 程序和底层操作系统通信的一个机制
她使得 Java 代码可以调用 C/C++ 代码来访问底层操作系统的 API
Dalvik 虚拟机:
Android 开发使用 Java 语言
应用程序的 Java 代码会被编译成 dalvik 虚拟机字节码
这些字节码由 dalvik 虚拟机解释执行
本地库:
本地库一般是由 C/C++ 语言所开发 直接编译成相应 CPU 的机器码
这其中包含标准 C 库 例如用以绘制图形的 skia 库
浏览器核心引擎 webkit
等
HAL 硬件抽象层:
为了和各个厂家的不同硬件工作 Android 定义了一套硬件接口
比如说为了使用相机 厂家的相机驱动必须提供的接口方法
这样使得上层的代码可以独立于不同的硬件运行
厂家适配层:
本来 Android 定义的 HAL 层是直接和厂家提供的设备驱动打交道的
但是目前厂家不想开源 HAL 部分的代码 因此很多厂家都提供了一个厂家适配层的代码
这样在 HAL 层接口的实现只是一个简单的对厂家适配层接口函数的调用
内核:
这一层就是大家熟悉的 Linux 内核
内核中包含有各种硬件驱动 这些驱动不同的手机厂商不同的手机是不一样的
Linux 内核是支持驱动模块化机制的
简单的说就是允许用户动态的加载或者卸载某个硬件驱动
但是目前来看手机厂商除了提供 WIFI 驱动单独加载外 其她驱动都是和内核绑定在一起的
Android 把对硬件的支持分成了两层
一层放在用户空间 User Space
一层放在内核空间 Kernel Space
其中硬件抽象层运行在用户空间 而 Linux 内核驱动程序运行在内核空间
为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?
从技术实现的角度来看 是可以的
然而从商业的角度来看 把对硬件的支持逻辑都放在内核空间 可能会损害厂家的利益
我们知道 Linux 内核源代码版权遵循 GNU License
而 Android 源代码版权遵循 Apache License
这两个许可证有些不同:
前者在发布产品时 必须公布源代码 而后者无须发布源代码
如果把对硬件支持的所有代码都放在 Linux 驱动层 那就意味着发布时要公开驱动程序的源代码
而公开源代码就意味着把硬件的相关参数和实现都公开了
在手机市场竞争激烈的今天 这对厂家来说 损害是非常大的
因此 Android 才会想到把对硬件的支持分成硬件抽象层和内核驱动层
内核驱动层只提供简单的访问硬件逻辑 例如读写硬件寄存器的通道
至于从硬件中读到了什么值或者写了什么值到硬件中的逻辑 都放在硬件抽象层中去了
这样就可以把商业秘密隐藏起来了
##################################################
——————————
%%%%%
我们常见的 shell 命令虽然都是放在 /system/bin 和 /system/xbin 目录下的
但是 bin 目录下存放的是一些可执行文件
基本上是由 C/C++ 编写的
cmcc_jiangsu:/ # ls /system/bin | wc -l
358
cmcc_jiangsu:/ # ls /system/bin
Android.mk insmod rgbtest
acpi install-recovery.sh rm
adbd installd rmdir
am ionice rmmod
amctcTest iorenice rtwpriv
app_process iotop run-as
app_process32 ip runcon
applypatch ip6tables schedtest
appops ip6tables-restore schedulecmd.sh
appwidget ip6tables-save screencap
arping ipd screencontrol
atrace iptables screenrecord
audioserver iptables-restore sdcard
awk iptables-save secdiscard
base64 iptvd secilc
basename iptvdc sed
bcc ipv6-android-script.sh sendevent
blank_screen iw sensorservice
blkid karaok_recorder seq
blockdev keystore service
bmgr keystore_cli_v2 servicemanager
bootanimation kill setenforce
bootplayer killall setprop
bootstat ld.mc setsid
bpfloader libpcapcmcc.so settings
bu linker sgdisk
bugreport linker_asan sh
bugreportz lmkd sha1sum
bunzip2 ln sha224sum
busybox_ft load_policy sha256sum
bzcat locksettings sha384sum
bzip2 log sha512sum
cal logcapture.sh sleep
cameraserver logcat sload_f2fs
cat logcatd sm
chcon logd sort
chgrp logname split
chmod logpersist.cat sqlite3
chown logpersist.start ss
chroot logpersist.stop start
chrt logwrapper startsoftdetector.sh
cksum losetup stat
clatd ls statsd
clear lshal stop
cmd lsmod storaged
cmp lsof strace
comm lspci strings
content lsusb stty
cp make_f2fs su
cpio md5sum surfaceflinger
crash_dump32 mdnsd svc
csrctctest media swapoff
ctctest mediadrmserver swapon
cut mediaextractor sync
dalvikvm mediametrics sysctl
dalvikvm32 mediaserver tac
date memory_replay32 tail
dd memtest tar
debuggerd microcom taskset
dex2oat mkdir tc
dex2oatd mke2fs tee
dexdiag mkfifo telecom
dexdump mkfs.exfat terminal_info_main
dexlist mkfs.ext2 terminal_write_test
dexoptanalyzer mkfs.ext3 thermalserviced
dexoptanalyzerd mkfs.ext4 time
df mknod timeout
diff mkntfs tinycap
dirname mkswap tinymix
dmesg mktemp tinyplay
dnsmasq modinfo tombstoned
dos2unix modprobe toolbox
dpm monkey top
drmserver more touch
du mount touchwifi.sh
dumpstate mountpoint toybox
dumpsys mtpd tr
e2fsck mv traced
e2fsdroid ndc traced_probes
echo netd tracepath
egrep netstat tracepath6
env newfs_msdos traceroute
execmd.sh nice traceroute6
expand nl true
expr nohup truncate
fallocate ntfs-3g tspacktest
false ntfsfix tty
fgrep oatdump tune2fs
file od tzdatacheck
find odhcp6c uiautomator
flock paste ulimit
fmt patch umount
free patchoat uname
fsck.exfat patchoatd uncrypt
fsck.f2fs perfetto unifiedctctest
fsck_msdos perfprofd uniq
gdbserver pgrep unix2dos
getenforce pidof uptime
getevent ping usbd
getprop ping6 usleep
grep pkill uudecode
groups pm uuencode
gunzip pmap vdc
gzip pngtest videomediaconvertortest
head pppd vmstat
hid printenv vold
hostname printf vold_prepare_subdirs
hw profman wait_for_keymaster
hwclock profmand wc
hwservicemanager ps which
id pwd whoami
idmap racoon wificond
ifconfig readlink wm
imageserver realpath xargs
ime reboot xiriservice_All
incident renice xxd
incident_helper requestsync yes
incidentd resize2fs zcat
inotifyd restorecon
input revertuserdata.sh
cmcc_jiangsu:/ # ls -alh /system/bin
total 15M
drwxr-xr-x 3 root shell 8.0K 2022-06-26 11:03 .
drwxr-xr-x 15 root root 4.0K 1970-01-01 08:00 ..
-rwxr-xr-x 1 root shell 727 2022-06-26 10:21 Android.mk
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 acpi -> toybox
-rwxr-xr-x 1 root shell 1.2M 2022-06-26 10:21 adbd
-rwxr-xr-x 1 root shell 207 2022-06-26 10:21 am
-rwxr-xr-x 1 root shell 20K 2022-06-26 10:21 amctcTest
lrwxr-xr-x 1 root shell 13 2022-06-26 10:21 app_process -> app_process32
-rwxr-xr-x 1 root shell 28K 2022-06-26 10:21 app_process32
-rwxr-xr-x 1 root shell 71K 2022-06-26 10:21 applypatch
-rwxr-xr-x 1 root shell 33 2022-06-26 10:21 appops
-rwxr-xr-x 1 root shell 232 2022-06-26 10:21 appwidget
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 arping
-rwxr-xr-x 1 root shell 57K 2022-06-26 10:21 atrace
-rwxr-xr-x 1 root shell 36K 2022-06-26 10:21 audioserver
-rwxr-xr-x 1 root shell 124K 2022-06-26 10:21 awk
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 base64 -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 basename -> toybox
-rwxr-xr-x 1 root shell 41K 2022-06-26 10:21 bcc
-rwxr-xr-x 1 root shell 20K 2022-06-26 10:21 blank_screen
-rwxr-xr-x 1 root shell 20K 2022-06-26 10:21 blkid
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 blockdev -> toybox
-rwxr-xr-x 1 root shell 216 2022-06-26 10:21 bmgr
-rwxr-xr-x 1 root shell 32K 2022-06-26 10:21 bootanimation
-rwxr-xr-x 1 root shell 6.5M 2022-06-26 10:21 bootplayer
-r-xr-x--- 1 system log 61K 2022-06-26 10:21 bootstat
-rwxr-xr-x 1 root shell 29K 2022-06-26 10:21 bpfloader
-rwxr-xr-x 1 root shell 173 2022-06-26 10:21 bu
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 bugreport
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 bugreportz
lrwxr-xr-x 1 root shell 5 2022-06-26 10:21 bunzip2 -> bzip2
-rwxr-xr-x 1 root shell 743K 2022-06-26 10:21 busybox_ft
lrwxr-xr-x 1 root shell 5 2022-06-26 10:21 bzcat -> bzip2
-rwxr-xr-x 1 root shell 39K 2022-06-26 10:21 bzip2
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 cal -> toybox
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 cameraserver
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 cat -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 chcon -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 chgrp -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 chmod -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 chown -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 chroot -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 chrt -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 cksum -> toybox
-rwxr-xr-x 1 root shell 51K 2022-06-26 10:21 clatd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 clear -> toybox
-rwxr-xr-x 1 root shell 45K 2022-06-26 10:21 cmd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 cmp -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 comm -> toybox
-rwxr-xr-x 1 root shell 224 2022-06-26 10:21 content
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 cp -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 cpio -> toybox
-rwxr-xr-x 1 root shell 104K 2022-06-26 10:21 crash_dump32
-rwxr-xr-x 1 root shell 55K 2022-06-26 10:21 csrctctest
-rwxr-xr-x 1 root shell 50K 2022-06-26 10:21 ctctest
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 cut -> toybox
lrwxr-xr-x 1 root shell 10 2022-06-26 10:21 dalvikvm -> dalvikvm32
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 dalvikvm32
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 date -> toybox
lrwxr-xr-x 1 root shell 7 2022-06-26 10:21 dd -> toolbox
-rwxr-xr-x 1 root shell 20K 2022-06-26 10:21 debuggerd
-rwxr-xr-x 1 root shell 534K 2022-06-26 10:21 dex2oat
-rwxr-xr-x 1 root shell 790K 2022-06-26 10:21 dex2oatd
-rwxr-xr-x 1 root shell 32K 2022-06-26 10:21 dexdiag
-rwxr-xr-x 1 root shell 105K 2022-06-26 10:21 dexdump
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 dexlist
-rwxr-xr-x 1 root shell 28K 2022-06-26 10:21 dexoptanalyzer
-rwxr-xr-x 1 root shell 36K 2022-06-26 10:21 dexoptanalyzerd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 df -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 diff -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 dirname -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 dmesg -> toybox
-rwxr-xr-x 1 root shell 137K 2022-06-26 10:21 dnsmasq
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 dos2unix -> toybox
-rwxr-xr-x 1 root shell 173 2022-06-26 10:21 dpm
-rwxr-xr-x 1 root shell 68K 2022-06-26 10:21 drmserver
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 du -> toybox
-rwxr-xr-x 1 root shell 250K 2022-06-26 10:21 dumpstate
-rwxr-xr-x 1 root shell 41K 2022-06-26 10:21 dumpsys
-rwxr-xr-x 1 root shell 194K 2022-06-26 10:21 e2fsck
-rwxr-xr-x 1 root shell 28K 2022-06-26 10:21 e2fsdroid
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 echo -> toybox
lrwxr-xr-x 1 root shell 4 2022-06-26 10:21 egrep -> grep
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 env -> toybox
-rwxr-xr-x 1 root shell 1.6K 2022-06-26 10:21 execmd.sh
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 expand -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 expr -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 fallocate -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 false -> toybox
lrwxr-xr-x 1 root shell 4 2022-06-26 10:21 fgrep -> grep
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 file -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 find -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 flock -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 fmt -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 free -> toybox
-rwxr-xr-x 1 root shell 41K 2022-06-26 10:21 fsck.exfat
-rwxr-xr-x 1 root shell 107K 2022-06-26 10:21 fsck.f2fs
-rwxr-xr-x 1 root shell 36K 2022-06-26 10:21 fsck_msdos
-rwxr-xr-x 1 root shell 583K 2022-06-26 10:21 gdbserver
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 getenforce -> toybox
lrwxr-xr-x 1 root shell 7 2022-06-26 10:21 getevent -> toolbox
lrwxr-xr-x 1 root shell 7 2022-06-26 10:21 getprop -> toolbox
-rwxr-xr-x 1 root shell 33K 2022-06-26 10:21 grep
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 groups -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 gunzip -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 gzip -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 head -> toybox
-rwxr-xr-x 1 root shell 213 2022-06-26 10:21 hid
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 hostname -> toybox
drwxr-xr-x 2 root shell 4.0K 2022-06-26 11:03 hw
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 hwclock -> toybox
-rwxr-xr-x 1 root shell 71K 2022-06-26 10:21 hwservicemanager
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 id -> toybox
-rwxr-xr-x 1 root shell 36K 2022-06-26 10:21 idmap
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 ifconfig -> toybox
-rwxr-xr-x 1 root shell 346K 2022-06-26 10:21 imageserver
-rwxr-xr-x 1 root shell 48 2022-06-26 10:21 ime
-rwxr-xr-x 1 root shell 28K 2022-06-26 10:21 incident
-rwxr-xr-x 1 root shell 138K 2022-06-26 10:21 incident_helper
-rwxr-xr-x 1 root shell 128K 2022-06-26 10:21 incidentd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 inotifyd -> toybox
-rwxr-xr-x 1 root shell 220 2022-06-26 10:21 input
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 insmod -> toybox
-rwxr-x--- 1 root root 822 2022-06-26 10:21 install-recovery.sh
-rwxr-xr-x 1 root shell 228K 2022-06-26 10:21 installd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 ionice -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 iorenice -> toybox
-rwxr-xr-x 1 root shell 49K 2022-06-26 10:21 iotop
-rwxr-xr-x 1 root shell 281K 2022-06-26 10:21 ip
-rwxr-xr-x 1 root shell 293K 2022-06-26 10:21 ip6tables
lrwxr-xr-x 1 root shell 9 2022-06-26 10:21 ip6tables-restore -> ip6tables
lrwxr-xr-x 1 root shell 9 2022-06-26 10:21 ip6tables-save -> ip6tables
-rwxr-xr-x 1 root shell 162 2022-06-26 10:21 ipd
-rwxr-xr-x 1 root shell 284K 2022-06-26 10:21 iptables
lrwxr-xr-x 1 root shell 8 2022-06-26 10:21 iptables-restore -> iptables
lrwxr-xr-x 1 root shell 8 2022-06-26 10:21 iptables-save -> iptables
-rwxr-xr-x 1 root shell 67K 2022-06-26 10:21 iptvd
-rwxr-xr-x 1 root shell 33K 2022-06-26 10:21 iptvdc
-rwxr-xr-x 1 root shell 7.7K 2022-06-26 10:21 ipv6-android-script.sh
-rwxr-xr-x 1 root shell 183K 2022-06-26 10:21 iw
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 karaok_recorder
-rwxr-xr-x 1 root shell 233K 2022-06-26 10:21 keystore
-rwxr-xr-x 1 root shell 65K 2022-06-26 10:21 keystore_cli_v2
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 kill -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 killall -> toybox
-rwxr-xr-x 1 root shell 505K 2022-06-26 10:21 ld.mc
-rwxr-xr-x 1 root shell 619K 2022-06-26 10:21 libpcapcmcc.so
-rwxr-xr-x 1 root shell 1.1M 2022-06-26 10:21 linker
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 linker_asan -> linker
-rwxr-xr-x 1 root shell 32K 2022-06-26 10:21 lmkd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 ln -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 load_policy -> toybox
-rwxr-xr-x 1 root shell 211 2022-06-26 10:21 locksettings
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 log -> toybox
-rwxr-xr-x 1 root shell 307 2022-06-26 10:21 logcapture.sh
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 logcat
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 logcatd
-r-xr-x--- 1 logd logd 129K 2022-06-26 10:21 logd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 logname -> toybox
lrwxr-xr-x 1 root shell 16 2022-06-26 10:21 logpersist.cat -> logpersist.start
-rwxr-xr-x 1 root shell 5.4K 2022-06-26 10:21 logpersist.start
lrwxr-xr-x 1 root shell 16 2022-06-26 10:21 logpersist.stop -> logpersist.start
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 logwrapper
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 losetup -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 ls -> toybox
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 lshal
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 lsmod -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 lsof -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 lspci -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 lsusb -> toybox
-rwxr-xr-x 1 root shell 49K 2022-06-26 10:21 make_f2fs
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 md5sum -> toybox
-rwxr-xr-x 1 root shell 769K 2022-06-26 10:21 mdnsd
-rwxr-xr-x 1 root shell 227 2022-06-26 10:21 media
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 mediadrmserver
-rwxr-xr-x 1 root shell 20K 2022-06-26 10:21 mediaextractor
-rwxr-xr-x 1 root shell 37K 2022-06-26 10:21 mediametrics
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 mediaserver
-rwxr-xr-x 1 root shell 25K 2022-06-26 10:21 memory_replay32
-rwxr-xr-x 1 root shell 38K 2022-06-26 10:21 memtest
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 microcom -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mkdir -> toybox
-rwxr-xr-x 1 root shell 72K 2022-06-26 10:21 mke2fs
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mkfifo -> toybox
-rwxr-xr-x 1 root shell 35K 2022-06-26 10:21 mkfs.exfat
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mkfs.ext2 -> mke2fs
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mkfs.ext3 -> mke2fs
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mkfs.ext4 -> mke2fs
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mknod -> toybox
-rwxr-xr-x 1 root shell 107K 2022-06-26 10:21 mkntfs
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mkswap -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mktemp -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 modinfo -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 modprobe -> toybox
-rwxr-xr-x 1 root shell 268 2022-06-26 10:21 monkey
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 more -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mount -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mountpoint -> toybox
-rwxr-xr-x 1 root shell 28K 2022-06-26 10:21 mtpd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 mv -> toybox
-rwxr-xr-x 1 root shell 20K 2022-06-26 10:21 ndc
-rwxr-xr-x 1 root shell 403K 2022-06-26 10:21 netd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 netstat -> toybox
lrwxr-xr-x 1 root shell 7 2022-06-26 10:21 newfs_msdos -> toolbox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 nice -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 nl -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 nohup -> toybox
-rwxr-xr-x 1 root shell 245K 2022-06-26 10:21 ntfs-3g
-rwxr-xr-x 1 root shell 152K 2022-06-26 10:21 ntfsfix
-rwxr-xr-x 1 root shell 201K 2022-06-26 10:21 oatdump
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 od -> toybox
-rwxr-xr-x 1 root shell 441K 2022-06-26 10:21 odhcp6c
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 paste -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 patch -> toybox
-rwxr-xr-x 1 root shell 61K 2022-06-26 10:21 patchoat
-rwxr-xr-x 1 root shell 104K 2022-06-26 10:21 patchoatd
-rwxr-xr-x 1 root shell 183K 2022-06-26 10:21 perfetto
-rwxr-xr-x 1 root shell 1.5M 2022-06-26 10:21 perfprofd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 pgrep -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 pidof -> toybox
-rwxr-xr-x 1 root shell 41K 2022-06-26 10:21 ping
-rwxr-xr-x 1 root shell 45K 2022-06-26 10:21 ping6
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 pkill -> toybox
-rwxr-xr-x 1 root shell 34 2022-06-26 10:21 pm
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 pmap -> toybox
-rwxr-xr-x 1 root shell 20K 2022-06-26 10:21 pngtest
-rwxr-xr-x 1 root shell 231K 2022-06-26 10:21 pppd
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 printenv -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 printf -> toybox
-rwxr-xr-x 1 root shell 82K 2022-06-26 10:21 profman
-rwxr-xr-x 1 root shell 91K 2022-06-26 10:21 profmand
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 ps -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 pwd -> toybox
-rwxr-xr-x 1 root shell 189K 2022-06-26 10:21 racoon
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 readlink -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 realpath -> toybox
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 reboot
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 renice -> toybox
-rwxr-xr-x 1 root shell 205 2022-06-26 10:21 requestsync
-rwxr-xr-x 1 root shell 56K 2022-06-26 10:21 resize2fs
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 restorecon -> toybox
-rwxr-xr-x 1 root shell 1.3K 2022-06-26 10:21 revertuserdata.sh
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 rgbtest
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 rm -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 rmdir -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 rmmod -> toybox
-rwxr-xr-x 1 root shell 1.6M 2022-06-26 10:21 rtwpriv
-rwxr-x--- 1 root shell 20K 2022-06-26 10:21 run-as
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 runcon -> toybox
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 schedtest
-rwxr-xr-x 1 root shell 1.0K 2022-06-26 10:21 schedulecmd.sh
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 screencap
-rwxr-xr-x 1 root shell 37K 2022-06-26 10:21 screencontrol
-rwxr-xr-x 1 root shell 110K 2022-06-26 10:21 screenrecord
-rwxr-xr-x 1 root shell 33K 2022-06-26 10:21 sdcard
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 secdiscard
-rwx------ 1 root root 230K 2022-06-26 10:21 secilc
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 sed -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 sendevent -> toybox
-rwxr-xr-x 1 root shell 16K 2022-06-26 10:21 sensorservice
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 seq -> toybox
-rwxr-xr-x 1 root shell 32K 2022-06-26 10:21 service
-rwxr-xr-x 1 root shell 24K 2022-06-26 10:21 servicemanager
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 setenforce -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 setprop -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 setsid -> toybox
-rwxr-xr-x 1 root shell 35 2022-06-26 10:21 settings
-rwxr-xr-x 1 root shell 118K 2022-06-26 10:21 sgdisk
-rwxr-xr-x 1 root shell 231K 2022-06-26 10:21 sh
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 sha1sum -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 sha224sum -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 sha256sum -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 sha384sum -> toybox
lrwxr-xr-x 1 root shell 6 2022-06-26 10:21 sha51
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!