USB Gadget 与 Mass Storage 协议 —— 手机为什么能当 U 盘
USB Gadget 子系统
Android 手机的底层是 Linux 内核。Linux 内核有一个叫 USB Gadget 的子系统,专门让设备充当 USB 外设时模拟各种设备功能。手机接到电脑上时,电脑以为接了一块 U 盘、一个网络适配器、一个音频设备——这些全是 Gadget 在起作用。
常见的 Gadget 功能:
- Mass Storage(U盘):把手机的存储空间模拟成普通 U 盘
- CD-ROM:把只读镜像模拟成光驱
- RNDIS/CDC-NCM(网卡):USB 网络共享
- MTP:文件传输协议,也就是平时插手机传文件用的模式
- ADB:调试桥
DriveDroid 正是利用了 Mass Storage 和 CD-ROM 这两种 Gadget 功能。
Mass Storage 协议
USB Mass Storage 协议定义了电脑如何通过 USB 接口读写外设上的块设备。当 DriveDroid 驱动内核切换到 Mass Storage Gadget 模式后:
- 手机把某个文件或分区暴露为一个块设备
- 内核通过 USB Mass Storage 协议把这个块设备呈现给 PC
- PC 上看到的就是一个真实的 USB 存储设备——跟插了一块 U 盘没区别
为什么能引导启动
PC 的 BIOS/UEFI 在启动时会枚举所有可启动设备,包括 USB 接口上的 Mass Storage 设备。只要 DriveDroid 模拟出来的 USB 设备里有合法的引导扇区(MBR 或 EFI System Partition),PC 就能从上面读引导程序,进而启动里面的操作系统。
这跟你插一块真正的启动 U 盘没有本质区别——区别只在于那块"U 盘"其实是手机里的一个镜像文件,由内核实时转换。
内核能力是前提
Gadget 功能是内核里编好的代码。有的手机内核把 Mass Storage 和 CD-ROM 功能都编进去了,有的只编了 Mass Storage,有的甚至两个都没有。这就是为什么 DriveDroid 安装后,有的手机能显示 CD-ROM 选项、有的不能——不是 app 功能差异,是手机内核能力差异。
自定义 ROM(LineageOS、Pixel Experience 等)通常会把两种 Gadget 都带上,所以刷了自定义 ROM 的手机用 DriveDroid 成功率更高。