这只是Windows的行为,Linux能识别多分区的U盘。
Windows驱动程序在挂载设备的时候会发一个SCSI命令去查询设备的状态,具体Windows的行为是什么不清楚(要看源码才知道),猜测发的是INQUIRY命令,返回的状态位里有RMB(Removable Media bit),如果是1,则忽略掉U盘里的分区表:
再次强调,这只是Windows的行为。网上有人自己修改过驱动,忽略这个bit,就可以把所有U盘的分区都认出来,在XP时代很流行,叫cfadisk.inf/sys,不过这个在Win7以后应该不太好用了。
如果自己能改控制器的信息,把RMB这一位改成0,U盘就变移动硬盘了,也就归到硬盘的分组里。Windows只认这个bit,而不关心实际上你用的设备是什么。