Linux修改UUID
一、修改整机机器 UUID
软件层面,最常用,克隆 / 授权去重,克隆虚拟机必用
1、自动生成全新随机 UUID(推荐)
# 删除双ID文件
rm -f /etc/machine-id /var/lib/dbus/machine-id
# 生成新ID并同步两份
dbus-uuidgen --ensure=/etc/machine-id
dbus-uuidgen --ensure
# systemd同步生效
systemd-machine-id-setup
# 重启生效
reboot
2、手动指定自定义 UUID
# 先删除旧文件
rm -f /etc/machine-id /var/lib/dbus/machine-id
# 生成标准uuid
uuidgen
# 写入文件(纯32位无横杠)
echo "8f7e6d5c4b3a210987654321fedcba90" | tee /etc/machine-id
# 同步dbus
cp /etc/machine-id /var/lib/dbus/machine-id
# 重启生效
reboot
3、查看验证
hostnamectl | grep "Machine ID"
cat /etc/machine-id
cat /var/lib/dbus/machine-id
二、修改磁盘 / 分区文件系统 UUID
前置警告
- 系统根分区(/)不能在线修改,必须进 PE / 安装 U 盘离线操作;
- 修改前必须卸载分区,否则损坏文件系统;
- 修改后务必更新
/etc/fstab,否则开机无法挂载。
1. 查看所有磁盘 UUID
blkid
lsblk -f
2. 不同文件系统修改命令
Ext2/3/4(最常用)
# 1. 卸载分区
umount /dev/sdb1
# 2. 校验文件系统
e2fsck -f /dev/sdb1
# 3. 随机生成新UUID
tune2fs -U random /dev/sdb1
# 或指定自定义UUID
tune2fs -U "自定义UUID" /dev/sdb1
# 4. 重新挂载
mount /dev/sdb1 /mnt
XFS
umount /dev/sdb1
xfs_admin -U generate /dev/sdb1
# xfs
xfs_admin -U "自定义UUID" /dev/sda1
Btrfs
umount /dev/sdb1
btrfstune -U $(uuidgen) /dev/sdb1
NTFS
ntfslabel --new-half-serial /dev/sdb1
3. 更新 fstab(关键,否则开机报错)
- 备份配置
cp /etc/fstab /etc/fstab.bak
- 编辑文件,替换旧 UUID 为 blkid 查到的新 UUID
vi /etc/fstab
- 测试挂载无报错
mount -a
4、PARTUUID(分区标识,GPT 磁盘)修改
分区 PARTUUID 和文件 UUID 是两个东西,用 gdisk 修改:
gdisk /dev/sdb
# 输入p查看分区
# 输入x进入专家模式
# 输入c修改分区GUID(PARTUUID)
# 输入w保存退出
常见场景说明
- 虚拟机克隆:只需要修改
/etc/machine-id,避免日志、授权冲突; - 硬盘拷贝 /dd 全盘复制:两块盘 UUID 重复,修改磁盘文件 UUID;
- 软件授权绑定机器码:修改 machine-id;
- 开机挂载失败:修改磁盘 UUID 后未同步 fstab。