Bra*_*ert 142 linux partition command-line-interface
我正在运行 Ubuntu,并想找出UUID
特定文件系统(不是分区)的 。我知道我可以e2label /dev/sda1
用来找出文件系统标签,但似乎没有类似的方法来找到UUID
.
Chr*_*ell 179
另一个可能可用并且对此也很有效的命令是“blkid”。它是 e2fsprogs 包的一部分。它的用法示例:
在 /dev/sda1 上查找数据:
topher@crucible:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
Run Code Online (Sandbox Code Playgroud)
显示所有分区的 UUID 数据:
topher@crucible:~$ sudo blkid
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
/dev/sdb: UUID="467c4aa9-963d-4467-8cd0-d58caaacaff4" TYPE="ext3"
Run Code Online (Sandbox Code Playgroud)
以更易于阅读的格式显示所有分区的 UUID 数据:(注意:在较新的版本中,blkid -L
具有不同的含义,blkid -o list
应改为使用)
topher@crucible:~$ sudo blkid -L
device fs_type label mount point UUID
-------------------------------------------------------------------------------
/dev/sda1 ext3 / 727cac18-044b-4504-87f1-a5aefa774bda
/dev/sdc ext3 /home 467c4aa9-963d-4467-8cd0-d58caaacaff4
Run Code Online (Sandbox Code Playgroud)
仅显示 /dev/sda1 的 UUID,不显示其他任何内容:
topher@crucible:~$ sudo blkid -s UUID -o value /dev/sda1
727cac18-044b-4504-87f1-a5aefa774bda
Run Code Online (Sandbox Code Playgroud)
Joh*_*ber 11
仅适用于 GPT 分区磁盘
在 GPT 格式的磁盘上,每个分区都分配了一个 GUID,它是 UUID 的一种形式,尽管可能不是原始发布者所指的。因此,这个答案可能对原始提问者的帮助不大。尽管如此,我相信有一个重要的区别需要注意。
在 GPT 格式的磁盘 /dev/sda 上获取分区 1 的 GUID,以及它的分区标签等:
sudo sgdisk -i 1 /dev/sda
Run Code Online (Sandbox Code Playgroud)
或全部:
ls -l /dev/disk/by-partuuid
Run Code Online (Sandbox Code Playgroud)
要使用位于某个分区上的文件系统的根目录进行引导,您可以使用以下 linux 内核参数语法:
root=PARTUUID=87654321-4321-4321-abcd-123456789012
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以仅指定 UUID 的开头——足以唯一。这个参数更原始,内核在启动过程的早期就可以理解。
这些之间在语义上存在差异:
磁盘保存分区,分区保存文件系统,文件系统保存目录和文件。对于某些设置和操作系统,有更多层。
GUID UUID 和关联的标签是指分区,而不是分区的内容。同一磁盘上的新分区或新磁盘上的分区将具有新的 GUID UUID。同一分区可以在某一天保存一个文件系统,而在另一天保存另一个文件系统。它仅适用于 GPT 格式的磁盘,而不适用于旧式分区磁盘。这里通常没有比指定root=/dev/sda1
or更实用的地方root=8:1
。
其他当前答案是指某个包含分区中文件系统的 UUID 。如果将文件系统作为一个整体复制到另一个分区或硬盘,则该值保持不变。此 UUID 可用于查找移动的文件系统。因此,这可能与大多数人更相关。Linux内核参数root=UUID=87654321-4321-4321-a567-123456789012
就是指这个。
我相信root=LABEL=
并且root=UUID=
是由早期用户空间实现的,前几天我在系统上看到的初始化代码将这些参数转换为 /dev/disk/by-uuid 和 /dev/disk/by-label(我相信链接是由 udev 在我系统上的用户空间)。
[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
在任何类型的文件系统上执行此操作的脚本清理方法是:
lsblk -no UUID <device-containing-FS>
Run Code Online (Sandbox Code Playgroud)
或者,给定挂载点(或其中的任何文件):
lsblk -no UUID $(df -P <file> | awk 'END{print $1}')
Run Code Online (Sandbox Code Playgroud)
输出是 UUID、整个 UUID,除了 UUID 什么都没有。
对 ext2/ext3/ext4 执行此操作的最简单方法是:
/sbin/tune2fs -l /dev/sda1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
277690 次 |
最近记录: |