Windows 7, Kaby Lake i droga na Golgotę

Kupno komputera w dzisiejszych czasach to jeden z większych dylematów dla „tradycjonalistów”, którzy raz że są uwiązani do oprogramowania dla Windows, a dwa że niepokornie nie godzą się na schizofrenię interfejsów, brak sensownej kontroli nad aktualizacjami, wieczny poligon doświadczalny rolling release, obskurny wygląd, a jakby tego było mało to także szpiegowanie – oczywiście – Windowsa 10. Dziwiłem się kiedyś miłośnikom XP, którzy tak kurczowo przez lata trzymali się swojego, często nLite’owanego wynalazku – bo w czym XP górował na Siódemką? Niewielką zajętością miejsca? Nikłym apetytem na RAM? A teraz złośliwiej - pikselozą w czcionkach, wcale rzadką wywrotką, brakiem ASLR, DEP, UAC? Dzisiaj dziwię się już mniej, bo sam zostałem konserwą, hibernantem na choć zmurszałych technologiach to jednak z niekwestionowanymi zaletami nad tworami szatana i jego upadłych ziomków: Oknami 8, Lufcikami 8.1 i którąś kolejną permutacją 10. Niechaj niniejszy wpis będzie świadectwem drogi męczennika, walki o „normalny Windows”, o „ostatni Windows”. Dla akolitów dziesiątki z pewnością cały ten tekst to czas stracony, materiał do drwin i pożywka dla trolli wszelkiej maści – nie przejmuję się.

Zatem kupiłem sobie komputer-brykiet, NUCnik, jak zwał tak zwał, w każdym razie maleństwo, które w założeniu zastąpi mi starego, wyjącego PC-ta bydlęcych rozmiarów, szumiąco-grzmiącego od HDD i okupującego zbyt dużo miejsca. Nie potrzebuję wydajności rasowego desktopa, a Iris 620 razem z i3-7100U i tak będą wydajniejsze od mojego aktualnego dziadka pod biurkiem. Na RAMie teoretycznie straciłem bo 8GiB DDR4 kosztuje tyle co kiedyś 16 i już nie CL9 tylko CL15. Ale trudno, może stanieją jak spopularyzują się piątki… Zdecydowałem się też na dwa SSD, jeden byle jaki pod M.2 na system do zajeżdżania, a drugi „blogowy Plextor” pod SATA. Przy wyborze platformy, naturalnie kierowałem się dostępnością sterowników i te szczęśliwie są dostępne dla Windowsa 7 i nowszych abominacji, zarówno 32 bitowych jak i 64 bitowych edycji. Zatem instalacja to tylko formalność, producent już zadbał o wszystko – pomyślałem. O naiwności!

Zgrzyt pierwszy

Niewiele myśląc, za pomocą Rufusa zrzuciłem swojego płytowego Home Premium na pendrive, odpaliłem i… UEFI obraża mnie od BCD bla bla bla i problemów z boot sektorem. Przecież Secure Boot wyłączyłem, UEFI przestawiony na Legacy – o cóż może więcej chodzić? Jak się potem dogrzebałem w sieci, trzeba jeszcze włączyć CSM. Po tej operacji już nie protestował, ale… zawiesił się. Czyżby pendrive dogorywał? Sprawdziłem dwa inne – efekt ten sam. Przetestowałem też z napędem DVD na USB i zawiesza się jeszcze wcześniej.

Wróciłem na stronę producenta skąd można pobrać Gigabyte Windows USB Installation Tool i mały poradnik. Wbrew temu co sugeruje nazwa, kodu Gigabyte’a to tam niewiele, ot zaadoptowany DISM. I wtedy mnie olśniło – że przecież siódemka nie dogada się nie tylko z USB, ale przede wszystkim kontrolerami NVMe i SATA.

Wyglądał obiecująco, choć perspektywa podłączania fizycznego napędu (obrazów płyt nie obsługuje, a nie znam żadnych godnych zaufania wirtualnych napędów) trochę mnie zniechęcała, to i tak przecież wielkiego wyboru nie miałem. Po integracji sterowników, hotfix’ów i spreparowaniu gotowej instalki na pendrive, przyszedł czas na próbę.

