Dla upartych: garść wskazówek o serwisowaniu Windows 7
(nie o tym będzie w tym miesiącu)
Zanim złowroga Wizja TV przyszła i spolszczyła szereg stacji telewizyjnych, jak CN albo Fox Kids (w praktyce pozbawiając je 60% oferty programowej, resztę skazując na wieczne opóźnienie względem oryginału), pewna polska telewizja kablowa o nazwie Polska Telewizja Kablowa oferowała dostęp do „prawdziwych” wersji owych stacji, co pozwoliło mi w dość młodym wieku zostać narażonym na wpływ kreskówki Cow and Chicken, nie tylko całej serii, ale i odcinka pilotażowego, jeszcze bardziej chorego, niż reszta produkcji. Jestem głęboko przekonany, że nieodwracalnie i poważnie mnie to skrzywiło, czego nieprzepracowane terapeutycznie skutki muszę znosić do tej pory. Niewątpliwą zaletą tej traumy było jednak zaszczepienie we mnie, w jednocyfrowym wieku, miłości do napędzającej moją wyobraźnię popkultury. Zresztą w dalszym ciągu twierdzę, że lepsze to, niż baśnie Andersena. Lub większość polskich lektur.
W kreskówce Cow and Chicken pojawia się postać diabła, w napisach występującego jako The Red Guy. Wykazując aktywny sprzeciw wobec spodni, Red Guy przybierał różne tożsamości, a intro sugerowało, że istotnie są to różne osoby. Każda persona, w którą się wcielał, nosiła miano związane z awersją do spodni, a wśród nich pojawiały się takie nazwiska, jak: oficer Pantsovsky, pani Barederriere, czy doktor Laxslax. Aby dodać absurdu, wyżej wymienione postaci nie miały ze sobą nic wspólnego, a zakres ról był astronomicznie szeroki.
Moja poprzednia praca każdego dnia wywoływała u mnie skojarzenia z tą postacią. Co prawda nosiłem spodnie (niestety), ale raz musiałem zestawiać konta użytkowników w Active Directory, innym razem instalować 200 Red Hatów, potem przygotowywać pakiety jakiegoś oprogramowania do obliczania strat termicznych na ociepleniach budynkowych, a czasem zdarzało się wymieniać filtry w projektorach, ponieważ najwyraźniej urządzenia stojące w okolicy komputerów również magicznie wpadają w zakres moich kompetencji. Pewnego dnia, po dzierganiu kilometrowych plików Kickstart niemalże metodą prób i błędów, uderzyła mnie w głowę konieczność przygotowania obrazów instalacyjnych Windows 7, bowiem wreszcie w domenie nastały czasy poprawnego działania usługi WDS. Pierwsze próby tworzenia stacji wzorcowych przypomniały mi o zjawisku, które przez mgłę pamiętałem z niezliczonych instalacji Siódemek na laptopach znajomych. Otóż po przeprowadzeniu instalacji z oryginalnego nośnika, pierwsze wyszukiwanie aktualizacji trwa około trzystu lat.
A więc zanim cokolwiek w obrazie w ogóle zaczęło działać, zrobiłem migawkę bazową, zawierającą wszystkie aktualizacje, żeby nie musieć czekać kilku godzin za każdym razem, gdy zaczynam od nowa. Ale Siódemki przyjdzie przecież instalować w wielu innych sytuacjach, w pracy i poza nią, więc przydałoby się mieć owe aktualizacje zintegrowane z nośnikiem instalacyjnym. Szczęśliwe, Windows posiada doskonałe (acz powolne) narzędzie do integrowania aktualizacji. Pozostało więc ściągnąć milion paczek AutoPatcherem, ściągnął ręcznie drugie pół miliona, których nie pobrał, wrzucić je do kolejki i poczekać, jak przez noc wszystkie się zintegrują. Wtedy wyszukiwanie łatek na świeżym systemie będzie trwać kilka sekund.
Windows Update jest zmorą dla użytkowników Okien od czasów Visty. Nowe narzędzie zastąpiło stary mechanizm hotfixowania. Ma ono gigantyczną liczbę zalet: nie da się zadeptać nowych aktualizacji starymi, możliwe jest integrowanie nowych funkcji, pakietów językowych, łatek i programów jednocześnie, ścieżka zależności jest jednoznaczna, a narzędzie integracyjne wbudowane w system. Jest jednak kilka problemów. Po pierwsze DISM, bo o nim mowa, jest zawrotnie powolny. Wynika to z samej jego natury i nie da się z tym nic zrobić. Po drugie, przy jednoznacznej ścieżce zależności mści się model aktualizacji obrany mimochodem lata temu, czyli „jedna dziura – jedna łatka”. Dzięki temu graf połączeń między aktualizacjami jest tak gigantyczny, że wytyczenie w nim ścieżki krytycznej potrafi zajmować długie godziny. W niektórych konfiguracjach Windows Server 2008 udaje się doprowadzić do stanu, w którym serwer w praktyce szuka aktualizacji cały czas, marnując jeden rdzeń procesora i podbijając rachunki za prąd. Znane są takie przypadki.
Microsoft rozwiązał ten problem dostarczając aktualizacje kumulatywne. Obecnie Windows 10 zawsze dostaje jedną wielką megapakę, której wyszukanie zajmuje sekundy, a instalacja gwarantuje posiadanie najnowszej wersji systemu. Model aktualizacji kumulatywnych został retroaktywnie wprowadzony w zeszłym roku również dla starych systemów, w tym Windows 7. Niestety, wprowadzono go na zasadzie „od teraz będziemy agregować łatki”. Sformułowano też, nigdy niepowtórzoną, bardzo ogólną obietnicę, że z biegiem czasu do pakietów kumulatywnych będą dodawane starsze łatki. Tak, by na końcu dysponować taką samą jedną, wielką paką, jak w przypadku Windows 10. Oczywiście, nowe łatki unieważniają niektóre stare, więc liczba aktualizacji sprzed owej dobrej zmiany i tak by spadała, ale na pewno znacznie wolniej. Jednakże, wizyta w Katalogu Windows Update i rzut okiem na kolejkę unieważnień najnowszej paczki aktualizacji dla Windows 7 pokazuje niezbicie, że jakoś to integrowanie starych łatek za dobrze nie idzie.
Na szczęście, jakiś czas temu Microsoft przypomniał sobie o swoim dawnym zwyczaju wydawania paczek „Rollup” zawierających wszystkie wydane łatki. Nie jest to Service Pack, bo Service Packiem być nie może – nie pozwalają na to względy licencyjne. Wydanie SP przedłuża okres wsparcia dla produktu i wymaga utrzymywania przez jakiś czas dwóch linii kodu. Dlatego choćby nie wiem, jak wielka była paczka aktualizacji, oficjalnie nigdy nie będzie już Service Packiem. Zresztą funkcjonalnie też nie – SP instaluje się w inny sposób, ale to nieistotny detal. Istnieje zatem, wydany w kwietniu 2016, pakiet o wdzięcznej nazwie „Wygodny pakiet zbiorczy aktualizacji dla systemu Windows 7 z dodatkiem SP1 i Windows Server 2008 R2 z dodatkiem SP1” (nie wierzycie mi ?). Zawiera on zdecydowaną większość łatek wydanych do lutego 2016. Tymczasem od listopada 2016 wydawane są pakiety zbiorcze. Problem jest z tym, co znajduje się pośrodku. W międzyczasie wydano około czterdziestu aktualizacji. Ale gdy zintegrujemy paczki zbiorcze i „wygodne”, Windows Update będzie musiało wyszukać około czterdziestu łatek w jakiś kwadrans, a nie trzystu w cztery i pół godziny.
Integrowanie aktualizacji z wykorzystaniem DISM jest dobrze opisane. Każdy może sobie wyszukać, jak to zrobić i nie mam zamiaru tego kolejny raz tłumaczyć. Moim celem jest opisanie, które aktualizacje zbiorcze pozwolą odhaczyć najwięcej łatek z kolejki Windows Update. Ponieważ nie wiadomo do końca, co znajduje się w torrentach Siódemek ze zintegrowanymi wszystkimi paczkami, przygotowywanych przez Rosjan i Rumunów, czasem warto przećwiczyć wykonanie takiego obrazu samodzielnie. Będę tutaj stanowczy i zdecydowanie odrzucę, wcale nie takie rzadkie, argumenty w stylu "Autor tekstu nie ma o niczym pojęcia! Hack-Squad Szwadron Defloratorów Śmierci 3000 z Władywostoku przygotowuje OD LAT wiarygodne, niemodyfikowane, czyste i bezpieczne płytki z Windowsami, potwierdzają to wybitni przedstawiciele podziemia warezowego i hakerzy wyklęci. HSSDŚ3000 wydawało slipstreamowane ISO, gdy autor jeszcze robił w pieluchy! Po dwudziestym szóstym zdaniu skończyłem czytać.”. Są bowiem wadliwe z definicji. Zawsze kod od dostawcy będzie bardziej wiarygodny, niż z drugiej ręki, choćby najczystszej.
Przed wyruszeniem w drogę, należy zebrać drużynę. Potrzebujemy obrazu WIM ze źródłem instalacyjnym systemu. Najlepiej nagrać ISO z Windows 7 Service Pack 1 na pendrive’a. Będziemy montować plik install.wim. Po zakończeniu przeprawy będzie wystarczyło go podmienić na pendrivie. Ale o tym za chwilę. Najpierw zbierzmy paczki. Uda się dzięki temu dostrzec, jakim kłamstwem jest model kumulatywny, co również mam nadzieję tutaj wykazać.
Najpierw zamontujemy nasz obraz. Teoretycznie powinno to iść tak: montuję obraz, integruję megapakę, wrzucam obraz na pendrive’a, gotowe. Niestety, tak się nie da. Po pierwsze, nasza „wygodna paczka” (bo to od niej zaczniemy) zaktualizuje tylko te funkcje systemu, które istnieją w obrazie. A my bardzo nie chcemy jej nakładać ponownie, gdy coś do systemu dorzucimy. No więc najpierw ściągnijmy pakiety funkcjonalności:
Są dostarczane jako pakiety MSU, będziemy musieli je przerobić na paczki CAB. Szczęśliwie to łatwe. Zrobimy to narzędziem Expand. Czy pora uruchomić DISM po raz pierwszy? Nie, ponieważ sam stos serwisowy wewnątrz obrazu trzeba zaktualizować, że system umiał nakładać nowe łatki. Dlatego dorzućmy jeszcze:
I, oczywiście przeróbmy na CAB. Dobrze, teraz można ruszyć z DISMowaniem. Czy na pewno o niczym nie zapomnieliśmy? Czy istnieje jeszcze jakiś produkt, którego nowa wersja została wydana jako aktualizacja do Windows 7? Tak, jest to Internet Explorer 11. Niestety. Co zabawne, wydano go w formie instalatora EXE, który należy rozłożyć na sześć plików. Część z owych plików to pliki CAB, ale część to MSU, więc ponownie przeróbmy je z wykorzystaniem Expand. Niektóre z nich można pobrać oddzielnie, jak pakiet językowy oraz słowniki. Super. Mamy więc komplet paczek z Internet Explorerem. DISMujemy drugi raz? Oczywiście, że nie. Istnieje dziewięć pakietów aktualizacji potrzebnych przed instalacją Internet Explorera.
Ech. No dobra: pobranie, expand, mamy CABy. DISMujemy. Następnie DISMujemy, w końcu, tamte poprzednie paczki z Internet Explorerem 11. Mamy wreszcie obraz, który zawiera programy i funkcje, które dopiero teraz przyjdzie nam aktualizować tą wielką paczką. Wyciągnijmy z niej ważący 500MB plik CAB i zapuśćmy DISM jeszcze raz.
Jesteśmy teraz na etapie sprzed aktualizacji kumulatywnych. Zintegrujmy je. Część z łatek wydanych w międzyczasie ulegnie skasowaniu, ale niestety nie wszystkie. Wrzućmy zatem najnowsze aktualizacje kumulatywne dla .NET (jakimś cudem są dwie), IE oraz samego Windowsa.
Puszczamy DISM ostatni raz przed odmontowaniem obrazu. Pozostaje nam już tylko wrzucić zmodyfikowany plik WIM na pendrive’a i mamy gotową instalkę Windows 7. Taki jest obecny stan „modelu kumulatywnego” – dwadzieścia paczek, które trzeba instalować na raty nie jest moim zdaniem kumulatywne, ani trochę.
Anyway, system zainstalowany z takiego nośnika wyszuka aktualizacje bardzo szybko i znajdzie ich kilkadziesiąt. Wśród nich znajduje się .NET Framework 4, którego niestety nie da się połączyć z obrazem systemu, bo nie jest dostarczany w takiej formie (dlaczego!?). Są też definicje Defendera, również niemożliwe do integracji. No i oczywiście wspomniana już gromadka paczek niepołkniętych przez aktualizacje kumulatywne. Jeżeli chcemy być psycho-hardkorami, możemy ściągnąć również te aktualizacje. Mam nawet ich listę, bo jestem nienormalny. Zrobiłem nawet taki obraz i aktualizuję go co miesiąc! Tutaj docieramy do jeszcze innej kwestii.
Można, i warto, dla ćwiczenia, stworzyć obraz instalacyjny z paczek kumulatywnych. Mimo, że, trochę to boli. Natomiast ręcznie bieganie za paczkami to morze zmarnowanego czasu. Wiem, że potem się to odbija na krótszej instalacji, ale nikt nie chce przechodzić przez piekło. Dlatego należy sobie w życiu automatyzować pewne kwestie. Machnąłem na kolanie skrypt w PowerShellu, proszę się częstować, może zadziała. Ale jest inna metoda, doskonała do cyklicznej obróbki takich obrazów, nie tylko w kwestii aktualizacji (DISM potrafi o wiele więcej, gdy już zadziała). Program NTLite to zewnętrzna, graficzna nakładka na DISM. Wśród wielu zalet, jak możliwość włączania funkcji, usuwania komponentów i aplikowania pliku odpowiedzi dla instalacji nienadzorowanych, jest też moja ulubiona, jaką jest integrator aktualizacji, działający metodą „pokaż folder z górą łatek, a ja je zintegruję”. Mam katalog z około 300 paczkami aktualizacji, efekt końcowy pracy NTLite to funkcjonalny i w pełni zaktualizowany obraz Siódemki, bez .NET i definicji wirusów dla Defendera. Pobrany AutoPatcherem.
Polecam sobie zrobić, żeby potem nie marudzić, że instalacje trwają dwa dni ;)
Cheers!