关于Micro SD卡永久唯一标识符(UUID)及跨系统读取方法的技术问询
关于Micro SD卡永久唯一标识符(UUID)及跨系统读取方法的技术问询
嘿,这个需求太贴合实际了——我之前帮不少折腾树莓派的朋友解决过SD卡管理的麻烦,刚好能给你靠谱的方案!
核心问题:有没有永久不变的唯一标识符?
答案是有的,但不是你可能以为的分区UUID:
- 我们平时看到的分区UUID(比如Linux下ext4分区的UUID、Windows下的卷UUID)是格式化时生成的,刷写新ISO镜像会完全覆盖分区表和文件系统,这个ID肯定会变。
- 真正永久不变的是SD卡的硬件序列号(Serial Number)——这是出厂时烧录在卡的控制器芯片里的,和存储的内容完全无关,不管你怎么格式化、刷系统、擦写数据,它都不会改变,完全符合你的需求。
Windows下读取硬件序列号的方法
推荐用命令行工具,比图形界面更准确:
方法1:Diskpart(通用且直观)
- 按下Win+R,输入
diskpart回车(需要管理员权限) - 输入
list disk,找到你的SD卡(通过容量区分,千万别选错磁盘!) - 输入
select disk X(把X换成SD卡对应的磁盘号,比如select disk 2) - 输入
detail disk,在输出内容里找到Serial Number字段,这串字符就是你的SD卡永久唯一ID(格式一般是XXXX-XXXX或者纯数字)
方法2:PowerShell(更快捷)
打开管理员PowerShell,直接运行以下命令:
Get-Disk | Where-Object {$_.BusType -eq 'SD'} | Select-Object SerialNumber
它会自动过滤出SD卡并显示序列号,不用手动找磁盘号。
Linux下读取硬件序列号的方法
同样推荐命令行工具,不同发行版都通用:
方法1:lsblk(简单直观)
打开终端,运行:
lsblk -o NAME,SERIAL
输出会列出所有块设备的名称和序列号,找到对应SD卡的行(一般是/dev/mmcblk0,或者外接读卡器的/dev/sdb这类,通过容量区分),对应的SERIAL就是硬件ID。
方法2:udevadm(精准获取)
先确定你的SD卡设备路径(比如/dev/mmcblk0),然后运行:
udevadm info --query=property --name=/dev/mmcblk0 | grep ID_SERIAL
输出的ID_SERIAL字段就是永久不变的硬件序列号。
注意:别把
fdisk -l里的Disk identifier当成硬件ID——那个是分区表的UUID,会随分区表改变,不是我们要的永久标识符。
小提醒
极少数杂牌SD卡可能没有写入硬件序列号,但主流品牌(金士顿、闪迪、三星、东芝等)的卡都有这个标识,完全可以放心用它来做你的Excel表格索引。
备注:内容来源于stack exchange,提问作者Basj




