如何缩小、克隆整个 Linux 磁盘并启动它?

如何缩小、克隆整个 Linux 磁盘并启动它?

我有一个运行在 1024 GB 磁盘(A 盘)上的 Ubuntu 14.04,最多只使用了 130 GB 空间。我想将其克隆到 256 GB SSD 磁盘(磁盘 B)。但失败了。

gparted为了成功准备B盘,我曾经将A盘的分区缩小到只有180GB左右。

你能告诉我我错在哪里吗?

1)恢复分区表

我备份了A盘的分区表。

└──╼ $ sudo sfdisk -d /dev/sda
# partition table of /dev/sda
unit: sectors

/dev/sda1 : start=     2048, size=   997376, Id=83, bootable
/dev/sda2 : start=   999424, size= 15624192, Id=82
/dev/sda3 : start= 16623616, size=337020928, Id=83
/dev/sda4 : start=        0, size=        0, Id= 0

尖端

/dev/sda1对于/boot/dev/sda2对于swap/dev/sda3对于/

保存分区表

sudo sfdisk -d /dev/sda > partition.table

然后我尝试将分区表恢复到B盘(/dev/sdc在这种情况下)。

我替换sdasdcin 文件partition.table.然后它看起来像:

# partition table of /dev/sdc
unit: sectors

/dev/sdc1 : start=     2048, size=   997376, Id=83, bootable
/dev/sdc2 : start=   999424, size= 15624192, Id=82
/dev/sdc3 : start= 16623616, size=337020928, Id=83
/dev/sdc4 : start=        0, size=        0, Id= 0

然后就恢复成功了。

sudo sfdisk /dev/sdc < partition.table

2)迁移磁盘分区内容

sudo dd if=/dev/sda1 of=/dev/sdc1

sudo dd if=/dev/sda2 of=/dev/sdc2

sudo dd if=/dev/sda3 of=/dev/sdc3

迁移后,可以挂载并查看/dev/sdc 上的那些分区。

失败

但是,如果我将 SSD 磁盘(磁盘 B)插入我的笔记本电脑,在出现一些 Thinkpad BIOS 输出后,笔记本电脑将无法启动。没有出现错误,但光标闪烁...

/boot我敢打赌,BIOS在启动时甚至没有检测到磁盘 B。

你能帮助我吗?非常感谢!


更新

有人建议我用它来做grub-install /dev/sdc这个伎俩。

我搜索了grub-install有能力的——关联让我尝试。我很确定磁盘 A(已安装 MBR)。


更新

完成后dd if=/dev/sda of=/dev/sdc bs=512 count=1,只插入B盘,光标还是一样闪烁。 BIOS之后就没什么了。

完成后grub-install --boot-directory=/mnt/mypartition/boot /dev/sdc我去启动它,只有B盘。

但是grub控制台出来了。并报道了

在此输入图像描述


更新

现在它正在工作!

我是这样做的,在 PC 上运行磁盘 A 作为操作系统,磁盘 B ( /dev/sdc) 作为 USB 硬盘驱动器。

sudo mount /dev/sdc3 /mnt
sudo mount /dev/sdc1 /mnt/boot

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

然后去了/mnt/boot/grub/grub.cfg,我确实替换了文件中的2个东西grub.cfg。 (记得给该文件写权限grub.cfg

hd1用。。。来代替hd0

/dev/sdc3用。。。来代替/dev/sda3

然后保存文件。 -> 关闭计算机电源 -> 通过 SATA 插入 B 盘并永久取出 A 盘。 -> 启动 -> 看到 grub 错误但仍然启动

如果您遇到错误Error: invalid environment block. Press any key to continue,请检查此问题以解决它。按任意键将启动您的系统。https://askubuntu.com/questions/191852/error-invalid-environment-block-press-any-key-to- continue

sudo -i

然后,逐一运行每个命令。

cd /boot/grub
rm grubenv
grub-editenv grubenv create
grub-editenv grubenv set default=0
grub-editenv grubenv list
update-grub

现在重启一下,就可以了!

这就是我缩小我的 1024GB 磁盘硬盘并将整个系统迁移到新的 256GB SSD 磁盘的方法。

答案1

我不熟悉sfdisk,但你可以完成同样的事情,分区表和 MBR 备份使用dd.

这是我的笔记,我不是作者......

备份 MBR

MBR 存储在磁盘的前 512 字节中。它由 3 部分组成:

  • 前 446 个字节包含引导加载程序。
  • 接下来的 64 字节包含分区表(4 个条目,每个条目 16 字节,每个主分区一个条目)。
  • 最后 2 个字节包含标识符

将 MBR 克隆为 mbr.img:

dd if=/dev/sdX of=/path/mbr_file.img bs=512 count=1

将分区克隆为 pX.img

dd if=/dev/sdX of=/path/pX.img bs=1024

将 MBR 恢复到新磁盘

dd if=/path/mbr_file.img of=/dev/sdY bs=512

将分区恢复到新磁盘

dd if=/path/pX.img of=/dev/sdX bs=1024

或者

您可以用来clonezilla制作操作系统的映像并将其恢复到已创建分区的磁盘上。

这样你可能需要在新磁盘上重新安装 grub

grub-install

grub-mkconfig

并在“新”操作系统中设置交换分区。

mkswap

swapon

相关内容