总是可以通过以下方式将 Windows 安装 (NT/2000/XP/2003) 传输到新的启动介质:
- 重新创建分区表和 MBR
- 使用 ntfsclone 复制分区
- 棘手的部分:磁盘几何形状必须保持不变,并且 ntldr 所在的分区必须从与之前相同的 LBA 扇区开始
在 Windows (Vista/7/2008) 上是否仍可行?这样的程序可行吗?
- 复制分区表,带有磁盘签名(!)和 MBR
- 可能需要调整分区大小以适合硬盘
- Ntfsclone“系统保留分区”和“启动分区”。
- 在新旧硬盘上,一个或两个硬盘是否仍必须从同一扇区开始?
您能解释一下 bootmgr 和 bcd 的底层工作原理吗,与 grub 或 ntldr 不同?是否有第一阶段和第二阶段?它是否在某处保存了阻止列表?
更新:我原来的问题原来与硬件有关。问题已重新表述以解决更广泛的问题。
答案1
bootmgr 不知道“驱动器号”,这是 Windows 在启动过程后期所做的事情(并且在注册表中配置,与物理磁盘配置完全无关)。
微软不支持使用 Linux 克隆系统。简而言之,官方的答案是不要这样做。您应该使用 Windows PE。DISM 可以创建和应用 WIM 映像文件,这是 Microsoft 的首选格式(与 Windows 安装程序使用的格式相同)。
克隆机器通常如下:
- 设置参考机。运行
sysprep
。 启动 WinPE。用于
dism
捕获驱动器。类似于以下批处理文件:@ECHO OFF IF %1 == "" GOTO DIE: CHKDSK /X C: CHKDSK /X D: IF NOT ERRORLEVEL 0 GOTO DIE: DISM /Capture-Image /ImageFile:Z:\Path\To\Images\%1.wim /Name:Boot /CaptureDir:C:\ /Compress:fast DISM /Append-Image /ImageFile:Z:\Path\To\Images\%1.wim /Name:Windows /CaptureDir:D:\ :DIE
如果您的分区布局非标准,则可能需要修改。
将目标计算机启动到 WinPE。使用
diskpart
和dism
应用映像:diskpart
配置分区的标准脚本:SEL DISK 0 CLEAN CREATE PART PRI SIZE=350 ACT FORMAT QUICK ASSIGN LETTER=M CREATE PART PRI FORMAT QUICK ASSIGN LETTER=O EXIT
dism
写入图像的标准批处理文件:@ECHO OFF IF %1 == "" GOTO DIE: DISKPART /s Diskpart-Standard.script IF NOT ERRORLEVEL 0 GOTO DIE: DISM /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:M:\ DISM /Apply-Image /ImageFile:%1 /Index:2 /ApplyDir:O:\ IF NOT ERRORLEVEL 0 GOTO DIE: BCDEDIT -STORE M:\BOOT\BCD -set {bootmgr} device partition=M: BCDEDIT -STORE M:\BOOT\BCD -set {memdiag} device partition=M: BCDEDIT -STORE M:\BOOT\BCD -set {default} device partition=O: BCDEDIT -STORE M:\BOOT\BCD -set {default} osdevice partition=O: :DIE ECHO Script ended...
您的流程可能有效,但您可能缺少bcdedit
脚本的最后四行。
请注意,这不会配置 WinRE,但如果您有 WinPE,则不需要它。