因此,我设法使用 ntfsclone 将我的 Windows 7 数据从 /dev/sdb3 迁移到 /dev/sdc1 上的新分区。我设法调整卷大小以匹配新分区大小。我还使用 ms-sys 将 Windows 7 MBR 添加到 /dev/sdc。
Windows 无法启动。如果我仍启用 /dev/sdb3,Windows 可以启动,但最终目的是删除该分区。此外,在这种情况下,我的新驱动器仅被视为 D,而不是启动驱动器。我到处搜索……帮忙?
ntfsclone 命令是 ntfsclone -O /dev/sdc1 /dev/sdb3
答案1
我发现将 Windows 分区克隆到不同的磁盘经常会失败,有时是因为驱动器号更改了,有时是因为启动记录出错了等等。以下两个解决方案多次帮助了我,但它们也并非 100% 万无一失:
使用 Windows 7 启动盘的“修复”功能。它通常可以修复许多启动问题。使用这些说明。不幸的是,这种方法并不是 100% 有效。
替代方法:在 Windows 中(启动到旧分区),创建启动/系统分区的镜像作为您的新的分区。镜像同步完成后,断开镜像并保留新的仅限分区。此方法需要将磁盘转换为动态磁盘,如果您需要从 Linux 或其他非 Windows 操作系统访问这些磁盘,则可能会导致问题。
答案2
您可以在 Windows 旁边安装 Linux。它将占用大约 2 GB 的空间,并且 grub 将检测到 Windows 并显示在启动菜单中。您可以在 1 秒延迟后将其设为默认。作为额外的奖励,您将有备用系统在紧急情况下启动。我总是这样做。
答案3
Windows 会创建一个 100MB 的隐藏分区,在大多数情况下,它是启动所必需的。您是否也复制/恢复了它?
答案4
我没有成功ntfsclone
,但我成功了dd
。以下是我所做的,希望它有用。
旧驱动器为/dev/sda
640GB;新驱动器为 120GB 固态硬盘/dev/sdb/
。
我有 3 个分区,一个 15GB 恢复分区、一个 100MB 启动分区和系统(在 Windows 中安装在 C: 上)。
第一步是获取旧磁盘的所有起始/结束扇区:
root@sysresccd /root % gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Disk /dev/sda: 1250263728 sectors, 596.2 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 95A8B5D6-CA2E-4D48-A3EA-856883098142
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1250263694
Partitions will be aligned on 2048-sector boundaries
Total free space is 4717 sectors (2.3 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 31459327 15.0 GiB 2700 Windows RE
2 31459328 31664127 100.0 MiB 0700 Microsoft basic data
3 31664128 1250260991 581.1 GiB 0700 Microsoft basic data
然后我使用 fdisk 创建了相同的分区:
fdisk /dev/sdb
我使用上一个输出提供的扇区位置创建了三个分区gdisk
。
然后,我使用 将第二个分区标记为可启动cfdisk /dev/sdb
。
最后一步是使用复制数据dd
,因为该ntfsclone -O /dev/sdb1 /dev/sda1
方法不起作用:
dd if=/dev/sda1 of=sdb1 conv=notrunc
dd if=/dev/sda2 of=sdb2 conv=notrunc
dd if=/dev/sda3 of=sdb3 conv=notrunc
这值得放入screen
并获取 pid 来向其发送 USR1 信号以获取进展。
在我的设置中,最后一个分区缩小到 100GB,随后有大约 500GB 的可用空间(640GB 磁盘)。最后一个dd
命令以设备上没有剩余空间(120GB SSD)结束。
但是重启非常顺利,Windows 感觉很顺手。他甚至说找到了一个新硬件,找到了驱动程序并安装了它,这让我笑了。“Bingo,你需要重启才能让那个硬件正常工作!”
只是那个硬件是它启动的 SSD(旧 HDD 已从计算机中移除)。
请注意,所有这些内容主要摘自这篇博文:http://linuxtips.manki.in/2011/11/migrating-to-new-ssd-without-data-loss.html