当前位置: 首页 > news >正文

解决大于 4GB 的 Windows 10 镜像在 UEFI 模式下的安装问题

制作一个 Windows 安装 U 盘是很容易的,使用 UltraISO 这样的刻录工具量产一个 iso 镜像文件到 U 盘即可。然而随着 Windows 10 版本号的提升,镜像变得越来越大,终于 FAT32 文件系统不再能够容纳得下安装镜像文件 install.wim 了。

本文将介绍如何制作镜像文件大于 4GB 的 UEFI 启动的系统安装盘。


充分利用 Windows 8 和 Windows 10 中的特性——“快速启动”,我们必须使用 UEFI 模式启动操作系统;这就要求我们制作的 U 盘安装盘必须以 UEFI 模式启动;这就要求 U 盘文件系统必须是 FAT32 的;这就要求我们的系统镜像文件 install.wim 不大于 4GB。然而 Windows 10 1709 的镜像文件就是大于 4GB,于是悲剧诞生……

如果你熟悉如何制作 U 盘安装盘,那么可直接从第二步开始阅读;如果不了解,就直接开始吧!

第一步:下载 Windows 10 iso 镜像文件

微软一般不提供 Windows 10 的下载镜像,但 MSDN I Tell You 收集了几乎所有的 Windows 10 正式版本镜像文件,所以可以 前往 MSDN I Tell You 下载。

Windows 10 1709 镜像下载地址

第二步:使用镜像文件制作安装 U 盘

曾经我一直使用 UltraISO 来制作启动 U 盘,毕竟是老牌刻录软件。

UltraISO

无论刻录的时候选择了什么样的配置,刻录完之后 U 盘文件系统都会是 FAT32 格式。直到 Windows 10 的前一两个版本,install.wim 都没有超过 4GB,所以我一直以为微软会刻意避免让镜像文件超过 4GB;于是我依然使用它来制作安装盘。然而没有想到的是,当真的超过了 4GB 后,整个刻录过程居然没有报错(虽然事实上证明会安装失败)。

  • 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统?

可能因为 UltraISO 太老了,以至于都没有看到对大尺寸镜像文件的支持。于是,我招到了另一款——rufus:

推荐使用开源软件 rufus

  • rufus 官网
  • rufus 的 GitHub 仓库

官方对它的广告词是:

The Reliable USB Formatting Utility
靠谱的 U 盘格式化工具

启动后就只有一个设置界面:

设置界面

对我们至关重要的选项就是分区方案和目标系统类型(Partition scheme and target system type):

分区方案和目标系统类型

这意味着我们量产后的 U 盘将支持 UEFI 启动,同时支持 GPT 分区。这样,我们便能够以 UEFI 的方式启动 U 盘。

另一个选项是文件系统(File system):

文件系统

由于 Windows 10 的系统镜像大于 4GB,所以我们需要选择 NTFS(exFAT 也行,但此文件系统不太成熟)。

其他保持默认即可,或者按照我图中所选。记得点击此处选择要使用的镜像 iso 文件。

选择 iso 文件

点击“开始”后静待进度条结束,我们便得到了一个可以 UEFI 启动的 Windows 安装 U 盘。

观察 rufus 制作的 U 盘

这不是安装过程中必要的步骤,只是为了满足好奇心。

rufus 制作的安装盘

可以看到,rufus 实际做了这些事情:

  1. 将 U 盘所有内容清除,并转换成 GPT 格式(更多转换信息可阅读我的另一篇博客)。
  2. 将 U 盘分成两个区,一个 FAT,包含用于在 EFI 下加载 NTFS 文件系统所必须的组件;一个 NTFS,包含安装 Windows 所需的真正文件(4GB 的镜像不在话下)。

4GB 的 install.wim

第三步:重启电脑并选择 UEFI U 盘启动

在 Windows 系统中

按住 Shift,然后点击“重启”按钮,Windows 10 将会在重启后进入 RE 环境:

Shift + 重启

在 RE 环境中选择使用可移动存储设备启动即可使用 U 盘启动。

使用更传统的方案

当然,大部分主板都支持开机期间按下 F12 来临时选择启动设备。不过,如果在主板上开启了“快速启动”,那么很有可能根本就来不及按下 F12!这时可以采用上面的方案。

选择带 UEFI 前缀的 U 盘。

不管使用哪一种方案,启动后将看到此时启动的 U 盘会提示正在加载 NTFS EFI loader:

NTFS EFI loader

第四步:选择 GPT 分区的驱动器,并按套路安装 Windows

在安装界面中,我们需要确保选择的驱动器是 GPT 分区的,因为 UEFI 启动时不支持 MBR 分区表。

如果没有驱动器是 GPT 分区的,该怎么办?可以使用命令转换一个 MBR 分区的驱动器到 GPT 分区。参见 在 Windows 安装期间将 MBR 驱动器转换为 GPT 驱动器。

接下来,一路下一步并略加设置即可。


参考资料

  • Creating Windows 10 UEFI fat32 USB Stick from NTFS Windows 10 ISO not possible · Issue #589 · pbatard/rufus

相关文章:

  • 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统?
  • 不再为命名而苦恼!使用 MSTestEnhancer 单元测试扩展,写契约就够了
  • Windows 10 自带那么多图标,去哪里找呢?
  • 如何删除 Windows 10 系统生成的 WindowsApps 文件夹
  • 命令“xxx.exe xxx”已退出,代码为 n。这些错误是什么意思?
  • 将 async/await 异步代码转换为安全的不会死锁的同步代码
  • 屏幕上那个灰色带有数字的框是什么?看着好难受!
  • Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码
  • Roslyn 入门:使用 Visual Studio 的语法可视化窗格查看和了解代码的语法树
  • 利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误
  • 在编写异步方法时,使用 ConfigureAwait(false) 避免使用者死锁
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)
  • Roslyn 的确定性构建
  • 使用 MSBuild 响应文件 (rsp) 来指定 dotnet build 命令行编译时的大量参数
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • canvas 五子棋游戏
  • docker-consul
  • echarts花样作死的坑
  • java取消线程实例
  • MD5加密原理解析及OC版原理实现
  • Python_网络编程
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Swoft 源码剖析 - 代码自动更新机制
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 包装类对象
  • 给第三方使用接口的 URL 签名实现
  • 构造函数(constructor)与原型链(prototype)关系
  • 汉诺塔算法
  • 开源地图数据可视化库——mapnik
  • 聊聊flink的TableFactory
  • 面试总结JavaScript篇
  • 设计模式(12)迭代器模式(讲解+应用)
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (多级缓存)多级缓存
  • (二)c52学习之旅-简单了解单片机
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (七)理解angular中的module和injector,即依赖注入
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)基于IDEA的JAVA基础10
  • (转)jQuery 基础
  • .NET Core引入性能分析引导优化
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net 后台导出excel ,word
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)