Pozwolił się odpalić, nie zawieszał się, a nawet wpuścił mnie na ekran wyboru pamięci masowej! I… tyle. Wybór sterowników SATA AHCI skutkował komunikatem, że i tak w dalszym ciągu nie znaleziono żadnych SSD. Ażeby było bardziej tragikomicznie, to nie ma problemów z tymi „dyskami” diskpart z poziomu CMD, ani nawet eksplorator urządzeń, z których te sterowniki można wybrać… Brawo Microsoft! Takiego zwrotu akcji to ja się nie spodziewałem. Instalatory Windows nigdy niebyły przemyślane, ale coś takiego?

Sprawdziłem Windowsa 10 i Linuksa Mint 19.0v2. Nie protestowały, więc wina ewidentnie nie leżała po stronie sprzętu (w sensie uszkodzenia, a ewentualne konflikty w stylu „Tajemnic Sagali” raczej wyeliminowałem, podłączając a to z jednym SSD, a to z drugim, a to z samą klawiaturą i pędrakiem, a to na różnych portach. Nie sprawdzałem tylko z mniejszą ilością RAM. Cóż… z pozoru nawet tak absurdalne pomysły czasem okazują się mieć jakieś dziwne uzasadnienie, mimo iż wydają się kompletnie nielogiczne, a więc niezwiązane z problemem.

Zgrzyt drugi

Trzymając się wersji o braku sterowników, nieładowania ich itp. postanowiłem sam to zintegrować. A więc pobrałem takie cudeńka, tfu, dziadostwo jak KB3020369, bez którego nie zintegruje się KB3125574-v4 (czyli umownie Service Pack 2 od NSA), do tego wycofany hotfix na NVMe czyli KB2990941-v3 i hotfix do hotfix’a na ewentualny BSOD, czyli KB3087873-v2. Uzbroiłem się także w wypakowane sterowniki do wszystkich możliwych USB w tym komputerze i SATA. Już lekko naładowany, przystąpiłem do integracji za pomocą wbudowanego narzędzia DISM.

Poniżej wklejam mój przykład z epopei do wklepania/wklejenia. Być może komuś się przyda w przyszłości, szczególnie komuś kto gubi się w określaniu co jest częścią składni, a co twórczością użytkownika (u mnie, ta jest zawsze po polsku).

Dism /Get-WIMInfo /WimFile:F:\gmeranina\wypakowane\sources\install.wim

Dism /Mount-WIM /WimFile:F:\gmeranina\wypakowane\sources\install.wim /Name:"Windows 7 HOMEPREMIUM" /MountDir:F:\gmeranina\robocze

Dism /Image:F:\gmeranina\robocze /Add-Package /PackagePath:F:\gmeranina\aktualizacje\Windows6.1-KB3020369-x64.msu

Dism /Image:F:\gmeranina\robocze /Add-Package /PackagePath:F:\gmeranina\aktualizacje\Windows6.1-KB3125574-v4-x64.msu

Dism /Image:F:\gmeranina\robocze /Add-Package /PackagePath:F:\gmeranina\aktualizacje\Windows6.1-KB2990941-v3-x64.msu

Dism /Image:F:\gmeranina\robocze /Add-Package /PackagePath:F:\gmeranina\aktualizacje\Windows6.1-KB3087873-v2-x64.msu

Dism /Image:F:\gmeranina\robocze /Add-Driver /Driver:F:\gmeranina\sterowniki /Recurse

Dism /Image:F:\gmeranina\robocze /Get-Drivers

Dism /Unmount-WIM /MountDir:F:\gmeranina\robocze /Commit

"Get-WIMInfo" wyświetla nazwy edycji Windowsa w *.wim, ale nie wiem czy to w jakikolwiek sposób koresponduje z "Name", zawsze wpisywałem taką samą jak na liście, zgodną z moją wersją.

Paczki *.msu, *.cab itd. teoretycznie można wpisać po sobie, po spacji – i tak też zrobiłem, ale u mikromiękkiego musi zawsze coś nie działać, więc gdy tak uczyniłem, to wyświetlił kalumnie: "Błąd 14005" (i wszystko jasne! ;}). Jeśli grzecznie – jak w przedszkolu – wypisane po kolei każda w osobnej linijce – to już nie narzekał…

