V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
baskice
V2EX  ›  问与答

windows10 克隆系统后怎么重做 uefi 引导?

  •  
  •   baskice · 2016-07-30 03:44:51 +08:00 · 21568 次点击
    这是一个创建于 3074 天前的主题,其中的信息可能已经有所发展或是发生改变。
    系统装在小硬盘里,现在需要格式化掉做其他用途。

    把系统用 分区助手 从小硬盘克隆到大硬盘的一个分区。结果没法从大硬盘启动进入系统

    dell 的 bios 里只有小硬盘的 Windows boot manger ,请问要怎么改才能完全从大硬盘引导启动大硬盘?
    13 条回复    2016-07-30 22:46:06 +08:00
    xupefei
        1
    xupefei  
       2016-07-30 03:57:08 +08:00
    正常来讲 .efi 所在的 FAT32 分区会被 BIOS 识别到,无需任何操作。
    你确定当初克隆那个 100MB 的 FAT32 EFI System Partition 了么?
    acess
        2
    acess  
       2016-07-30 05:06:13 +08:00   ❤️ 2
    有三个地方要注意:主板 NVRAM , ESP 分区里的 BCD 文件,还有注册表 MountedDevices 键(应该类似 Linux 下的 fstab 吧)

    在 WinPE ( Windows 安装程序也算, SHIFT+F10 可以调出命令提示符)环境里可以进行操作。

    NVRAM 里的启动项可以用 BOOTICE (作者博客: http://www.ipauly.com/)这个小工具管理,也可以参考微软的指南来清空 NVRAM 里的启动项,同时导入新的启动项,操作相对比较复杂:
    https://technet.microsoft.com/en-us/library/cc749510(v=ws.10).aspx

    ESP 分区里的 BCD 文件用 bcdboot 命令可以重建。可以先在 diskpart 里给 ESP 分区分配盘符(比如分配到 S 盘),然后使用这个命令重建 BCD ,并拷贝其他引导文件:
    bcdboot E:\Windows /s S: /f UEFI /l zh-CN
    这里 E 盘是 WinPE 里看到的,安装了 Windows 的分区,请根据现场状况自行调整。

    注册表的 MountedDevices 键可以用一个小脚本 osletter7.cmd 来处理。
    osletter7.cmd /currentos:E /targetletter:C
    这里 E 盘是 WinPE 里看到的,安装了 Windows 的分区,请根据现场状况自行调整。/targetletter:C 中的盘符 C 表示目标 Windows 启动后使用的盘符,也就是以前“正常开机”后看到的启动卷盘符。
    acess
        3
    acess  
       2016-07-30 05:13:53 +08:00
    UEFI 启动时,主板先根据 NVRAM 里的启动项顺序执行了 Windows Boot Manager , Windows Boot Manager 再根据 BCD 文件里的配置列出启动菜单( Win7 默认行为),或者继续启动 Windows ,进入 Metro 风格的图形界面启动菜单( Win8 以上默认行为)

    bcdboot 命令有一个 /d 参数,加上它就可以保留 BCD 文件里原来就存在的数据。如果你想让 Windows Boot Manager 同时列出多个可以启动的系统,可以使用 /d 参数。

    另外,注意一下,使用 bcdboot 命令(使用 /f ALL 或 /f UEFI 参数时)不仅会修改 BCD 文件,同时也会修改主板 NVRAM 里的启动项(添加 /更新 Windows Boot Manager 这一项)。
    acess
        4
    acess  
       2016-07-30 05:26:48 +08:00   ❤️ 1
    有很重要的一点忘了说了, UEFI 引导规范是需要一个 FAT32 分区做 ESP 分区的。既然你想彻底撇清小硬盘的关系,让系统只从大硬盘上引导,那么大硬盘上必须有一个 FAT32 的 ESP 分区。
    用 diskpart 就可以很方便地创建 ESP 分区,选择磁盘后,这个命令就可以创建一个 128MB 的 ESP 分区:
    create partition efi size=128
    创建完成后格式化为 FAT32 、分配盘符,然后再用 bcdboot 命令设置引导即可。
    msg7086
        5
    msg7086  
       2016-07-30 09:56:43 +08:00
    换个工具。我这里克隆分区完了直接启动一点问题都没。
    虚拟机里就直接两块硬盘从头 dd 完了删掉旧硬盘就行。
    wwqgtxx
        6
    wwqgtxx  
       2016-07-30 10:09:15 +08:00 via Android
    @acess 不过实际上,很多主板也能读取 ntfs 的 efi 引导文件。但是,最好是建立一个 fat16 的 esp 分区引导才是最好的
    jasontse
        7
    jasontse  
       2016-07-30 11:57:34 +08:00 via iPad
    你的大硬盘里需要有 FAT 格式的 ESP 分区,系统会从 \efi\boot\bootx64.efi 开始引导
    yexm0
        8
    yexm0  
       2016-07-30 12:10:38 +08:00 via Android
    同意,我装 win10 时用的 u 盘就是 ntfs 格式的,主板一样能读取到里面的 efi 文件并引导系统。
    seashell
        9
    seashell  
       2016-07-30 12:16:03 +08:00
    创建新的 ESP 分区,删除旧的 ESP 分区,为新 ESP 分区分配卷标令其可见,使用 BCDBOOT 命令写引导,
    例如 bcdboot c:\windows
    pimin
        10
    pimin  
       2016-07-30 12:53:17 +08:00 via Android
    给你推荐个软件, easyuefi
    找个绿色版在 pe 下运行也可以
    baskice
        11
    baskice  
    OP
       2016-07-30 21:26:48 +08:00
    谢谢大家回复,我终于弄明白 UEFI 会有个小引导表直接存在芯片里,指向名为 ESP 的大概几百 MB 的硬盘头部分区,里面的 bcd 文件再写明 windows 路径就可以了。

    但是发现 ssd 的全盘硬件加密兼容 bitlocker 要开启设定后,安全擦除,再完全重装系统才行,克隆的不行。所以最后还是完全重装了 orz
    lslqtz
        12
    lslqtz  
       2016-07-30 22:45:34 +08:00
    @acess 我用 FAT16...
    lslqtz
        13
    lslqtz  
       2016-07-30 22:46:06 +08:00
    用原版 pe 引导, bcdboot 完事。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2210 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:38 · PVG 09:38 · LAX 17:38 · JFK 20:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.