按照将你的 Linux 安装移至新的固态硬盘 - 甚至更小的固态硬盘,我在点“9”之后就卡住了。我使用 tune2fs 将 sdb6(HDD 上运行的 ubuntu 的文件系统)的 UUID 复制到 sda1(SSD 中想要的新文件系统)。
当我尝试摆脱困境时......(我很快会发布有关它的帖子)在两个分区上具有相同的 UUID 时运行系统是否存在问题?
如果是这样,同时考虑到我不知道 sda1 分区的原始 UUID,是否可以只发明一个,例如通过更改 UUID 的一个字符?
系统信息 Ubuntu 16.04
$ fdisk -l
Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors
...
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 225282211 225280164 107.4G 83 Linux
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
...
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 318919887 318917840 152.1G 7 HPFS/NTFS/exFAT
/dev/sdb2 318920702 976771071 657850370 313.7G 5 Extended
/dev/sdb5 960151552 976771071 16619520 7.9G 82 Linux swap / Solaris
/dev/sdb6 318920704 960151551 641230848 305.8G 83 Linux
答案1
一些系统工具通过 UUID 编号引用分区。这在 中很常见/etc/fstab
,例如;分区通过其 UUID 编号而不是其他方式进行标识以进行挂载。因此,重复的 UUID 编号可能会导致混乱和不一致 —— 在一次启动时,可能挂载了一个分区;但在另一次挂载时,可能挂载了另一个分区。如果该分区上的文件发生更改(大多数分区都可能如此),这可能会造成问题。
您可以通过以下命令了解分区使用的 UUID blkid
:
$ sudo blkid /dev/sdc3
/dev/sdc3: UUID="5028fa50-0079-4c40-b240-abfaf28693ea" TYPE="ext4" PARTLABEL="Xubuntu /boot" PARTUUID="74ed9e82-2e96-4a12-89e0-e0563c296a08"
此示例显示其/dev/sdc3
UUID 为 5028fa50-0079-4c40-b240-abfaf28693ea。
您可以使用各种文件系统专用工具更改 UUID。对于 ext2/3/4fs,此工具称为tune2fs
,您可以向其-U
传递更改 UUID 的选项。但是,您将需要一个新的 UUID,您可以使用 工具生成它uuidgen
,您可以在调用 时调用它tune2fs
:
$ sudo tune2fs -U $(uuidgen) /dev/sdc3
/dev/sdc3
当然,您需要更改系统的设备 ID(在此示例中)。
如果您的分区使用除 ext2/3/4fs 之外的文件系统,则需要使用除 之外的工具tune2fs
,例如xfs_admin
用于 XFS 或btrfstune
Btrfs 的工具。
如果该分区被安装在 中/etc/fstab
,由文件中的 UUID 标识grub.cfg
,或以其他方式引用,则可能需要在进行更改后调整该配置文件。
答案2
如果您需要更改 NTFS 分区的 UUID,则情况会有所不同:
其实这方面有一个很好的解决方案Ubuntu 论坛主题。
对于 NTFS 分区,这是我执行的完整步骤列表(一切进展顺利,没有丢失任何数据):
始终保留您要编辑的分区的备份
blkid
检查分区的现有 uuid,仅供参考,这是我的输出,请记下 UUID 以供日后使用
/dev/sdd1: LABEL="EXT-HD-JS"
TYPE="ntfs"
UUID="983C4B493C4B221C"
PARTUUID="0021f320-01"
mount | grep "/dev/sdd1"
确保您的分区尚未安装!
现在我们安装一个十六进制编辑器,将512字节的超级块数据复制到你的用户主目录中,然后编辑该数据:
sudo apt install ncurses-hexedit
sudo dd if=/dev/sdd1 of=~/superblock1 bs=512 count=1
sudo hexeditor ~/superblock1
查看字节 0x48 至 0x4f:1C 22 4B 3C 49 4B 3C 98
这些字节的顺序与使用 blkid 显示的 UUID 相反
改变开始1D
(最小的改变总是更好)
使用 Ctrl+X 退出十六进制编辑器,输入 Enter 保存在同一文件下。
接下来我们用改变后的 UUID 复制回超级块数据,重新启动并再次检查 UUID:
sudo dd if=~/superblock1 of=/dev/sdd1 bs=512 count=1
sudo reboot now
blkid