我有一个运行在 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
在这种情况下)。
我替换sda
为sdc
in 文件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