为启动空前迅速的 PC 进行设计
尽管我们投入了大量心血来确保您可始终不用关闭 PC 并在连接的待机状态下运行 PC,但是我们知道您在有些情形中仍需重新启动 PC 来更新关键系统组件。此前,我们曾撰文向您介绍过重新构建 Windows 启动体验以及我们为核心启动加载程序和其他选项所进行的革新和提供的触控支持。我们也曾向您介绍 Windows 8 加快了启动速度。事实上,现在的启动速度已经快到了令人惊叹的程度,因此我们需要一同来研究其设计,以启用诊断启动,满足希望深究 BIOS 或以其他替代方式进行加载的用户的要求。
在本篇博文中,用户体验团队的项目经理 Chris Clark 将介绍可为您提供超乎想象的迅速启动体验的设计内容。
--Steven
Windows 8 中存在一个问题:其启动速度真的太快。
事实上,启动速度已经快到“任何操作”都无法中断启动过程的地步。当您开启 Windows 8 PC 时,您没有充足的时间来检测诸如 F2 或 F8 等按键和读取诸如“按 F2 进行安装”等消息。这将是您数十年来首次遇到这样的情形,您无法中断启动过程并告知 PC 进行任何操作,PC 只能按照预先设定的进程运行。
快速启动当然是我们希望保留的体验。而且没有人希望刻意减缓启动速度来像过去一样进行这些操作。我将在本篇博文中向您介绍我们如何借助数项全新的解决方案来解决这一“问题”,这些解决方案可让您的 PC 尽可能迅速地启动,同时又让您进行希望的所有操作。
速度过快,无法中断
您可抽空观看 Gabe Au 此前在 Windows 8 加快了启动速度博文中所发布的快速启动视频(如果您已经观看过,您也可再看一次)。在本视频中,您将看到包含固态驱动器 (SSD) 的便携式计算机只需不到 7 秒的时间即可完全启动。如此迅速的启动不需要任何特殊的硬件,这是全新 PC 中的一项功能。您还将看到现有硬件的启动获得了大幅改进,但是在很多 PC 中,BIOS 自身(您在启动过程中所见到的 BIOS 徽标和消息组)却需要花费大量时间。正如您所想象的,SSD 也将对快速启动提供大力帮助。
如果整个启动过程在短短 7 秒内完成,那么组成启动序列的各个部分将迅速消失,导致用户无法注意到这些内容(更不用说中断启动过程)。需要在启动过程中进行操作的大多数决定通常显示于前 2 至 3 秒,之后启动过程将尽可能迅速地进入 Windows。这 2 至 3 秒包含用于固件初始化和 POST(小于 2 秒)所需的时间,以及用于 Windows 启动管理器检测备用启动路径(某些系统中小于 200 毫秒)所需的时间。这些时间有望继续缩短,现在您甚至无法像过去一样有充足的时间来中断启动过程。
在 Windows 团队中,我们最先,可能也是最为痛苦地在自己进行 F8 按键行为后感受到了这一变化的影响。在此前几版 Windows(最早可追溯到 Windows 95)中,您可在启动一开始按下 F8 来访问高级启动选项菜单。您可再次找到诸如安全模式和“禁用驱动程序签名”等有用选项。我自己还清晰地记得在将我的首台 PC 从 Windows 3.1 升级到 Windows 95 时曾使用过这些选项。F8 让我迅速解决了升级问题,并让我正常开始使用 Windows 95。
然而,Windows 8 中硬件和软件的改进也缩短了 Windows 用于读取和响应 F8 按键的时间。我们拥有基于 SSD 的 UEFI 系统,其中“F8 窗口”将始终在不足 200 毫秒的时间内显示。无论您的手指有多快,您都无法可靠地捕获这一 200 毫秒的事件。因此用户将不断点击键盘。我记得在穿过走廊时曾听到用户为捕获 F8 窗口而疯狂地点击键盘的声音。我们曾进行过一个非正式的研究,结果发现顶尖的操作人员可在发挥最好时以每 250 毫秒按键一次的频率重复点击键盘。即使在这最佳情形中,捕获 200 毫秒的窗口仍得在很大程度上看运气的成分。即使您最终成功捕获这一短暂的窗口时间,您仍需花时间揉揉刚刚敲疼的手指,想想用户疯狂地敲击键盘的情形将有多么诙谐。
我们在 F8 按键中所见到的问题只是冰山一角,启动过程中您在其他希望按下的键中也将出现类似的问题。例如,在 Windows 8 开发人员预览版中,F8 键可启动全套修复、恢复和高级启动选项。不同的按键可启动以开发人员为中心的选项,例如启用调试或禁用驱动程序签名。而且大多数 PC 中存在其他按键,POST 过程中固件将使用这些按键,消息也将公布这些按键:“按 F2 进行安装”或“按 F12 启动网络”。现在 POST 将在系统显示这些指令前完成大部分操作。而且在许多情形中,用户无法使用键盘,直至 POST 后期,而此时固件将不会查看这些按键。某些设备甚至都不会进行尝试。
即便如此,每项按键都将起到重要作用,我们一直依赖于这些按键来在启动过程中为用户提供重要的中断功能。然而,现在过快的启动过程让用户无法再进行以上任何一项操作。
定义问题空间
我们从多个角度审视了这些问题,并采用了一个全局性的方法来解决这些问题。开发人员、测试人员和项目经理相互合作,检查了从内核中最深层次的部分到整体用户体验的各个方面。我们首先将其视为一个工程问题,识别出在启动过程中依赖于按键的情形和应用场景,并考虑在 Windows 8 中为各个应用场景逐一还原其功能的数十种方法。
以下是从该列表中精选的一些关键应用场景:
- 即便 Windows 可启动正常,您仍可能需要进行一些不同的操作,例如,您可能希望从诸如 USB 驱动器等备用设备中启动,进入固件的 BIOS 设置选项,或在独立分区上受保护的 Windows 恢复环境图像内运行工具。一般来说,这些应用场景在过去可在不涉及 Windows 的前提下完成,用户只需按下诸如 F2 或 F12 (或其他您不需要记忆的按键)等固件特定的键即可!
- 您可能需要在某些操作出错后进行故障处理,或希望在某项操作刚刚发生后进行撤销。Windows 拥有许多可协助这类情形的工具,例如让您刷新或重置 PC,使用系统还原返回还原点,或通过始终填充的命令提示符执行手动故障处理。在过去,用户将在启动开始按 F8,主要通过 Windows 启动管理器来访问这些故障处理选项。
- 启动过程中的某些错误情形很难被自动检测出来。例如,Windows 启动过程可能已经成功,但实际上稍后加载的组件中的错误将使用户无法使用 Windows。虽然这些情形并不常见,但是可能发生的一个示例是损坏的驱动程序安装将导致登录屏幕在加载时出现故障。在上一代硬件中,您可使用按键(例如 F8)来中断启动过程,并在系统加载故障组件前进入适当的修复选项。随着时间的推移,用户已经越来越难使用这种方式来中断启动过程,在 Windows 8 中,用户几乎无法中断启动过程。
- 我们需要在 Windows 内部和外部启用某些主要由开发人员使用的启动选项。此前,您可在启动开始时按下诸如 F8 等键来访问这些选项。这些以开发人员为中心的选项依旧十分重要,并包含了禁用驱动程序签名强制执行、关闭“早期启动反恶意软件”,以及其他选项。
我们所关注的一项关键设计原则是我们的解决方案将如何与 Windows 8 中的其他内容配合。我们相信相比各自的不同之处,这些启动选项的相同点更多,而且不应置于 Windows 内的不同位置。从相反的方向来看这一内容,所有用户都不需要了解 Windows 的构建方式,也不需要了解应前往何处进行某个特定的操作。从纯粹的意义上来说,我们希望它能“恰到好处”。
三个解决方案,一个体验
我们通过相互结合三个不同的解决方案,而最终解决了这些问题。它们共同创建出了一个统一的体验,并在不需要使用按键中断启动过程的前提下解决了多个应用场景:
- 我们将所有选项整合成一个单一的菜单,即启动选项菜单。该菜单包含所有的故障处理工具、面向 Windows 启动的以开发人员为中心的选项、用户访问固件 BIOS 设置的方法和启动诸如 USB 驱动器等备用设备的直接方法。
- 我们创建了可(在高度可靠和经验证的环境中)自动启用启动选项菜单的故障转移行为,每当系统出现问题阻止 PC 成功启动 Windows 时就将发生该故障转移行为。
- 最后,我们创建了数个直接方法来让用户轻松进入启动选项菜单,即使当时 Windows 或启动一切正常。这些菜单和选项并不是“以中断为导向”,而是以有意的方式被触发,而且该方式将更加易于成功完成。
所有这些解决方案都解决了核心问题的不同方面,而且它们将共同创建一个单一、统一的端到端体验。
面向各个启动选项的单一菜单
启动选项菜单背后的核心愿景是为能影响 Windows 8 PC 中启动行为的各个选项而创建一个单一的位置。此前的博文重新构建 Windows 启动体验曾详细探讨过该菜单中的某些部分。那篇博文内容十分详尽完整,并介绍了启动菜单内的基本改变,这些改变启用了触控交互、Windows 8 视觉对象和横跨组成启动的多个界面中的统一用户体验。以下是我的一个基于 UEFI 的 PC 的启动项目菜单的屏幕截图:
启动至备用设备(例如 USB 驱动器或网络)是此前需要通过按键中断启动过程最常见的应用场景之一。借助 Windows 8 基于 UEFI 的固件,现在我们可以使用软件来触发这一操作。在这些设备上,现在您可在启动选项菜单底部看见“使用设备”按钮,该按钮将直接为您提供这一功能。正如您可从上图中所见的,这一功能与其他启动选项并排。Windows 不再需要按键中断来从备用设备中启动(假定此时您可进入启动选项菜单自身,而无需在启动过程中按键操作。在一分钟内进行更多操作)。
在这同一菜单中,我们还添加了一些新功能,让您可(在支持该功能的 Windows 8 UEFI 硬件上)直接重新启动进入 UEFI 固件的 BIOS 设置。在上一代硬件中,进入 BIOS 设置的指令将在 POST 阶段出现诸如“按 F2 进行安装”的消息(这些消息出现于 PC 上的时间可能长于其他任何类型的 UI)。在推出 Winodws 8 之前,它们将持续发生于系统中,而在 Windows 8 中,它们将继续运行(这主要是由于这些设备需要花费数秒钟的时间进入 POST)。然而,Windows 8 基于 UEFI 的 PC 停留于 POST 中的时间不像此前那样够用户进行按键操作,因此这一基于 UEFI 的新功能可让该选项显示于启动选项菜单中。在查看了该菜单中的其他项目后,我们决定将重新启动 PC 进入 UEFI 固件 BIOS 设置的按钮置于“高级选项”组内的“故障处理”节点下:
有关较旧、非 UEFI 设备的快速提示:制作于 Windows 8 之前的较旧硬件将不会拥有这些由 UEFI 提供的新菜单功能(启动至固件设置和直接启动至设备)。这些设备上的固件将像过去一样从 POST 屏幕中(通过使用诸如“按 F2 进行安装”等消息)继续支持这一功能。由于这些旧式设备并未获得改进来在不足 2 秒的时间内将 Windows 8 PC 启用至 POST 阶段,因此用户仍可获得充足的时间进行类似的按键操作。
显示于所有 Windows 8 设备中的下一个项目 - UEFI 和非 UEFI 类似的内容。在下图中,您将看到我们所添加的“Windows 启动设置”。这一新添加的内容将以开发人员为中心的 Windows 启动选项的进入点带入了统一的启动选项菜单中,并让我们满足此前需要在启动过程中单独按键的应用场景的需求。所添加的内容包含诸如“禁用驱动程序签名”和“调试模式”等项目,以及安全模式和数个其他选项。接下来我们一同来详细看看这些选项的信息丰富的页面:
启动选项菜单将为所有可影响 Windows 8 PC 启动行为的选项而创建一个单一的位置。通过将这些选项汇集至一个单一位置,启动选项菜单将成为这些相关项目的一个熟悉、统一、高度可用的位置。诸如变更 Windows 启动设置、进入 UEFI 固件 BIOS 设置或启动 USB 驱动器等任务不再需要用户使用按键来中断启动过程(假定您可进入启动选项菜单)。因此让我们一同来看看您进入启动选项菜单的方式。
当系统出现问题时,(自动)进入启动选项菜单
在以下两种主要情况下,您需要在 Windows 8 PC 中进入启动选项菜单。第一类情形出现于系统出现某类错误,并需要进行修复操作来还原 PC 的全部功能时。第二类情形(我将在下一节中谈到)出现于一切正常,但您希望变更启动行为或固件配置的某些方面,或从非常用设备启动时。
在第一类情形中,系统已经出现了某些错误,并需要进行修复。此前的 PC 硬件模式需要您(或者您信任的其他人)来在启动过程中按下某一可能的按键,进行故障处理。例如,Windows 开发人员预览版中的选项分为 Shift+F8、F8 和诸如 F2 或 F12 固件独立的键(这些按键将根据 PC 不同而有所差异)。
每一个按键都代表了故障处理第一步骤,这些故障处理方式最终将修复您的 PC。将这些按键统一为一个单一的启动选项菜单将消除为许多可用选项使用多个按键的需求。而且我们更进一步,通过在无法成功完成 Windows 启动时自动加载启动选项菜单,甚至删除了这一剩余的按键。
在 Windows 8 中,这一自动故障转移行为将在系统发生阻碍您 PC 加载 Windows 时把您直接带入启动选项菜单。这甚至包括(Windows)出现启动成功,而 PC 实际无法使用的情形。主登录屏幕将完全空白就是一个例子,其解释了这一情形将如何发生为错误的驱动程序安装。Windows 可能无法感知屏幕空白,但是看到该屏幕的任何用户都将立即知道这一点。现在我们将使用算法来在检测多个启动过程中发生这一情形的时间,并自动启动至 Windows 恢复环境 (WinRE) 内的启动选项菜单。由于 WinRE 的源图像包含与主 Windows 安装分离的驱动程序和文件,因此其将不会受到任何软件变更的影响,而且将成为从启动选项菜单中开始故障处理的可靠环境。
这一选项是否将在未出现实际错误时导致 Windows 进入 Windows RE 中的启动选项菜单?两次连续的执行需求当然将降低这一概率,但是其仍然存在出现的可能性。我们在启动选项菜单的设计过程中充分考虑了这一点,确保在首要位置中设有一个突出显示的“继续”按钮,并将其作为 Windows 8 PC 中未出现实际问题的用户的清晰转义路径。我们在可用性实验室中研究了这一主题,查看哪些用户将在启动选项菜单意外出现时进行这一操作。我们非常地高兴发现“继续”按钮发挥了其应用的功效,为误报提供了重要的转义交错线。
在某特定的情形中,Windows 8 将更具针对性地采取适当的操作来解决特定的问题。例如,如果核心启动序列自身未正常完成,我们将自动进行第二次尝试。如果第二次仍未成功,Windows RE 将自动进行加载并启动专用启动修复工具。虽然该工具是为修复启动过程中许多错误而定制,但是我们仍为启动选项菜单内的其他故障处理工具提供了一个通道,用于启动修复工具无法成功使用时的情形。
这些自动检测将确保 Windows 内的修复和恢复工具将始终可用,即便 Windows 本身无法正确加载。Windows RE 无需按键或进行任何操作,即可在需要时自动加载,使用启动选项菜单自身的故障处理工具进行修复和恢复。
在您需要时进入启动选项菜单(即使一切正常)
即使在一切正常的情形中,我们仍希望拥有一个简便的通道进入 Windows 内的启动选项。当一切正常运行时,用户仍然需要使用菜单中的许多项目:例如,启动至备用设备、变更固件配置、以及变更以开发人员为中心的 Windows 启动设置。
我们希望以一种从逻辑上适合 Windows 8 全功能运行的方式让您在需要时轻松进入启动选项菜单。
一般来说,我们的首选方式是创建一个方法来进行某一特定操作,并将这一方法尽可能做到最好。即便存在多种方式来进行某操作,但是始终将存在一个主要方法,这通常也是最常用的方法,而且将涵盖大部分情形。选择一个方式来进行某操作可被设计用于某一组特定的使用场景,而且我们将顺理成章地认为该方法在所有这些场景中有用、可用和合适。有些时候,主方法可能并未包含某些其他情形。如果这些情形不是非解决不可,那么您可将主方法作为唯一方式。
然而,我们构建了一个主方法并在随后添加了另外两个通道:其中一个是确保我们可涵盖所有必要的应用场景,另一个是确保模式与现有 Windows 组件一致。
进入启动选项的主方法是从“PC 设置”的“常规”选项卡中的“高级启动”中进入。您可从“设置”超级按钮中进入“PC 设置”或从“开始”屏幕使用特定搜索术语进行搜索,例如启动、安全模式、固件、BIOS 或其他术语。在“常规”选项卡中,您可看见启动选项菜单中可用的选项的简单描述,以及“立即重新启动”按钮。显示于屏幕中的描述为完全动态的内容,并将基于特定 Windows 8 PC 中可用的硬件、固件和软件而发生变更。
按下“高级启动”下的“立即重新启动”按钮将在全功能系统中开始进入主通道。系统将开始正常重新启动过程。随后,在 Windows 完成关机并准备完整重新启动和进入 POST 之前,整个过程将暂停,启动选项菜单将淡入视图。这是 UI 可在关机/重新启动序列中显示的最新点。我们决定在这一中间点暂停重新启动过程,因此您可在 PC 进入另一 POST 之前选择您的目标。我们可通过在 POST 发生之前选择所需的启动选项,直接跳转至固件安装和设备启动(如果选择了这两项),而无需进行第二次重新启动和第二次 POST。如果您愿意,您甚至可使用这一菜单来迅速启动至第二次 Windows 安装。由于 Windows 将暂停重新启动序列来显示启动选项菜单,因此这将是启动至第二个操作系统的最快方式之一。
如果您想获得更快速的访问方式,您可采用另一方式来进入启动选项菜单:从关机菜单内部进入。如果您按住 Shift 键并点击“重新启动”,那么 Windows 8 将像您点击“PC 设置”内的“高级启动”一样进入相同的事件序列。由于您可使用“设置”超级按钮从 Windows 8 的任何部分打开关机菜单,因此这是用户直接进入启动选项菜单的一项特别迅速的方式。当您观看文末视频中时,您将发现我们移动了这一命令,因此您可使用您的鼠标进行一个直接的线性过程来进入这些选项,而且这一过程的要求程度低于 Windows 7 中的程度。
我们之所以为关机菜单添加 Shift + 重新启动的选项是因为启动选项需要随时可用,即使没有用户登入 PC。在允许在启动阶段进行按键的较旧硬件模型中,物理访问 PC 的任何用户都可按下某键来中断启动并使用可用的启动选项。为了保留这些应用场景,我们需要为未登录(但实际在物理使用 PC 的)用户提供一种方式来使用启动选项菜单。
关机菜单可完美适用于这些要求。其始终从登录屏幕中可用,即使没有用户登录。此外,在重新启动上使用 Shift 修饰符适合在相同菜单中其他项目中使用 Shift 的模式。您可能注意到关机菜单也为已登录或未登录的用户显示于许多其他地方。在所有这些地方,Shift + 重新启动的行为都有效。我们认为关机菜单可在显示时一致、可预测的运行。
还有另一种方式可在关机过程中触发启动选项菜单,而且这一方式可为使用命令提示符操作提供额外的优势。我们为 shutdown.exe 添加了一个新标志:/o。/o 标志仅可与 /r 配合使用(进行重新启动),因此完整的语法是:
Shutdown.exe /r /o
由于我们希望确保 Windows 的这一部分一致、可预测,因此我们为 shutdown.exe 添加了这一新标志。并非所有用户都将使用 Shutdown.exe,但是仍有用户确实需要使用 Shutdown.exe 来进行一整套与关机相关的任务。
- Chris Clark