如何将磁盘的 UUID 更改为我想要的任何内容?

32 filesystem

我有一个独特的情况,我需要将 USB 闪存驱动器的 UUID 更改为以前的 UUID。我格式化了它,显然数字改变了......

我已经使用 1TB 硬盘和 4GB USB 闪存驱动器设置了 ubuntu 服务器。硬盘上的 Grub 配置为 UUID,当我格式化 USB 驱动器并重新安装 ubuntu 服务器时,该 UUID 发生了变化。我没有外接显示器,所以我将 USB 连接到笔记本电脑并在那里安装服务器......而不是将它移动到服务器硬件。

正如我提到的,我的问题是我需要 USB 才能回到以前的 UUID,否则服务器将无法启动。而且我直到星期一才能获得外接显示器!:)

我知道我之后需要更改这些文件:

UUID 最关键的文件:

/boot/grub/menu.lst

/etc/fstab

/etc/initramfs-tools/conf.d/resume
Run Code Online (Sandbox Code Playgroud)

但是我在网上找不到关于自定义 UUID 的任何信息。

任何人?

Rin*_*ind 40

如果你使用了 ext:

tune2fs /dev/{device} -U {uuid}
Run Code Online (Sandbox Code Playgroud)

man tune2fs

-U UUID

将文件系统的通用唯一标识符 (UUID) 设置为 UUID。UUID 的格式是一系列由连字符分隔的十六进制数字,如下所示: c1b9d5a2-f162-11cf-9ece-0020afc76f16. UUID 参数也可以是以下之一:

clear  clear the filesystem UUID
random generate a new randomly-generated UUID
time   generate a new time-based UUID
Run Code Online (Sandbox Code Playgroud)

通过指定 UUID=uuid 而不是像 /dev/hda1 这样的块特殊设备名称,UUID 可以被 mount(8)、fsck(8) 和 /etc/fstab(5)(可能还有其他人)使用。


kvm*_*420 13

我意识到这是一个老问题,但我发现有一个新的变化,这就是谷歌为我窥探的,所以我会发布我在这里找到的答案。

当我试图在新的 14.04 ubuntu 上更改我的根文件系统的 uuid(以众所周知的开头和序列号后缀)时,我发现 tune2fs 报告给我的恐惧:我不能对挂载的文件系统这样做。我依赖于能够使用具有众所周知的 uuid 的模板图像,并将每个安装更改为序列化的 uuid。我发现问题并非不可逾越。

有一个需要禁用的标志,以允许使用新的 tune2fs 更改 mount-uuid。这就是我的过程:

root@ubuntu1404:~# blkid
/dev/sda1: UUID="2ec827b0-72be-4c73-b58a-102a37aa24a3" TYPE="ext4"
root@ubuntu1404:~# uuid="deafcafe-abba-daba-deca-fc0ffee05065"
root@ubuntu1404:~# root_disk=$(df /|grep /|cut -d' ' -f1)
root@ubuntu1404:~# echo $root_disk
/dev/sda1
root@ubuntu1404:~# tune2fs -U $uuid $root_disk
tune2fs 1.42.9 (4-Feb-2014)
The UUID may only be changed when the filesystem is unmounted.
root@ubuntu1404:~# tune2fs -O ^uninit_bg $root_disk
tune2fs 1.42.9 (4-Feb-2014)
root@ubuntu1404:~# tune2fs -U $uuid $root_disk
tune2fs 1.42.9 (4-Feb-2014)
root@ubuntu1404:~# tune2fs -O +uninit_bg $root_disk
tune2fs 1.42.9 (4-Feb-2014)
root@ubuntu1404:~# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       7.3G  3.9G  3.0G  58% /
root@ubuntu1404:~# blkid
/dev/sda1: UUID="deafcafe-abba-daba-deca-fc0ffee05065" TYPE="ext4"
root@ubuntu1404:~#
Run Code Online (Sandbox Code Playgroud)


Syl*_*ter 6

对于 xfs,请参见 man xfs_admin

xfs_admin -U {uuid} {device}
Run Code Online (Sandbox Code Playgroud)

{uuid} 可以“生成”以获取新的 uuid。

对于 reiserfs,请参阅 man tunefs.reiserfs

tunefs.reiserfs -i {uuid} {device}
Run Code Online (Sandbox Code Playgroud)

对于 btrfs,似乎整个文件系统都使用了 uuid,因此每个节点都必须更新。目前还没有安全的方法来做到这一点。