我正在尝试创建 Windows XP 映像,并使用 Partimage 将其克隆到同一硬盘上的多个分区。当我将映像还原到另一个分区时,我似乎遇到了问题 - 当我从刚刚还原的分区启动操作系统时,它会在启动过程中显示此消息:autochk program not found - skipping autocheck
,然后操作系统重新启动 PC,整个过程无限循环重复。
经过谷歌搜索,有人认为这个循环是由于分区被隐藏或挂载管理器文件丢失。我检查了我的配置并确认情况并非如此。
我是在想:
- 还有其他人遇到过这种情况吗?有解决办法吗?
- 当您尝试将映像恢复到同一硬盘上的不同分区时会发生这种情况吗?还是 Partimage 本身存在问题?
- 我是否应该尝试不同的分区克隆软件?
答案1
NTFS 分区具有BIOS 参数块在其开始处,一个字段(偏移量 0x1C 处的 DWORD,“隐藏扇区的数量”)表示它在磁盘上的位置。
如果您想从该分区启动,则必须 (a) 在硬盘中完全相同的扇区处恢复该分区,或者 (b) 修补该字段(以 Little-Endian 样式写入数字)。
例如,要说明分区加载在扇区 63(XP 中的默认设置),请使用:
echo 63 | gawk '{printf("%c%c%c%c",$1,rshift($1,8),rshift($1,16),rshift($1,24))}' | dd bs=1 count=4 seek=28 of=/dev/sda1
/dev/sda1
有问题的分区在哪里。
您可以使用fdisk
查看当前分区:
# fdisk -l /dev/sda
...
Device Boot Start End Blocks Id System
/dev/sda1 * 321300 192089204 95883952+ 7 HPFS/NTFS/exFAT
/dev/sda2 192089210 408998834 108454812+ 7 HPFS/NTFS/exFAT
/dev/sda3 409001982 625141759 108069889 5 Extended
/dev/sda4 63 321299 160618+ 83 Linux
...
# dd bs=1 count=4 skip=28 if=/dev/sda1 | hd
...
00000000 14 e7 04 00
...
在此示例中,我的 NTFS 分区 /dev/sda1(带有 Win Vista)位于扇区 321300(0x0004e714)。