[:zh]最近准备换系统硬盘,从原有的40G SSD换成120G的 SSD,虽说重装系统本身只需10分钟,但其后的软件安装等等可能会耗去半天的时间,得不偿失,于是打算把现有系统迁移到新硬盘上。
因为一直是UEFI启动,所以这件事变得简单起来。方案有很多种,先介绍一下我的操作过程。
1. 启动其他盘上的Linux系统,我的是Mint,用GParted把新硬盘分区,这里要注意,分区表选择GPT格式,分区一般按以下结构(全部为主分区):
/sda/sda1 300MB NTFS hidden,diag Windows恢复分区
/sda/sda2 100MB Fat32 boot EFI启动分区
/sda/sda3 128MB 无格式 msftres Windows保留分区
/sda/sda4 余下容量 NTFS msftdata Windows分区
2. 直接用Gparted复制粘贴旧硬盘的分区到新硬盘的对应分区上,Windows保留分区无法复制,基本也不用去理会,一般不会影响Windows本身
3. 拔掉旧硬盘,启动Windows 8的安装盘(UEFI模式,U盘光盘都可),进入修复计算机->高级选项->命令提示符
4. 用diskpart命令找到新硬盘的EFI分区(diskpart> list disk, select disk X, list partition, select partition X), 给它指定一个盘符(assign letter=S)
5. 退出diskpart,cd /d S:EFIMicrosoftBoot,这个目录中有先前硬盘中的启动菜单BCD,直接删掉它(可能是系统+只读+隐藏,需要attrib S:EFIMicrosoftBootBCD -h -r -s)
6. 执行 bcdboot C:Windows /l zh-CN /s S: /f ALL 恢复Windows的启动记录并更新UEFI启动项
7. 重启,一切OK。
总结起来步骤就是 分区、复制每个分区的文件、修复因磁盘Id变更而无法启动的启动菜单,其实不用Linux,只用Windows 8的安装盘就可以做到,但用Gparted更方便些而已。
接下来可能还需要添加其他启动项,修复恢复菜单之类,我还没有深究,待具体操作后再更新本文。[:]