在虚拟机里用fastboot给Android设备安装系统,核心方案是:先把手机的USB设备直通给虚拟机,在虚拟机系统内配置好fastboot环境,然后就能像物理机一样执行刷机命令了,这项操作主要用于测试第三方ROM、救砖或批量部署,本文给出从环境搭建到命令执行的完整可落地步骤。
为什么要在虚拟机里折腾fastboot?
实体机装fastboot驱动和工具,有时会跟现有开发环境打架,尤其当你在macOS或Linux主机上工作,而刷机工具只提供Windows版本时,虚拟机几乎成了唯一解。
我自己踩过的坑:主机是Deepin系统,某厂商的刷机包只认Windows下的驱动,又是USB强制签名又是驱动版本校验,折腾半天不如直接开个Windows虚拟机干净利落。
虚拟机怎么用fastboot安装系统的准备工作
硬件和宿主系统要求
- 内存:虚拟机分配至少4GB,刷机过程偶尔会处理大镜像,内存太小容易卡死。
- USB接口:确认主板USB控制器是直通的,USB 3.0接口性能更好,刷大分区(比如super分区)时速度差异明显。
- 硬盘空间:虚拟机系统盘留足40GB空余,多个ROM包解压后体积不小。
虚拟机软件推荐
- VMware Workstation:USB直通机制最成熟,很少掉设备。
- VirtualBox:免费方案里USB直通也够用,就是有时要装扩展包。
- Hyper-V:不推荐,USB直通支持有限,fastboot设备识别率低。
核心步骤一:给虚拟机装好Android USB驱动
在虚拟机里安装驱动(以Windows虚拟机为例)
- 打开设备管理器,找到带黄色感叹号的”Android Device”或”Unknown device”。
- 右键选择”更新驱动程序” > “浏览我的电脑以查找驱动程序”。
- 指向你下载好的adb驱动目录(推荐使用Google官方USB驱动包),勾选”包括子文件夹”。
- 安装完成后,设备管理器里应出现”Android Composite ADB Interface”,表示驱动已识别。
过去我们常直接安装某手机助手驱动,但里面捆绑了后台服务和弹窗广告,现在行业共识是尽量用Minimal ADB and Fastboot工具包或Google Driver,干净且足够用。
常见问题:设备反复断开
如果手机插入后反复出现”咚-咚”的连接断开声,多数是USB线问题或前置面板供电不足。换一根短而粗的USB线,插主板后置接口,这个问题很大概率能解决。
核心步骤二:配置USB直通,让虚拟机独享手机设备
这是整个流程最关键的环节,物理机不能同时使用该USB设备,就像“门禁卡只有一张,给了别人你就进不去了”。
VMware Workstation的操作路径
- 手机连接主机,确认在主机端能识别设备。
- 打开”虚拟机” > “可移动设备”,找到你的手机设备名称。
- 点击”连接”,虚拟机怪癖的资料断开与主机的连接,并连接到虚拟机。
- 进入虚拟机系统,执行
adb devices验证。
如果设备列表显示为空,大概率是驱动没装对,回到第一步检查设备管理器中的状态。
VirtualBox的操作路径
- 安装VirtualBox扩展包(Oracle VM VirtualBox Extension Pack),这是开启USB 2.0/3.0支持的前提。
- 在虚拟机设置 > USB设备中,添加一条空过滤器,选中设备即可。
- 启动虚拟机再插入手机,弹窗提示是否捕获设备时选择“确定”。
小提示:设备插拔顺序很重要。 推荐先启动虚拟机,再插手机,在宿主机开机状态下直接插手机,偶尔会有USB控制器抢占的问题。
验证USB直通成功的标志
在虚拟机命令行里执行:
adb devices
成功状态下会显示设备的序列号,无“unauthorized”提示,随后执行:
fastboot devices
得到类似以下输出即表示fastboot模式已正常通信:
1234567890ABCDE fastboot
核心步骤三:准备fastboot工具和刷机包
工具下载与解压
- Windows平台:下载platform-tools,解压后放入
C:fastboot,并将该路径加到系统环境变量Path。 - Linux平台:终端执行
sudo apt install android-tools-fastboot(适用于Debian系),或用发行版对应的软件源安装。
刷机包来源
用fastboot刷系统,你需要:
- boot.img(内核)
- system.img
- vendor.img
- 有的机器还有dtbo.img、vbmeta.img
这些可以从你设备的官方工厂镜像包中解出,常见渠道是手机品牌官网的开发者页面、或第三方编译的LineageOS nightly包。
参考命令结构(避免误刷的思路)
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash vendor vendor.img
部分高通机型还需要先刷入vbmeta,并在刷完所有分区后执行:
fastboot disable-verity
fastboot reboot
核心步骤四:进入fastboot模式并执行刷机
让设备进入fastboot模式的常用方法
按键组合
大多数设备是”音量下+电源键”长按。不要长按超过10秒,否则可能直接进恢复模式或触发强制重启。
通过ADB命令
在系统内已开启USB调试的情况下:
adb reboot bootloader
这个方法最稳妥,不用猜按键。
刷机前的重要检查
在刷入任何镜像前,执行以下命令确认设备状态正常:
fastboot getvar all
重点看输出里的 product:、secure:、unlocked: 字段。
- unlocked: no,意味着你还需要先解锁bootloader。
- secure: yes,提示设备开启了校验,刷入非官方系统可能无法开机。
批量刷入分区镜像(以Windows为例)
将镜像文件放在platform-tools同目录下,按顺序执行:
fastboot flash boot boot.img
fastboot flash dtbo dtbo.img
fastboot flash vendor vendor.img
不建议跳过任何分区刷入。 比如部分设备跳过dtbo会导致屏幕不亮或触摸失灵。
刷完所有镜像后:
fastboot reboot
设备应进入正常系统,如果卡在第一屏或循环重启,通常是vbmeta未正确刷入或分区版本不匹配。
Linux虚拟机下fastboot的额外注意事项
很多同学用的是Linux虚拟机,因为在Linux下编译AOSP镜像后直接刷机更顺理成章。
- 给USB直通设备赋予读写权限,需要创建udev规则:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
测试时看到一个比较常见的报错 fastboot: error: cannot load 'system.img': Permission denied,通常就是权限没给够,加上这条规则就能解决。
- 部分新内核版本对fastboot依赖的usbfs有变更,遇到通信失败时,建议在宿主机查看
dmesg | grep usb定位问题。
刷机翻车后的恢复思路
变砖了别慌,能进bootloader就有救
只要还能进入fastboot模式,就远没到绝路。
- 确认电脑与手机的连接稳定,换一个USB口排除供电因素。
- 找到你设备对应的官方线刷工具(通常品牌官网有提供),重新执行一次全量刷机。
无法进入fastboot,只能求助售后
这种情况下,可能是底层引导分区损坏,普通玩家自行解决难度很大,送到品牌售后可能是最稳妥的选择即便我们有fastboot应急方案的保障,也不能百分百避免硬件层面的固件损坏。
用fastboot安装系统的风险提示
- 一定认准机型和版本,刷入不匹配的boot.img轻则无法开机,重则触发熔断机制。
- 解锁bootloader会清除所有数据,执行前记得备份内部存储。
- 刷机次数多了,部分品牌会降低系统更新推送的优先级,这是常态化现象,但与售后质保的关联在不同品牌政策下差异很大,实际操作前请自行确认。
常见问题速查(“fastboot刷机”直接卡住怎么办)
Q1:执行fastboot devices没反应?
驱动和线材是第一排查点,在设备管理器查看是否出现未知设备,最好用原生短数据线,避免使用USB HUB。
Q2:提示waiting for any device?
常见于驱动安装不完整或USB直通被抢占,先断开虚拟机连接,退回宿主机桌面确认设备能被宿主系统识别,再重新把设备直通给虚拟机。
Q3:fastboot刷入system.img时异常中断,后续开机一直重启?
重新进入fastboot,完整重刷各分区,不要只刷损坏的那一个,很多情况下,super或vbmeta分区校验失败会导致反复重启,把相关分区完整刷入一次即可恢复。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/638940.html





