问题描述
我有一个独特的情况,我需要将 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,因此每个节点都必须更新。目前还没有安全的方法来做到这一点。