blkid查不到uuid通常因分区未格式化或文件系统元数据被覆盖;需用file -s、lsblk -f等验证设备状态,确认是否缺少文件系统或被swap/lvm/加密工具覆盖。

blkid 查不到 UUID?先确认设备有没有文件系统
blkid 不是万能探测器,它只读取已格式化分区的元数据。如果 blkid /dev/sda1 没输出或只显示 PARTUUID 而没有 UUID,大概率是这个分区还没被 mkfs 过,或者被 mkswap、pvcreate、cryptsetup 等工具覆盖了文件系统头。
验证方法:
-
file -s /dev/sda1—— 若返回data或LVM2 physical volume,说明不是常规文件系统 -
lsblk -f—— 看 TYPE 列是否为空或为swap/LVM2_member -
sudo dumpe2fs -h /dev/sda1 2>/dev/null | grep UUID(仅 ext2/3/4)—— 可绕过 blkid 缓存直读超级块
为什么 blkid 显示的 UUID 和 /etc/fstab 里对不上?
常见于重装系统、克隆磁盘、或用 dd 复制分区后未更新 UUID。blkid 没错,错的是 fstab 里还留着旧设备的 UUID。
排查步骤:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 运行
sudo blkid -c /dev/null强制跳过缓存,获取当前真实值 - 对比
/etc/fstab中对应挂载点的UUID=...是否匹配输出结果 - 若不匹配,别急着改 fstab —— 先确认该 UUID 对应的设备是否真的挂载到了预期路径(
findmnt -U) - 注意:容器、chroot 或 initramfs 环境中,
/dev若未完整 bind-mount,blkid会漏设备
blkid -t TYPE=ext4 找不到设备?检查内核模块和设备状态
blkid 能识别类型,但前提是内核能解析该文件系统。比如 CentOS 7 默认不加载 btrfs 模块,blkid -t TYPE=btrfs 就会静默失败。
快速验证:
-
lsmod | grep xfs(查 xfs)、modprobe btrfs(手动加载) -
cat /proc/filesystems | grep -E "(ext|btrfs|xfs)"—— 看是否在支持列表里 - 设备被占用时(如已挂载、LVM PV 激活),
blkid仍可读 UUID,但-p(低级探测)可能报Device or resource busy - 虚拟机中偶尔需触发 udev:
sudo udevadm trigger --subsystem-match=block
用 by-uuid 链接验证 UUID 是否真实可用
/dev/disk/by-uuid/ 是内核通过 udev 动态生成的符号链接,比 blkid 更贴近“挂载时实际使用的标识”。如果这里没有对应 UUID 的链接,即使 blkid 显示了,fstab 也可能在启动时失败。
操作建议:
-
ls -l /dev/disk/by-uuid/—— 看目标 UUID 是否存在且指向正确设备(如../../sdb2) - 若缺失,可能是 udev 规则未生效,可尝试
sudo udevadm settle后重试 - 注意:PARTUUID(GPT 分区 ID)和 UUID(文件系统 ID)是两回事,
/dev/disk/by-partuuid/下的链接不能用于 fstab 的UUID=字段
wrong fs type 或 No such device。










