如何将 /sda3 复制到 /sda1?UUID 不能相似

如何将 /sda3 复制到 /sda1?UUID 不能相似

/dev/sda 是一个 400 GB 的驱动器。它的分区如下:/sda1 - Windows 启动分区 (100 MB);/sda2 Windows “C:\”(68 GB);/sda3 是 Linux 启动分区;/sda5 是 /home 分区;/sda6 是 linux-swap。

/sda1 和 /sda2 已被删除,并且 /sda2 扩展为 /sda1。

我想将 /sda3 克隆到 /sda1,并且让 12.04(精确的穿山甲)知道从 /sda1 启动而不是从 /sda3 启动。

如何编辑 /etc/fstab 和 GRUB2 以获得正确的(我不知道如何用文字表达这个想法)UUID?我知道使用 GParted 将 /sda3 “复制”到 /sda1 需要进行编辑,以使复制的分区具有与原始分区 (/sda3) 不匹配(或 UUID 编号相同)的 UUID。我还必须采取哪些其他步骤来避免混淆 GRUB2 和 fstab,以便它们和谐地工作,并且我不会损害硬盘上的操作系统/数据/其他内容?

接下来,我想将 /sda1 缩小到 25 GB(目前为 68 GB),并继续将 /sda1 作为启动项。然后我想使用缩小后的 /sda1 中的 43 GB,并将其添加到(即将)未使用的 /sda3,然后将 /sda5 扩展到扩展的 /sda3

我无法发布 gparted 的屏幕截图,因此这里使用 fdisk -l 代替:

mark@Lexington-19:~$ sudo fdisk -l
[sudo] password for mark: 

Disk /dev/sda: 400.1 GB, 400088457216 bytes
255 heads, 63 sectors/track, 48641 cylinders, total 781422768 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf3e1e104


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1            2048   143570943    71784448   83  Linux

/dev/sda3   *   143572905   174176729    15301912+  83  Linux

/dev/sda4       174176791   781417664   303620437    5  Extended

/dev/sda5       174176793   764420894   295122051   83  Linux

/dev/sda6       764420958   781417664     8498353+  82  Linux swap / Solaris

答案1

我认为最简单的方法是启动 Ubuntu 桌面 CD。然后您可以使用 gparted 复制粘贴您的分区。

gparted 的唯一技巧是您必须一次应用一步的更改。

删除 sda1 -> 应用更改 -> 复制 sda3 -> 粘贴 -> 应用更改。

分区

复制分区后,您还可以使用 gparted 创建新的 UUID

选择分区→新 UUID

将分区挂载到 /mnt

sudo mount /dev/sda1 /mnt

编辑 fstab,在根文件系统的条目下输入新的 UUID。

如果需要,使用 blkid 列出 UUID

blkid

gksu gedit /mnt/etc/fstab

重新安装/更新 grub

sudo grub-install --boot-directory=/mnt/boot /dev/sda

也可以看看:

答案2

您想将 Linux 分区从 3 移到 1 有什么特别的原因吗?您是想提高性能还是只是出于习惯?

简单的方法

  1. 从 Live CD 中缩小 Linux 分区
  2. 删除分区 sda1
  3. 将分区 sda2 移动到硬盘最开始处,将 sda3 移动到后面
  4. 扩展包含 sda5 和 sda6 的扩展分区

正确的方法

  1. 从 Live CD 中将 Linux 分区缩小到最小
  2. 将分区 sda2 和 sda3 尽可能移到末尾
  3. 调整 sda1 的大小并格式化
  4. 将所有内容从 sda3 复制到 sda1 rsync --progress -av,并在 sda1 上相应地修改 fstab
  5. 使用以下命令重新安装 grubgrub-install --boot-directory=/path/to/mounted/sda1 sda
  6. 删除分区 sda1
  7. 扩展包含 sda5 和 sda6 的扩展分区

优点:Linux 分区在物理上处于第一位(并且也是经过碎片整理的 Linux 分区)

缺点:需要重新安装引导加载程序

肮脏的方式

  1. 将分区 /dev/sda2(设备)转储dd到文件(如外部硬盘),记下分区的确切大小并将其和 sda1 一起删除
  2. 将 sda3 调整为所需大小并将其移动到硬盘的最开始位置
  3. 重新创建 Windows 分区并将转储写回分区(切换输入和输出文件/设备)
  4. 扩展包含 sda5 和 sda6 的扩展分区

优点:Linux 分区在物理上处于第一位,无需重新安装引导加载程序

缺点:sda3 仍然是 sda3,而曾经的 sda2 可能是 sda1,小心不要写入错误的分区dd,转储需要更多时间,因为它会复制所有内容(甚至不再存在的文件和文件片段)

推荐

走捷径。如果性能很重要,就买 SSD。(我知道这是最近最常用的短语,但值得付出努力。)

相关内容