"/Recurse" sprawia, że sam szuka sterowników we wskazanym katalogu. Mimo wszystko ja i tak zebrałem te dla mojej 64 bitowej windy (każda grupa w osobnym folderze). Rzecz jasna w rodzinach *.inf/*.sys/*.cat.

"Get-Drivers" wyświetla listę sterowników, które udało się i nie udało się zintegrować, więc warto to prześledzić.

Ponownie przygotowałem bootowalny pendrive, z Windowsa z płyty (wolałem startować na czysto, bez możliwych modyfikacji programu Gigabyte’a, ale o tym za chwilę).

Mając gotowy plik, podmieniłem na pędraku "install.wim" na swój, równie spreparowany, wychuchany i wymęczony co wymodlony. ;)

I wiesz co? Zawieszała się… Powoli zaczynała mnie opuszczać słynna anielska cierpliwość i pierwsze nieśmiałe k*a, frywolnie wylatywały spod krzaczastych wąsów. Byłem przekonany, że wystarczy podmienić pliki, a instalator się nawet nie zająknie. Bo ja wiem, może jakieś indeksy, cuda, wianki robi? Ok, wziąłem więc z „bekapu” narzędzia wydłubane lata temu z Windows AIK (co by nie pobierać i nie instalować całej tej kobyły).

oscdimg -u2 -m -bF:\gmeranina\wypakowane\boot\etfsboot.com F:\gmeranina\wypakowane F:\gmeranina\wypiek.iso

Co również okazało się strzałem kulą w płot bo oscdimg niczego niezwykłego nie robi. Porównałem sumy kontrolne wszystkich danych i tylko "install.wim" różnił się od oryginałów z płyty. A więc teoria, że te cyfrowe podroby są w jakiś sposób sprawdzane wzięła w łeb.

W takim razie znowu zalałem pendrive plikami wyplutymi przez aplikację Gigabyte’a, aby porównać je z moim HP SP1. Okazało się że w istocie, niektóre się różnią (poza rzecz jasna instalacyjnym wim-em):

Nie miałem ani czasu, ani ochoty na dokładne analizy, więc tylko przypuszczam że są żywcem wydłubane z którejś wersji Windows 7, w każdym razie nie tej mojej i stąd niezgodność. W całym tym śmietniku moją uwagę przykuł "boot.wim". Aha! Więc on też był grzebany, nie tylko sam install.

A więc aby przetestować swoją teorię, n-ty już raz wgrałem płytowego Windowsa by zastąpić pliki "boot.wim" tym gmeranym przez GWUSBIT, zaś "install.wim" tym z „SP2” (naprawdę, nie sądziłem że będę tak tym żonglować, inaczej zrobiłbym obrazy). Próba generalna i udało się, bootuje się, nie wiesza i… w dalszym ciągu nie widzi SSD…

Przynajmniej doświadczalnie dowiedziałem się, że "boot.wim" także wymaga opieki DISM… Zintegrowałem więc z nim poprawki na NVMe, sterowniki – i dla "Microsoft Windows PE (x64)" i dla "Microsoft Windows Setup (x64)" (jeśli ma to w ogóle jakiekolwiek znaczenie). Oczywiście, SSD jak były niewidoczne, tak są nadal.

Zgrzyt trzeci

A może te wszystkie perypetie to wynik braku przestudiowania ustawień UEFI? Czy to możliwe by rozwiązanie leżało na tacy, tuż przed moim nosem? Jedyne interesujące opcje to "SATA Mode", "CSM" i "Chipset". Reszta nie wydaje się mieć żadnego możliwego związku z klątwą Nadelli.

"CSM" włączony bo musi być włączony. Bez tego nie da się odpalić instalatora. "Storage" na "UEFI", ale próbowałem także "Legacy". Zresztą to zdaje się wiąże się tylko z trybem odpalania boot loadera (MBR vs EFS na GPT).

W "SATA" jest już ciekawiej bo mam "AHCI" i "RST". Po włączeniu tego drugiego dochodzi "Use RST Legacy 0ROM". Logika podpowiada, że AHCI bo ani nie mam Optane’ów, ani siódemka nie zrozumie RST (nie wgrywałem bo nieużywam). Mimo wszystko i tak spróbowałem, a jedyna zmiana była w wyszukanym sterowniku i jego nazwie.

I ostatnia opcja to tryb "XHCI Hand-off", która raczej powinna być wyłączona. Ale próbowałem także z domyślnie włączoną i SSD nadal są niewidzialne.

Zgrzyt czwarty

Poddaję się, czas na helpdesk – pomyślałem. Nic sensownego już raczej sam nie wymyślę, więc skrótowo opisałem swoje powyższe przygody w supporcie i czekałem pół tygodnia na odpowiedź z szablonu, która nie miała sensu względem opisanych procedur…

Kindly first confirm if the M.2 SSD and the SATA SSD are detected properly in BIOS menu or not. Meanwhile, please make sure set [OS Selection] as Other OS in BIOS when you try to install Windows 7.

If there is anything we can support further through our system, please provide us product serial number, M.2 SSD and SATA SSD model name and invoice to verify channel information as different terms may apply.

Ze stoickim spokojem podałem wszystkie dane i ponownie opisałem problem. Odpowiedź przyszła podobna, więc zacząłem się zastanawiać czy rozmawiam z botem czy hindusem z amnezją…

Kindly confirm you used a FAT32 USB flash drive. You may also try to test with different optical drive and Windows disk. If nothing works, please verify the tool with other platform. If possible, please also change different USB drives, platform and make sure the Windows 7 is genius version released by Microsoft then try again. If the problem still occurs, kindly provide the model and size of USB drive. We will try to see how to assist.

Przez myśl mi przeszło by użyć prostych żołnierskich słów, ale… eh, szkoda tylko energii. Prawdopodobnie i tak tego nikt nie czyta, a za tydzień przyszłaby kolejna odpowiedź pasująca jak pięść do oka.

Zgrzyt piąty

Nie, nie można się tak łatwo poddawać! – coś wykrzyczało głęboko w duszy. Po naradzie z lusterkiem i nalewką, doszliśmy do wniosku że czas wytoczyć ciężką armatę. Początkowo plan zakładał wyjęcie SSD na SATA, podłączenie pod dziadka, zainstalowanie siódemki, odpalenie z trybu ratunkowego, instalację sterowników, wywalenie wszystkich urządzeń w managerze by następnie wrócić do brykietu i niech próbuje sam z tego wstać, zmuszony do wykrywania urządzeń i skorzystania z wgranych sterowników. Na koniec ostatni szlif w postaci teleportu Clonezillą na SSD na M.2 i błogi spokój. Ale! Takie coś jest mało zdrowe dla flashy, poza tym wymaga to schylania się pod biurko i rozbierania brykietu – musi być coś mniej angażującego. I faktycznie wydawało mi się, że jest: maszyna wirtualna.

Oczekując na odpowiedź z „supportu”, zdusiłem swoją przekorę i zainstalowałem dziesiątkę 1803 (fajnie, że przyjął klucz z ósemki Intelopatyka, bo ponoć to już miało nie działać ^^). Próbowałem się z nią zaprzyjaźnić, ale co krok trafiałem na minę, na drobnostki, które skumulowane, wywoływały tylko frustrację… Jednak kontynuując moją podróż ku przeznaczeniu, znalazłem wreszcie odpowiednią rolę dla tego nowotworu IT, tymczasowego rezydenta, cyfrowego terrorystę i dewastatora estetyki: inkubator. Postanowiłem doń przylepić Virtual Box’a, uwięzić w środku Windowsa 7, powszczepiać mu sterowniki, zrobić obraz partycji, wydłubać z wirtualnego dysku, zastąpić tym dziesiątkę i otworzyć szampana. Muahahaha, genialne! Za oknem słychać było donośny huk błyskawicy, włączone od fali akustycznej alarmy samochodowe, gromkie inwektywy uciekających przed deszczem tubylczych żuli i tłukące w parapet krople. Wszystko zdawało się przebiegać zgodnie z planem.

Niestety… wirtualizowany Windows 7 w dalszym ciągu uporczywie nie chciał zobaczyć nawet wirtualnego dysku twardego. Próbowałem i na ICH9 i na PIIX3. Nic z tego. Dlaczego? Naturalnie obraz był z moimi wcześniejszymi wypieczonymi *.wim-ami, ale z desperacji spróbowałem także ten gigabyte’owy.

Triumf

Głęboko westchnąłem, skrzyżowałem brwi, obowiązkowo zakląłem by pozbyć się na nowo nagromadzonego ładunku emocjonalnego i wróciłem do pierwotnych założeń, czyli instalacji na innym komputerze i transplantacji zawartości do brykietu. I to był strzał w dziesiątkę! Aby oszczędzić sobie fatygi i zwiększyć szanse na powodzenie operacji, zainstalowałem na antyku siódemkę, używając płytowego "boot.wim" (na grzebanym przeze mnie i program GWUIT, o dziwo nie widział HDD…) i grzebanego "install.wim" z „SP2”. Ale! Zanim dokończył instalację czyli w momencie kiedy sam uruchomił ponownie komputer, odłączyłem go z tzw. hebla (czyli od razu z prądu, prztykiem na listwie). Przeniosłem zawartość na SSD w brykiecie (Clonezillą) i tam pozwoliłem dokończyć instalację.

Obawiałem się, że się powiesi bo ani nie wiem jak dokładnie wygląda proces instalacji Windows (czy np. nie selekcjonuje sterowników już podczas rozpakowywania *.wim), ani nie byłem pewien czy diametralnie inne środowisko (AMD) nie stanie na przeszkodzie. Mimo wszystko udało się, ale zanim go wyłączyłem wolałem wgrać po ludzku sterowniki z instalatorów. Pozostała już tylko formalność przeniesienia mojej krwawicy na M.2 i ten wspomniany wcześniej szampan. Wyrok odroczono!

Streszczenie

Dla tych, którzy zgubili się w dżungli koncepcji lub byli zbyt leniwi aby przeczytać całość, przygotowałem skrócony opis wymaganych czynności. Przy założeniu, że wszystkie sterowniki do systemu są dostępne, zaś Windows z uporem maniaka nie widzi żadnych pamięci masowych, należy:

  1. Zintegrować stosowne poprawki i sterowniki z plikiem "install.wim" za pomocą DISM (lub czymkolwiek innym, po prostu tym jest najbezpieczniej).
  2. Zainstalować system na innym komputerze i wyłączyć z prądu zaraz po pierwszym restarcie.
  3. Przenieść dane do środowiska docelowego (przenieść pamięć, sklonować, co uważasz za wygodniejsze i szybsze).
  4. Dograć sterowniki.
  5. Cieszyć się, z oszukania gadów z Redmond.

W ten sposób zamiast wyrywać sobie włosy z głowy i łupać głową w mur jak mucha o szybę, obchodzi się barierę instalatora-inwalidy. Czy taki Windows jest czysty? Nie wiem, to zależy od konkretnych czynności jakie wykonuje on w kolejnych krokach. Podejrzewam, że nie, ale przynajmniej działa.

I tym optymistycznym akcentem kończę.

Errata

Dzięki komentującym znalazłem znacznie wygodniejszy sposób. Wystarczy wgrać na pendrive instalator dziesiątki i podmienić jego "install.wim" na ten z siódemką (rzecz jasna w dalszym ciągu czary z DISM są obligatoryjne). Jedyną wadą tego rozwiązania jest bałagan w partycjach jaki robi Windows 10, ponieważ jako pierwszą zakłada swoje mini recovery, drugą ESP, trzecią mikroskopijną bez systemu plików, a dopiero czwarta zawiera esencję.

Padły jeszcze inne propozycje takie jakie integracja sterowników SATA bez poprawek NVMe lub takie z pogranicza voodoo jak np. odłączenie na chwilę pendrive’a czy wyjęcie baterii z płyty głównej. Nie testowałem i szczerze powiedziawszy to mam już dosyć – WIMy śnią mi się po nocach.