4、基础命令实战(下):adb reboot、adb reboot bootloader、adb reboot recovery、adb root、adb remount

好,咱们接着聊。上一节我们把文件操作和安装卸载讲透了,这一节要聊的几个命令,说白了就是跟 Android 设备的「重启」和「权限」打交道。你别看它们简单,用不好可是会出大问题的。

我个人习惯把这几个命令分成两组:一组是「重启三兄弟」,另一组是「权限双雄」。咱们一个一个来。

4.1 重启三兄弟:reboot、reboot bootloader、reboot recovery

这三个命令都跟重启有关,但目的地完全不同。我刚开始学的时候也搞混过,有一次在客户现场,本来想进 recovery 清数据,结果手一抖进了 bootloader,场面一度很尴尬。

4.1.1 adb reboot —— 最普通的重启

这个最简单,就是让设备正常重启。相当于你长按电源键选择「重启」。

adb reboot

嗯,就一行,没别的参数。设备会正常关机,然后重新启动。我在项目中经常用它来验证开机自启动的服务或者检查系统更新后是否正常。

小技巧: 如果你想让设备重启后自动进入某个模式,可以用 adb reboot bootloaderadb reboot recovery,而不是先普通重启再手动操作。

4.1.2 adb reboot bootloader —— 进入引导加载模式

这个模式在开发者和刷机党眼里就是「救砖入口」。Bootloader 是设备启动的第一段代码,在这里你可以刷写系统镜像、解锁 BL、或者做底层调试。

adb reboot bootloader

执行后,设备会重启并进入一个黑底白字的界面,通常显示一些设备信息。不同厂商的界面不一样,但功能大同小异。

警告: 进入 bootloader 后,adb 命令就失效了!你需要用 fastboot 命令来操作。我曾经见过新手在 bootloader 里疯狂敲 adb 命令,然后跑来问我为什么没反应。

为什么会这样?因为 adb 依赖 Android 系统层的服务,而 bootloader 模式下系统还没启动,自然没法响应 adb。这时候要用 fastboot,比如:

fastboot devices
fastboot flash boot boot.img

4.1.3 adb reboot recovery —— 进入恢复模式

Recovery 模式是 Android 的「安全模式」加「急救箱」。你可以在这里做恢复出厂设置、刷入 OTA 包、或者挂载分区进行手动操作。

adb reboot recovery

设备重启后会进入 recovery 界面。原生的 recovery 功能很有限,但像 TWRP 这样的第三方 recovery 就强大得多,支持文件管理、终端、甚至备份整个系统。

重点: 如果你在 recovery 模式下想用 adb,需要 recovery 本身支持 adb 功能。TWRP 默认支持,但某些厂商的官方 recovery 可能禁用了它。

我曾经在调试一台平板时,系统卡在开机动画进不去。幸好 recovery 模式还能用,我通过 adb 在 recovery 下挂载了 data 分区,把关键的日志文件拉了出来,才定位到问题。

4.2 权限双雄:adb root 和 adb remount

这两个命令是「高级玩家」的入场券。没有它们,你只能看不能动。

4.2.1 adb root —— 获取 root 权限

默认情况下,adb 是以 shell 用户身份运行的,权限有限。很多系统文件你只能读不能写。这时候就需要 adb root 来提升权限。

adb root

执行后,adb 会重启守护进程(adbd),并以 root 身份运行。你可以用 adb shell 进去看看,提示符从 $ 变成了 #,这就是 root 的标志。

注意: 不是所有设备都支持 adb root!生产环境的手机(比如你手里的零售版)通常禁用了这个功能。只有工程机、开发板或者已经 root 的设备才能用。

我记得有一次,我在调试一台零售版的手机,想改系统文件,结果 adb root 返回了 adbd cannot run as root in production builds。嗯,这就是厂商的保护机制。解决办法?要么刷开发版系统,要么用 Magisk 等工具 root。

4.2.2 adb remount —— 重新挂载分区为可读写

有了 root 权限,你还需要让系统分区变成可写状态。默认情况下,/system 分区是只读的,防止你误操作搞坏系统。

adb remount

这个命令会把 /system/vendor 等关键分区重新挂载为可读写。这样你就可以直接 push 文件进去,比如替换系统应用、修改配置文件等。

使用顺序:adb root,再 adb remount。顺序错了会报错。

实际项目中,我经常用这个组合来快速部署调试版本的系统服务:

adb root
adb remount
adb push my_service /system/bin/
adb shell chmod 755 /system/bin/my_service
adb reboot

这样一条龙下来,新的服务就部署好了。注意最后一定要重启,因为有些服务是在启动时加载的。

4.3 知识体系总览

下面这张图把这一节的核心逻辑串起来了,你一看就明白:

基础命令实战(下)核心逻辑 ADB 基础命令 重启三兄弟 adb reboot adb reboot bootloader adb reboot recovery 权限双雄 adb root adb remount 使用要点 • 重启三兄弟:普通重启 / 引导加载模式 / 恢复模式 • 权限双雄:先 root 提权,再 remount 挂载可写 • 注意:生产环境设备可能不支持 adb root

4.4 避坑指南

这几个命令虽然基础,但坑不少。我把自己踩过的坑总结一下:

  • 不要在生产环境随意 remount: 我曾经在客户演示时,为了改一个配置文件,顺手 adb remount 了。结果系统分区被写坏,设备变砖。还好有备份,不然就凉了。
  • bootloader 和 recovery 别搞混: 这两个模式长得有点像,但功能完全不同。Bootloader 是刷机用的,recovery 是恢复用的。搞混了轻则浪费时间,重则刷错包。
  • adb root 不是万能药: 有些设备即使 root 了,某些分区依然受保护(比如 /vendor)。这时候需要额外的操作,比如关闭 SELinux 或者使用特定的工具。
  • 重启后权限会丢失: adb rootadb remount 的效果只在当前会话有效。设备重启后,一切恢复原样。所以如果你要批量操作,最好写个脚本一次性搞定。
我的习惯: 每次操作前,先用 adb shell getprop ro.build.type 看看当前系统是 user 还是 userdebug 版本。如果是 user 版本,就别费劲试 adb root 了,直接换方案。

好了,这一节的内容就这些。这几个命令看着简单,但用好了能帮你省不少事。下一节咱们聊聊更高级的调试技巧,敬请期待。


公众号:蓝海资料掘金营,微信deep3321