我遇到了一种特殊情况,我需要将 USB 闪存驱动器的 UUID 更改为以前的 UUID。我格式化了它,显然数字变了……
我已经设置了 ubuntu 服务器,它有 1TB 硬盘和 4GB 的 usb 闪存驱动器用于启动。硬盘上的 Grub 配置为 UUID,当我格式化 usb 驱动器并重新安装 ubuntu 服务器时,UUID 发生了变化。我没有外接显示器,所以我将 usb 连接到笔记本电脑并在那里安装服务器...然后我将其移动到服务器硬件上。
正如我提到的,我的问题是我需要 USB 才能返回到以前的 UUID,否则服务器将无法启动。而且我直到星期一才能获得外部显示器!:)
我知道我之后需要更改这些文件:
UUID 最为关键的文件:
/boot/grub/menu.lst
/etc/fstab
/etc/initramfs-tools/conf.d/resume
但是我在网上找不到有关自定义 UUID 的信息。
任何人?
答案1
如果你使用了 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
mount(8)、fsck(8) 和 /etc/fstab(5)(可能还有其他程序)可以通过指定 UUID=uuid 来使用 UUID,而不是像 /dev/hda1 这样的块特殊设备名。
答案2
我意识到这是一个老问题,但我发现有一个新的变化,这是谷歌为我发现的,所以我会在这里发布我找到的答案。
当我尝试在新的 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:~#
答案3
对于 xfs 请参阅man xfs_admin
xfs_admin -U {uuid} {device}
{uuid} 可以是“generate”,以获取一个新的 uuid。
对于 reiserfs 请参阅man tunefs.reiserfs
tunefs.reiserfs -i {uuid} {device}
对于 btrfs 来说,uuid 似乎在整个文件系统中都使用,因此每个节点都必须更新。目前还没有安全的方法可以做到这一点。
答案4
提示一下:在我的 20.04 系统上,blkid 在运行后继续报告旧的 UUID:
sudo tune2fs -U "sudo tune2fs -U "4fa4fa92-8b6a-4597-8481-d0897bdf86fe" /dev/sdb1
blkid /dev/sdb1 仅在使用 GParted 检查分区后才报告新的 UUID。在此之前,blkid 始终报告旧的 UUDI。当然,重新启动也会有所帮助。