如何将磁盘的UUID更改为所需的值?


29

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

我已经使用1TB硬盘和4GB USB闪存驱动器安装了ubuntu服务器。在HDD上的Grub被配置为UUID,当我格式化USB驱动器并重新安装ubuntu服务器时,UUID发生了变化。我没有外部显示器,因此我将USB连接到便携式计算机并在其中安装服务器...而不是将其移至服务器硬件。

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

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

UUID最重要的文件:

/boot/grub/menu.lst

/etc/fstab

/etc/initramfs-tools/conf.d/resume

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

任何人?

Answers:


37

如果您使用ext:

tune2fs /dev/{device} -U {uuid}

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

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


可行!但是我找不到:/etc/initramfs-tools/conf.d/resume我发现/boot/grub/menu.lst已被转换为/boot/grub/grub.cfg

我的系统上有一个/etc/initramfs-tools/conf.d/resume。和的grub.cfg的确是新的menu.lst文件(我认为一个人来发挥作用的新GRUB2。
Rinzwind

无论我做什么,尝试设置自己的UUID时都会收到错误消息(tune2fs:无效的UUID格式)。事物有特定的顺序吗?
安德鲁(Andrew)

tun2fs无法在我的ZFS gpt磁盘上工作,该怎么办?
布赖恩·托马斯

寻找XFS的答案(xfs_admin),建议您寻找一个zfs_admin,但是zfs Solaris不是吗?您如何看待Ubuntu在这里可以提供帮助?
Rinzwind

14

我意识到这是一个老问题,但是我发现有一个新变化,而这正是google为我窥探的内容,因此我将在这里找到答案。

当我尝试在新的14.04 ubuntu上更改根文件系统的uuid(更改为众所周知的开头和序列号后缀)时,我发现恐怖的tune2fs报告回来:我无法对已挂载的文件系统执行此操作。我依靠能够使用带有众所周知的uuid的模板映像,并将每个安装更改为序列化的uuid。我发现问题并非无法解决。

需要禁用一个标志,以允许使用新的tune2fs更改已安装的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:~#

谢谢。将来可能会有所帮助,但我仍在使用12.04 :)

1
您可以使用root_disk=$(findmnt -n -o SOURCE /)管道代替grep和cut。
mivk

请勿这样做,否则将损坏文件系统。我删除了然后再添加回去uninit_bg,这会导致元数据损坏,并在下次启动时自动重新挂载只读(ext4_mb_generate_buddy:757: group 1, block bitmap and bg descriptor inconsistent: 3701 vs 3700 free clusters错误消息的类型)。原因是tune2fs直接修改磁盘,在内核的脚下,当内核开始更新bg元数据时,实际上有一半的时间破坏了元数据!底线:如果不正确卸载文件系统,则无法安全地更改fileysstem UUID。
埃里克

6

对于xfs,请参见 man xfs_admin

xfs_admin -U {uuid} {device}

{uuid}可以被“生成”以获得一个新的uuid。

对于reiserfs,请参阅 man tunefs.reiserfs

tunefs.reiserfs -i {uuid} {device}

对于btrfs,似乎整个文件系统都使用了uuid,因此必须更新每个节点。尚无安全的方法。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.