当前位置: 首页>>技术教程>>正文


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

问题描述

我有一个独特的情况,我需要将 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

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

任何人?

最佳思路

如果你使用了 ext:

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

来自 man tune2fs

-U UUID

Set the universally unique identifier (UUID) of the filesystem to UUID. The format of the UUID is a series of hex digits separated by hyphens, like this: c1b9d5a2-f162-11cf-9ece-0020afc76f16. The UUID parameter may also be one of the following:

clear  clear the filesystem UUID
random generate a new randomly-generated UUID
time   generate a new time-based UUID

The UUID may be used by mount(8), fsck(8), and /etc/fstab(5) (and possibly others) by specifying UUID=uuid instead of a block special device name like /dev/hda1.

次佳思路

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

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

有一个需要禁用的标志,以允许 mounted-uuid 随新的 tune2fs 发生变化。这就是我的过程:

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:~#

第三种思路

对于 xfs,请参阅 man xfs_admin

xfs_admin -U {uuid} {device}

{uuid} 可以是 ‘generate’ 以获取新的 uuid。

对于 reiserfs,请参见 man tunefs.reiserfs

tunefs.reiserfs -i {uuid} {device}

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12013.html,未经允许,请勿转载。