Windows 10: jak przebiega proces aktualizacji?
Narzekaniom na proces aktualizacji Windows 10 towarzyszy często dość fundamentalne niezrozumienie tego procesu. Sprawia ono, że rozwiązań problemów szuka się w niewłaściwych miejscach, uszkadzając przy okazji pamięć podręczną aktualizacji w przypadku nadmiernego uporu. Microsoft od pewnego czasu zmniejszył obciążenie, jakie generuje proces instalacji, poprzez... niewydawanie nowych wersji systemu. Wersja 21H1 ma być, podobnie jak 20H2, jedynie dodatkiem do 2004. A co potem?
Pod koniec roku czeka nas większa aktualizacja, obecnie żmudnie budowana kolejnymi wersjami Insider Preview. W jaki sposób Windows instaluje takie "większe" aktualizacje? Proces ten ulega ciągłej ewolucji, oddalając się powoli od standardu, jaki wyznaczył system Windows Vista i format WIM.
Windows Setup
Pierwsza wersja Windows 10, przesłana użytkownikom wersji 7 i 8.1, instalowała się w sposób nieodróżnialny od klasycznego upgrade'u z płytki. Menedżer pobierania, tym razem dostępny bezpośrednio z Windows Update, a nie ze Sklepu, pobierał zawartość płyty instalacyjnej na dysk. W tym celu powstał ukryty katalog C:\WINDOWS.~BT, przechowujący strukturę plików zbliżoną do zawartości ISO z systemem. Były jednak dwie istotne różnice, wywodzące się z metody dystrybucji Windows 8.1 o nazwie Modern Setup Host.
Zamiast obrazu WIM, który jest w uproszczeniu obrazem partycji systemowej, system pobrano w formacie ESD (electronic software download). Jest on mocniej skompresowany niż WIM, opcjonalnie zaszyfrowany i podlega innym operacjom serwisowym. Poza tym, folder WINDOWS.~BT jest modyfikowany przez Migration Plugins Host. Jest to zbiór wtyczek sprawdzających, czy nowa wersja systemu zadziała na komputerze i przeprowadzających migrację ustawień znanych i problematycznych aplikacji.
Faza offline
Po przygotowaniu pliku ESD i zakończeniu pracy wtyczek, rozpoczynała się tzw. faza offline instalacji. System wykonywał restart, po którym ładował się instalator systemu (Windows Setup), rozpakowujący plik ESD. Poprzednia wersja systemu była przesuwana do katalogu Windows.old. Rozpakowanie ESD (i trochę pomniejszej magii) kończyło się kolejnym restartem, czyli pierwszym rozruchem nowego systemu.
"First boot" oznacza, oczywiście, konieczność odsysprepowania systemu i instalacji sterowników. Inicjalizacja sprzętu i sterowników wymaga, rzecz jasna, kolejnego restartu, po którym przeprowadzany jest merge starego i nowego Rejestru. System jest wtedy gotowy do pracy, ale nie zawiera żadnych gotowych kont użytkownika. Konieczne jest przejście przez fazę OOBE: migracji ustawień, założenia nowych gałęzi, instalacji aplikacji APPX i odpowiedzi na te pytania konfiguracji wstępnej, na które nie odpowiedziano poprzednio. Pod spodem instalują się z kolei aktualizacje do nowego systemu. Kończą się one, oczywiście, trzecim restartem.
Za długo, za ciężko
Procedura ta potrafiła trwać nawet godzinę, wymagała kilku restartów, była całkowicie wyłączna (nie dało się pracować) i niemożliwa do przerwania. Zachodziła w dodatku co pół roku i była daleka od idealnej. Użytkownicy prędko znienawidzili Windows Update, stawiając Microsoft przed koniecznością przebudowy procedury aktualizacji. Dziś nowe wersje Windows 10 są instalowane inaczej, a odbywa się to w ramach infrastruktury UUP (Unified Update Platform).
Agent Windows Update nie rozpoczyna pracy od budowy katalogu WINDOWS.~BT. Zamiast tego, zasoby są pobierane do zwykłej lokalizacji podręcznej (SoftwareDistribution\Download). I tym razem nie jest to jeden plik ESD, a kilkanaście. Pierwszy plik, o nazwie "core" lub "professional", zawiera repozytorium metadanych. Kolejne pliki to binaria, dostarczane i aktualizowane oddzielnie. Microsoft-Windows-Foundation-Package oraz Microsoft-Windows-Client-Desktop-Required-Package zawierają rdzeń klienckiego Windowsa (zajmujący jedynie około 800 megabajtów). Microsoft-Windows-Client-Features dostarcza oprogramowanie systemowe, a Microsoft-Windows-EditionPack składniki właściwe dla wersji (Home lub Pro). Do tego dochodzą pakiety Microsoft.ModernApps.Client i Microsoft.ModernApps.Client.All, zawierające nasz ulubiony składnik: aplikacje Metro. Paczki te są następnie pomniejszane o te aplikacje, których poprzednie wersje już usunęliśmy.
ESD, CAB, APPX...
Plikom ESD towarzyszą pakiety CAB, zawierające nowe wersje składników zainstalowanych przez panel Ustawień. Są to w większości pakiety rozpoznawania mowy i pisma oraz czcionki. Wśród plików CAB znajdziemy też aktualizacje kumulatywne do systemu i środowiska .NET, a także wszelkie "funkcje na żądanie". Z kolei funkcje instalowane przez Sklep znajdują się w plikach APPX. Są nimi głównie pakiety językowe, te bowiem z nieznanego nikomu powodu dystrybuowane są właśnie przez Sklep. Obok wszystkich tych plików pobierane są instalatory programów, z których serwisowaniem we właściwy sposób się poddano. Są to Edge i OneDrive, udostępniane w formie instalatorów EXE i MSI, zgodnych z Windows 7...
Cała powyższa zupa plików jest zamieniana na punkt montowania DISM. Dopiero wtedy powstaje katalog WINDOWS.~BT ze źródłem instalacyjnym. Jednak zamiast pliku WIM, znajduje się w nim katalog o wymownej nazwie NewOS. Zawiera on zamontowany WIM, złożony z plików ESD. Ten zamontowany obraz jest następnie łatany plikami CAB, nastrzykiwany sterownikami oraz provisionowany plikami APPX. Gdy jest gotowy, system prosi o ponowne uruchomienie. Rozpoczyna się proces aktualizacji Windows.
Szybsza instalacja
Ponieważ jesteśmy "jedną fazę do przodu", pierwszy restart polega głównie ma podmianie katalogu Windows na NewOS. Następnie, już po staremu, przebiega odsysprepowanie obrazu i podpięcie sprzętu, a także migracja Rejestru. Faza OOBE zadaje nowe pytania, ale w tle nie instalują się aktualizacje systemu, a Edge i OneDrive.
System jest wkrótce potem gotów do pracy w pełni zaktualizowany. Większość operacji blokujących odbywa się obecnie w tle, bez potrzeby narażania cierpliwości użytkownika na test. Skuteczność tej procedury zależy od pewnej istotnej okoliczności: rzadkich restartów. Ponieważ domyślnie wyłączenie Windows 10 jest hibernacją, obudzenie lub "odmrożenie" systemu pozwalają kontynuować przygotowywanie katalogu NewOS w tle. Z kolei restart sprawi, że agent Windows Update musi przeanalizować dokonany postęp, a często po prostu zacząć od zera. Przy odpowiednio niesprzyjających warunkach, da się w ten sposób uniknąć większej aktualizacji przez dobrych kilka miesięcy.
Walka Microsoftu z "fazą offline" jest imponująca. Doświadczenie aktualizacji Windows 10 jest dziś znacząco mniej bolesne niż pięć lat temu. Jest jeszcze sporo do zrobienia w tej materii, ale kontynuowanie prac może się okazać trudne. Na przeszkodzie stoi konieczność zachowania zgodności z narzędziami Sysprep oraz WDS.