我正在尝试使用以下方法找出我的 USB 分区的起始位置
lsblk -o name,label,partuuid
它给了我以下输出:
lsblk: unknown column: partuuid
我认为“partuuid”不是 Ubuntu 允许的命令。有什么办法可以找到此信息吗?
答案1
如果目标是通过“partuuid”(实际上是 GUID)来识别分区,您可以通过 GPT fdisk(gdisk
、sgdisk
或cgdisk
)获取分区唯一 GUID。如果您需要从脚本或单行命令中获取它,sgdisk
这是最好的选择。您可以这样做:
$ sudo sgdisk -i 2 /dev/sda | grep unique
Partition unique GUID: 4D72D277-2E94-4760-8B38-8A487615E2E3
-i 2
此示例从分区 2 (即/dev/sda
)获取分区的唯一 GUID(“partuuid” /dev/sda2
。此示例通过管道传输输出,grep
只是为了隔离相关的一行 - 此特定sgdisk
命令返回七行输出,其中包含有关分区的各种类型的信息。
要将 GUID 与已知值匹配,您需要循环遍历所有分区,对输出进行进一步处理。与查看 的内容相比/dev/disk/by-partuuid/
,这可能很尴尬,但根据更广泛的目标,它可能会有所帮助或必要。例如,如果您尝试收集有关分区(但不是该选项的输出包括分区的名称(以及它们所包含的文件系统),sgdisk
而不仅仅是分区的 GUID —— 正如我所说,该-i
选项有七行输出:
$ sudo sgdisk -i 2 /dev/sda
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: 4D72D277-2E94-4760-8B38-8A487615E2E3
First sector: 1128448 (at 551.0 MiB)
Last sector: 2664447 (at 1.3 GiB)
Partition size: 1536000 sectors (750.0 MiB)
Attribute flags: 0000000000000000
Partition name: 'Unused /boot'
如果您想显示所有摘要数据,甚至只是其中的三四行,那么使用它可能会sgdisk
比尝试从其他来源拼凑起来更好。
答案2
我找到 UUID 的方法是首先确定我想从哪个 USB 分区启动,我通过输入
lsblk
它给了我一个开发树,概述了 SDB1、SDB2 和 SDB3。我知道我想从 SDB2 启动,因为这是根文件系统。
我编写了一个小脚本,将 /dev/sdb 作为变量传递。
#!/bin/sh
sudo dd if=/dev/$1 bs=4 skip=110 count=1 | hexdump
它给了我错误的字节序格式的 PARTUUID,所以我只是把它换了一下。所以 SDB2 的 UUID 是 xxxxxxxx-02
答案3
PARTUUID 在 Ubuntu 14.04 下不起作用
根据 OP 问题下的评论,Ubuntu 14.04 不支持该PARTUUID
标志。
PARTUUID 在 Ubuntu 16.04 下运行,显示你的 USB 驱动器
正如您所见,PARTUUID
它可以在我的 Ubuntu 16.04 上正常工作,显示 USB 拇指驱动器/闪存驱动器的 UUID:
$ lsblk -o NAME,FSTYPE,LABEL,PARTUUID,MOUNTPOINT,SIZE,MODEL
NAME FSTYPE LABEL PARTUUID MOUNTPOINT SIZE MODEL
sdb 7.6G USB Flash Disk
└─sdb1 vfat LIVE_USB bb958812-01 /media/ric 7.6G
sda 931.5G HGST HTS721010A9
├─sda4 ntfs WINRETOOLS c8cd5c7e-48fc-4aac-8c57-abcf6819b3ce 450M
├─sda2 0e4d96d3-5164-4d2f-9786-5e7b5066034e 128M
├─sda5 ntfs Image b929ccc6-7ceb-4c50-a14c-8e41bf9d401f 11.4G
├─sda3 ntfs HGST_Win10 8778bdd3-e557-4f16-8fd6-9d44dcfe0c0a /mnt/d 919G
└─sda1 vfat ESP edde67a5-6d32-425b-8e4e-6343b3e3f6f1 500M
nvme0n1 477G Samsung SSD 960 PRO
├─nvme0n1p5 ext4 NVMe_Ubuntu_16.0 f1f35cf5-1b79-4d43-84e3-9b10ea3f9e3c / 44.6G
├─nvme0n1p3 6471dce0-3ba5-49b9-bd13-667ad8f72b10 16M
├─nvme0n1p1 ntfs f5872f63-c0c7-4136-b65d-b89becdfc138 450M
├─nvme0n1p6 swap Linux Swap 4aeb7d53-7ad5-41b2-99f3-cae583bca6b7 [SWAP] 7.9G
├─nvme0n1p4 ntfs NVMe_Win10 f354f364-9819-4209-955a-297505eebfd0 /mnt/c 414.9G
├─nvme0n1p2 vfat 5a989e57-3bb3-4821-907f-5822bb14a635 /boot/efi 99M
└─nvme0n1p7 ntfs Shared_WSL+Linux 1ca41115-5e65-4ade-8825-b9a2807ae51c /mnt/e 9G
答案4
仅查看 UUID和PARTUUID 您可以使用ls
:
ls -l /dev/disk/by-partuuid/
查看所有分区的 partuuidls -l /dev/disk/by-partuuid/
查看所有分区的 uuid
UUID 的正确标签只是 uuid,因此在命令中将“partuuid”替换为“uuid”。
lsblk -o name,label,uuid
您可能sudo
还需要读取 UUID。
但实际上,如果你尝试找出我的 USB 分区的起始位置您可能想要使用其他东西,例如fdisk
或cfdisk
或parted
或可能是最好的gparted
。