本文將介紹 Windows 10 及以上版本的系統(tǒng)更新功能,涵蓋 Windows 更新的設計、四種更新的類型、執(zhí)行更新的步驟、可能出現(xiàn)的部分錯誤及相應的解決方法。 文章旨在幫助讀者全面認識 Windows 更新這一和系統(tǒng)安全關系密切的功能,面向 Windows 家庭版、專業(yè)版的個人 PC 用戶,特殊硬件及局域網(wǎng)中的 Windows 不在本文討論范圍內(nèi)。由于內(nèi)測通道分發(fā)更新的目的是幫助微軟發(fā)現(xiàn)漏洞,其頻率、內(nèi)容和正常通道有很大的不同,因此本文也不會涉及。 Windows 更新的設計 從 Windows 10 開始,位于設置面板中的 Windows 更新成為了集 Windows 系統(tǒng)本體、微軟應用和硬件驅(qū)動分發(fā)補丁和新功能的統(tǒng)一途徑。Windows 作為操作系統(tǒng)級別軟件,既要及時推送安全補丁和新功能以保障系統(tǒng)的安全可靠,也要將更新流程對用戶的影響最小化。 為了及時推送更新,Windows 被設定為自動下載安裝大部分更新。用戶可以延遲但不能用正常手段關閉這一策略。這些更新要么非常緊急,用于修補不久前被公布的安全漏洞,要么已經(jīng)經(jīng)過三重公開內(nèi)測,沒有大的穩(wěn)定性問題。 而為了減少對日常使用的影響,Windows 更新有三種設計:模塊化、累積式和分類管理。 操作系統(tǒng)決不能像小型應用那樣安裝更新必須下載完整的安裝包再重啟,Windows 因而采用了模塊化的更新方案。從 Windows 10 開始,PC,Xbox、HoloLens 等設備上的各種 Windows 共享內(nèi)核、部分 API 和驅(qū)動,微軟稱之為 OneCore。OneCore 可單獨進行維護。此外,系統(tǒng)中隨處可見的 DLL 文件也有助于模塊化的實現(xiàn)。不同的 DLL 有其不同的職責,它們可供系統(tǒng)或第三方應用調(diào)用,實現(xiàn)某些效果。例如,kernel32.dll提供了 Windows 子系統(tǒng)相關功能。這些設計讓微軟想要更新 Windows 內(nèi)核,或更新系統(tǒng)中對話框,只需要提供一部分文件即可。如果這部分文件暫時沒有應用調(diào)用,那么用戶不需要重啟即可安裝更新。 在用戶可感知的層面,微軟還期望借助一些獨立的包和 Microsoft Store 更新某些應用。打開設置面板中的系統(tǒng)信息界面,讀者可能會發(fā)現(xiàn)在Windows 規(guī)格 > 體驗一欄中有 Windows Feature Experience Pack 的版本信息,它包含一些獨立的應用,如畫圖,微軟可單獨推送它的更新。同樣的,系統(tǒng)的一些預裝應用,如語言包,還能在 Microsoft Store 中進行更新。這些設計都有助于模塊化管理和維護,優(yōu)化用戶的下載安裝體驗。 累積式更新的設計是為了解決如下問題:在 4 - 9 月有六個 Windows 更新,那么如果用戶在 9 月安裝了 Windows,豈不是要將六個更新逐一安裝?實際情況則是用戶只需要安裝最后一個月的更新——因為 Windows 本體的更新是累積式的,我們能在更新歷史記錄中看到許多條目后面的「累積更新」或「Cumulative Update」字樣,這些更新會包括上一次更新的全部內(nèi)容。 舉例來說,Windows 21H1 版本于 7 月 6 日獲得的更新涉及了 52,750 個文件,而五天之后的更新則涉及了 53,196 個文件,從數(shù)量上不難發(fā)現(xiàn),后一次更新建立在前一次的基礎之上。 累積更新會導致另一個問題:對于及時安裝了以往更新的用戶而言,難道每一次都要下載所有更新的內(nèi)容嗎?當然不是這樣,Windows 在下載更新時,會嘗試使用增量安裝的方式,僅下載上次更新以來更改的項目,這些項目被稱為更新的快速版本(Express version)。當無法使用增量安裝的方式時,Windows 才會下載全量更新版本(Full-file version)。 除了模塊化和累積式的更新設計,將更新分門別類也是必要的。用于修復漏洞的安全更新需要立即推送,優(yōu)先安裝;一些微小的 UI 改動、不影響系統(tǒng)穩(wěn)定性的 Bug 修復則適合在固定的時間統(tǒng)一推送;而對于系統(tǒng)重大更新和驅(qū)動的預覽版本,還可以采用可選更新的方式,給用戶時間選擇的自由,等到時機成熟再以自動更新的方式推送給所有用戶。Windows 更新的分類會在下一節(jié)中詳細解釋。 更新的四種主要類型 在設置面板的更新歷史記錄界面中,微軟將更新分類為四種:定義更新、驅(qū)動程序更新、質(zhì)量更新和功能更新。在這四種之外,還有一些更新被放在了其他類別中,惡意軟件刪除程序和前文提到的 Windows Feature Experience Pack 都在此之列,這些更新大多不涉及系統(tǒng)的關鍵功能,因此不做過多介紹。 下面從最簡單的定義更新開始講起。 定義更新和 KB 編碼 定義更新是為 Windows 內(nèi)置的安全軟件 Windows Defender 而設計,Defender 借此升級最新的病毒庫,維護系統(tǒng)安全。這和第三方防病毒程序的「自動更新病毒庫」功能是類似的,只不過它被整合進了系統(tǒng)中。 值得注意的是,除了版本號之外,這些定義更新名稱之后跟著一個以 KB 開頭的編碼。在后文要介紹的質(zhì)量更新中,KB 編碼會更加多變且重要。 KB 是微軟知識庫(Microsoft Knowledge Base)的縮寫。微軟知識庫即微軟以Support開頭的幫助網(wǎng)站,其中收錄了微軟產(chǎn)品的各種幫助文檔,因而也不難猜出,KB 后面的數(shù)字是這些文檔的代號。我們可以通過以通過https://support.microsoft.com/kb//en-us或點擊項目后的「了解詳細信息」來訪問某個更新項目的詳細描述文檔,重要更新配套的文檔會給出本次更新的內(nèi)容、警示、已知問題和影響的文件。 定義更新后的 KB 編碼都是一樣的,說明它們都共享同一個幫助文檔。 驅(qū)動更新 像它的名字所揭示的那樣,驅(qū)動更新可用于更新硬件的驅(qū)動程序。驅(qū)動程序由微軟和設備制造商合作提供,并且經(jīng)過微軟的測試和簽名。 在以往,這項任務一般由用戶自己完成,因而會有設備制造商提供驅(qū)動下載頁面,也有第三方的驅(qū)動商城。將驅(qū)動更新整合進系統(tǒng)顯然安全方便了不少。 除了負責任的廠商定期推送外,用戶能在以下兩種情況下收到這類更新。其一是全新安裝時,微軟的 ISO 鏡像僅提供基本的功能,顯示器、CPU 等硬件的驅(qū)動會在 Windows 啟動后通過系統(tǒng)更新自動安裝。其二是檢測到新設備時,例如插入數(shù)位板,在 Android Bootloader 模式下連接電腦,此時用戶可手動點擊「檢查更新」,可選的驅(qū)動列表會出現(xiàn)在更新界面。 質(zhì)量更新 質(zhì)量更新是 Windows 最重要的一類更新,更新內(nèi)容包括小的 Bug 和大的安全漏洞的修復,以及 UI、功能方面的微小改動。每一個質(zhì)量更新都有單獨的 KB 編碼,也即,擁有一個單獨的描述頁面可供查閱。 質(zhì)量更新是三類更新的統(tǒng)稱:OOB 更新,月度累積更新和月度更新預覽。前兩種為自動安裝的更新,最后一種為可選更新。三類更新都是累積式的。 OOB 是 Out of Band 的縮寫,OOB 更新可以理解為主通道之外的更新方式。之所以設計在主通道之外,是因為它是對重大安全漏洞的及時修復,需要被立即推送并自動安裝。OOB 更新沒有固定的推送頻率,但往往在微軟公布某個重大安全漏洞之后的幾天內(nèi)推送。前文以 2021 年 7 月 6 日和 13 日的兩次更新舉過例子,這兩次更新時間上離得如此之近,正是因為 7 月初微軟公布了 PrintNightmare 安全漏洞,于是就有了 7 月 6 日的 OOB 更新。 OOB 更新的描述文檔中,還會引用來自微軟安全響應中心的另一份文檔。該文檔是對此次 OOB 更新修復的漏洞的具體描述、評級和臨時解決方法。 和 OOB 更新不同,上述例子中 7 月 13 日推送的更新被稱為月度累積更新,或 B 更新。B 的含義是此更新會在每個月的第二個星期二定時推送,具體時間為北京時間凌晨 1 點。月度累積更新內(nèi)容為日常的軟件維護和修復。這個從 2003 年就固定下來的更新推送時間也被稱為「補丁星期二」。 月度更新預覽和月度累積更新關系密切,它是下一個月的將要推送月度累積更新的提前釋出版本,也叫 C 更新。月度更新預覽是考慮到一些 IT 管理員需要提前測試更新內(nèi)容,確認生產(chǎn)環(huán)境能夠正確運行而設計的。因此它是可選更新,用戶可以自行選擇安裝與否。 質(zhì)量更新負責維護 Windows 大版本更新后的系統(tǒng)體驗,這也是 Windows 即服務口號下微軟對更新做出的重要改動——以每月推送的質(zhì)量更新、半年或一年推送一次的功能更新,取代以往數(shù)年一次的大版本更新。質(zhì)量更新介紹完后,我們來介紹功能更新。 功能更新 上一小節(jié)提到,質(zhì)量更新也會涉及到系統(tǒng)功能,例如通知欄中的新聞與興趣就是通過質(zhì)量更新推送的。但功能更新影響的功能與設計更為重磅:1607 周年更新引入了暗色模式,1903 版本推出了 Windows Sandbox 和改進的游戲錄制欄…… Windows 10 中,微軟會在上半年 4 - 5 月,下半年 10 - 11 月,每半年推送一次功能更新,因此普通用戶還被稱為半年通道內(nèi)的用戶。功能更新顯性的特點是擁有自己的代號,不展示 KB 編碼但有專門的官方介紹文章和獨立的 ISO 下載通道。在 Windows 11 中,功能更新頻率被延緩為一年。 功能更新是一個新的開始,其更新內(nèi)容并無規(guī)律可言,但一定擁有固定的支持周期。在一定時間內(nèi),微軟會向某個版本推送質(zhì)量功能直到其被之后的版本淘汰。這段提供安全維護的時間被稱為支持周期。家庭版和專業(yè)版的支持周期一般為版本發(fā)行間隔加一年,也就是說,Windows 10 為 18 個月,Windows 11 為 24 個月。支持周期結束后,用戶只有升級到新版本才能享受到質(zhì)量更新。 這種升級并非強制的,是可選更新。新版本釋出后,微軟會為支持的設備推送新版本,用戶有留在舊版本的自由。當然,這種推送是分批且有延遲的,如果想要提前升級到新版本,則有升級工具可供選擇。 執(zhí)行更新的步驟 除可選更新需要用戶手動操作外,Windows 會自動掃描、下載并安裝更新內(nèi)容。對于定義更新這類小型項目,用戶一般不會感知到其存在。但當 Windows 更新需要訪問正在運行的某些系統(tǒng)組件時,它會在一切準備完畢后,彈出重啟選項,這可能是用戶對 Windows 更新感知最強烈的時候。 此外,當出現(xiàn)錯誤,無法安裝更新時,莫名其妙的錯誤代碼可能也會讓一些用戶抓狂。想要理解這兩種情況,了解 Windows 執(zhí)行更新的基本步驟是必要的。 一次完整的更新會經(jīng)過四個流程:下層階段,SafeOS 階段,首次啟動和全新啟動階段。大部分情況下更新會在第一階段結束,只有功能更新這樣的大版本升級才會完整走完這四個流程,也正因為這種情況下的復雜性,重啟才有必要,錯誤才會發(fā)生。 一次完整更新需要經(jīng)過哪些步驟,圖片來自微軟 下層階段 這一階段在將要更新的舊系統(tǒng)中進行。首先,系統(tǒng)根據(jù)用戶設定的更新策略,連接服務器,掃描并評估更新是否適用于設備。一些「優(yōu)化」指南中使用組策略、服務的方式禁用自動更新實際上就是影響了這一步。 一旦確定有更新可用,Windows 會下載更新內(nèi)容到臨時文件夾。然后比較設備信息和下載的內(nèi)容,確定如何安裝這些更新。此時,更新程序會創(chuàng)建名為「操作列表」的文件,告訴安裝程序如何處理這些更新。 對于大部分更新,安裝將直接進行且不會對正在運行的程序有影響,更新到此結束。 而如果更新涉及了內(nèi)核等重要組件,則必須要在 Windows 系統(tǒng)之外進行更新的部署。Windows 需要進入獨立的 SafeOS。這種情況下,下層階段最后的任務是準備好必要的文件,設定系統(tǒng)下一次重啟的首選項為 SafeOS,然后等待用戶確認重啟操作以繼續(xù)更新流程。 SafeOS 階段 SafeOS 階段會進入 Windows PE 環(huán)境,不過此階段首先做的是準備系統(tǒng)回滾文件,以防更新出錯。之后如果出現(xiàn)任何問題,系統(tǒng)都會卸載更新,然后使用 SafeOS 生成的回滾文件確保設備仍能正常開機。 留好后路之后,SafeOS 就會著手安裝更新文件,替換舊系統(tǒng)的組件。并設定啟動首選項為新的系統(tǒng),再次重啟。 首次啟動和全新啟動 告別 SafeOS 后,Windows 會在新環(huán)境中進行各種初始配置,識別設備的硬件。此過程稱為首次啟動。首次啟動之后 Windows 會第三次重啟,正式「開箱」進入新系統(tǒng),所以此階段還被稱為 OOBE (Out of box experience)階段。 經(jīng)過這四個階段,Windows 更新程序既完成了對舊系統(tǒng)的備份,也部署了新的更新。成功進入新系統(tǒng)之前,最多會重啟三次。整個過程如果有任何意料之外的情況發(fā)生,更新就會失?。合聦与A段出現(xiàn)的問題會導致更新無法繼續(xù),后面三個階段發(fā)生的錯誤則會導致系統(tǒng)回滾。 更新的常見錯誤及解決方法 如果設備原來的 Windows 系統(tǒng)運行正常,用戶沒有安裝意圖不明的軟件,也沒有刪改某些系統(tǒng)文件,那么 Windows 更新大概率不會失敗。但由于 Windows 運行的硬件軟件環(huán)境難以預料,遇到更新問題也并不罕見。本文將給出一些常見的錯誤及其解決方法。 網(wǎng)絡問題 下載錯誤發(fā)生在執(zhí)行更新的下層階段,錯誤大概率可歸咎于網(wǎng)絡。用戶需要做的是等到網(wǎng)絡環(huán)境良好時再進行更新。之后可以先清除原先下載的更新文件,即手動刪除 C:\Windows\SoftwareDistribution\Download 下的所有文件,再檢查更新。 當然,如果由于各種原因無法通過內(nèi)置的更新功能下載內(nèi)容,微軟提供了變通的方法。 Microsoft Update Catalog 是微軟官方提供更新內(nèi)容的下載平臺。Windows 的所有更新歷史都是可查的。前文提到,每一次質(zhì)量更新都有獨立的 KB 編碼,從 Windows Update History 界面找到需要的更新后,在 Catalog 輸入其 KB 編號,下載適合本設備的版本雙擊即可安裝。 驅(qū)動程序更新則可通過設備制造商的官網(wǎng)獲得。 系統(tǒng)組件損壞 此類錯誤經(jīng)常表現(xiàn)在安裝的下層階段和最終的啟動階段。由于系統(tǒng)的某些組件損壞,Windows 無法找到或者修補原文件導致更新發(fā)生錯誤。至于系統(tǒng)組件損壞的原因,大概率是不知情的用戶刪除了某些關鍵系統(tǒng)文件,或者某些惡意軟件作祟。 好在 Windows 自帶了修復的工具,以管理員權限運行 PowerShell,鍵入「DISM.exe /Online /Cleanup-Image /RestoreHealth」,這會使用 Windows 更新作為源文件,嘗試修復損壞的系統(tǒng)組件。如果手上有 Windows 鏡像,也可以在命令后加「/Source:C:\…… /LimitAccess」告訴 DISM 使用該鏡像作為源文件。 第三方加密軟件問題 這類錯誤發(fā)生在重啟至 SafeOS 階段,原因大概率是第三方的磁盤加密軟件阻止系統(tǒng)進入 SafeOS。解決方法是提前解密。 之所以 Windows 自身的加密不會導致類似的問題,是因為更新程序預先執(zhí)行了 BitLocker 的解密步驟。 硬件及其驅(qū)動問題 在首次和全新啟動階段,新系統(tǒng)會進行配置的初始化,如果此時碰到?jīng)]有驅(qū)動程序支持的硬件,更新也會出現(xiàn)錯誤。 如果在這兩個階段出現(xiàn)問題,那么用戶可能需要提前清理一些不必要的外設,例如風扇、手柄等。在安裝功能更新前總是保證驅(qū)動程序最新也是很好的習慣。 In-Place Upgrade 和 SetupDiag 如果確認更新失敗并非由以上四種問題引發(fā),那么下面這兩個方法值得一試,它們能解決或定位絕大多數(shù)更新錯誤。 In-Place Upgrade 是解決各種由于系統(tǒng)組件和設置造成的更新問題的最好方式。它修復系統(tǒng)的方式是對原系統(tǒng)進行一次原地更新:用鏡像設置替換原系統(tǒng)的組件和設置,還原系統(tǒng)純凈的環(huán)境。這會初始化所有的系統(tǒng)設置,但不會丟失任何的應用及文件。 詳細的操作流程可以參考 TenForums 的教程。它和使用易升提前獲取功能更新近似,簡單來說包括三個關鍵步驟: 從 微軟官方 獲取和電腦運行系統(tǒng)同版本的 ISO 文件; 掛載 ISO 文件,雙擊其中的setup.exe; 在之后的更新步驟中,選擇保留應用和文件,等待更新完畢。 圖片來自 TenForums 此方法本質(zhì)上是不丟失文件和應用的還原操作,和設置面板中提供的「全新啟動」類似。但當系統(tǒng)的某些問題已經(jīng)導致無法安裝更新時,「全新啟動」功能很可能也會出現(xiàn)問題,采用鏡像修復的方式更加穩(wěn)妥。 更復雜的情況則需要考慮使用 SetupDiag。這是微軟推出的一款更新日志分析工具,官方已經(jīng)給出的詳細的使用教程。用戶遇到升級問題時,下載并雙擊打開此工具,它會生成日志分析文件,通過比對生成的 SetupDiagResults.log 和官方給出的規(guī)則,即可準確定位錯誤發(fā)生的階段及原因,工具同時會給出解決方案。 圖片來自 SetupDiag 文檔 總結 微軟一直在優(yōu)化 Windows 更新的體驗。它如此耗費心力的目的很顯然不是如一些「指南」所暗示的那樣拖慢用戶的系統(tǒng),而是最大程度上保證自家產(chǎn)品的安全性,畢竟除了是市場占有率最高的桌面系統(tǒng),Windows 也占有 20% 的服務器市場。 目前,排除 OOB 這類緊急更新,Windows 重要的(可能需要重啟的)更新頻率僅為每月一次,重啟前會請求用戶確認,用戶亦可以擇時自行重啟,因而本文并不建議用戶采用非正常手段關閉自動更新以減少這必要的打擾。即使需要延遲進行更新,也建議采用將某網(wǎng)絡設置為按流量計費的方式,或使用暫停更新選項。 題圖來自 Unsplash:@cbpsc1 |
|