Longhorn 4074 – analiza instalatora i poradnik wimowania

longhorn_pdc_logo_smWątki o Longhornie na Techvortalu i Betaarchive, oraz nowe strony i artykuły odkrywające sekrety tego systemu wciąż pokazują jak ten już dość przestarzały anulowany projekt Microsoftu działa na wyobraźnię pasjonatów. Niecały miesiąc temu minęła okrągła rocznica. 25 kwietnia 2014 roku minęło dokładnie 10 lat od skompilowania buildu 4074 Longhorna. Z tej okazji chciałbym pokazać coś specjalnego. Coś co mimo swojej prostoty było nie do rozwiązania przez wielu moderów tego systemu – analizę instalatora, oraz poradnik umożliwiający zobrazowanie systemu i wykonanie swojego własnego repacka Longhorna lub forka modyfikacji Sigma OS. Sposób na zmuszenie Longhorna 4074 do przejścia w tryb „audit mode” znany z późniejszych buildów, umożliwiający dowolne modyfikacje systemu jest tak oczywisty, że po przeczytaniu tego poradnika większość z was będzie się dziwić czemu samemu na to nie wpadła. Zapraszam do lektury.

Wstęp

Na początku chciałbym zaznaczyć że artykuł ten nie jest przeznaczony dla osób, które nie mają żadnego doświadczenia w modyfikowaniu systemów operacyjnych i zabawy z Longhornem. Nie poprowadzę za rączkę nikogo krok po kroku na zasadzie „kliknij tu, potem tu”. Poradnik ten jest przedstawieniem ogólnej zasady wimowania Longhorna 4074 jaką stosowałem w Sigmie od 2008 roku i tylko nakierowuje na pewne tory przedstawiając określone rozwiązania, a nie dokładny sposób dojścia do celu. Tutaj musicie sobie poradzić sami, wykorzystując własne narzędzia i doświadczenie.

Poradnik ten ma wartość czysto edukacyjną pozwalającą na wyjaśnienie działania instalatora buildu 4074, oraz pokazanie że przy odpowiedniej ilości samozaparcia i wolnego czasu człowiek może zrobić wszystko za pomocą ułańskiej fantazji. Wątpię żeby w dzisiejszych czasach ktoś wykorzystał wiedzę przekazaną w tym artykule w praktyce, choć życie nieraz potrafiło mnie zaskakiwać co pokazują coraz to nowe reuploady Sigmy i komentarze na wielu forach, w tym BA gdzie uznano Sigme 3.0 za najlepszy mod Longhorna 4074 w historii.

Chciałbym zaznaczyć też że sposób odkryty i przedstawiony przeze mnie nie musi być jedynym i nie musi być najlepszym na dobranie się do systemu. Ale działa. I stosowałem go od lat.

Przygotowania

Czego potrzebujemy na początek?

1. Paczka programów i spatchowanych plików do pobrania tutaj (1MB)
2. VMware Workstation 7.1.6
3. Obraz ISO Longhorna 4074 lub Sigmy OS 3.0 M6
4. Komputer z procesorem o wydajności porównywalnej z pierwszymi Core 2 Duo i 2GB ramu, 20GB wolnego miejsca na dysku, najlepiej z Windows 7.

Czemu VMware w wersji 7.1.6? Co prawda da się zainstalować Longhorna na każdej nowszej wersji VMware, ale jego przygotowanie do wimowania wymaga dość rygorystycznej obsługi urządzeń i stabilności, czego nie zapewni nam tryb kompatybilności w nowszych wersjach VMware. Wimowanie Longhorna 4074 z użyciem nowszej wersji VMware workstation powoduje dziwne i nieprzewidywalne problemy.

Czemu Windows 7? Windows 8/8.1 sprawia do dzisiaj problemy z obsługą montowania dysków w WMware i uprawnieniami. Żeby uniknąć dziwnych bricków najlepiej użyć Windows 7 z wyłączonym UAC… Jeśli jednak mimo wszystko chcemy użyć Kafla, to należy umożliwić uruchamianie explorera jako administrator za pomocą modyfikacji rejestru opisanej tutaj.

Komputer o sensownej wydajności jest niezbędny do tego żeby proces przygotowywania systemu był w miarę efektywny i nie trwał weków. Dobrze mieć 2 rdzenie (a więcej nie zaszkodzi, bo algorytm kompresji w ximage potrafi wykorzystać w pełni wielowątkowość), sensowną ilość ramu (2GB to minimum) i szybki HDD, najlepiej trzy. Jeden na OS, drugi będący miejscem na maszynę wirtualną, a trzeci na obraz wim, unikniemy dzięki temu ciągłego mielenia dysku i opóźnionego dostępu do danych.

Wypakowanie wima

Żeby zmodyfikować obraz wim trzeba go wypakować. Jaki jest najlepszy sposób wypakowania wima Longhorna? Zainstalowanie go! Instalujemy system w maszynie wirtualnej. W momencie pierwszego restartu, zaraz gdy mignie nam logo VMware szybko wyłączamy maszynę wirtualną. Co w ten sposób uzyskujemy? Zainstalowany częściowo system w którym wypakowane są wszystkie pliki systemowe, gotowy do uruchomienia fazy wykrywania sprzętu.

yyy

Montowanie dysków w WMware Workstation. Jest to najlepsza metoda na grzebanie w plikach maszyny wirtualnej tak jakby była zainstalowana na fizycznym dysku w naszym komputerze.

Zablokowanie OOBE i wejście w audit mode

Wejście w tryb przygotowywania systemu przypomina bardziej łamanie systemu, gdyż wykorzystuje Longhornowego buga związanego z winlogonem i sądzę że nawet Microsoft nie wie o tym sposobie. Żeby móc wejść w tryb umożliwiający instalacje wszelkiego oprogramowania, modyfikowanie rejestru itd. musimy zablokować wywołanie OOBE (C:\Windows\system32\oobe\setup.exe) które inicjuje wykrywanie sprzętu i końcową fazę instalacji systemu.

Okazuje się że podmienienie pliku winlogon.exe (C:\Windows\system32\winlogon.exe) na spatchowany (pozwalający obejść system aktywacji, znajduje się w paczce) sprawia że wywołanie drugiej fazy instalacji zostaje zablokowane, przechodzimy od razu do częściowo zainstalowanego systemu na wbudowane konto administratora. O to nam własnie chodzi. Pełna modyfikacja systemu stoi przed nami otworem 🙂 Możemy instalować wszelkie oprogramowanie, pakiety patchy np. Longhorna 2008 lub Power Pack i wszystko na co pozwala nasza wyobraźnia. Najfajniejsze jest to że podmiana winlogona z powrotem na niespatchoany powoduje że OOBE zaczyna znów się uruchamiać co umożliwia wykrycie sprzętu po przeniesieniu systemu na inny komputer.

Longhorn jest już przystosowany częściowo do tego aby być przenośny na 99% sprzętu bez żadnych szczególnych modyfikacji, co wynika z genialnej prostoty początkowej specyfikacji instalatora wim, m.in dzięki uniwersalnemu ACPI które dopiero po fazie OOBE jest zmieniane (wykrywane jest wtedy m.in to czy komputer ma jeden, czy więcej procesorów/rdzeni). Jedną z różnic między jądrem XP i Longhorna jest to że kenel Longhorna potrafi załadować sterowniki pamięci masowej wraz z sobą samym co uniemożliwia wystąpienie bsoda UNMOUNABLE_BOOT_VOLUME po przeniesieniu na inny kontroler pamięci dyskowej. Longhorn 4074 posiada domyślną obsługę kontrolerów dyskowych w trybie IDE, aby dodać do wima obsługę kontrolerów SATA i RAID należy wspomóc się driverpackami massstorage i skryptami z projektu Panther XP, których użyłem do dodania pełnej obsługi SATA w Sigmie 3.0.

Audit mode w Sigmie OS niczym nie różni się od używania zainstalowanego systemu poza tym że operujemy na systemie który użytkownik będzie miał po zainstalowaniu w dokładnie takim stanie w jakim go zostawimy.

Audit mode w Sigmie OS niczym nie różni się od używania zainstalowanego systemu poza tym że operujemy na systemie który użytkownik będzie miał po zainstalowaniu w dokładnie takim stanie w jakim go zostawimy.

Podmiana OOBE

Po odpowiednim przygotowaniu systemu należy go „zapieczętować”. Jak zrobić to w sposób który umożliwi uruchomienie fazy wykrywania sprzętu i zarazem pozwoli na skorzystanie ze spatchowanego winlogona? W Sigmie OS 3.0 użyłem do tego celu podmienionego pliku inicjującego oobe. Jest to wbrew pozorom bardzo prosta sprawa.

Plik setup.exe w folderze C:\Windows\system32\oobe ma zmienioną nazwę na setup2.exe. Plik setup.exe został podmieniony na program napisany w Delphi (znajduje się w paczce). Program ten nic nie robi oprócz uruchomienia pliku preinstall.bat który umieszczamy w tym samym folderze. Miałem plany napisania tego programu w C# z wykorzystaniem oryginalnej wersji .NET Framework dostępnej w 4074, ale mi się nie chciało 😛

Oto co zawartość skryptu preinstall.bat:

@echo off
rem Sktypt konfiguracyjny Sigma OS
ren %systemroot%\system32\winlogon.exe winlogon.exe.bak
ren %systemroot%\system32\winlogon.crack winlogon.exe
ren %systemroot%\i386\winlogon.exe winlogon.exe.bak
move %systemroot%\system32\winlogon.crack2 %systemroot%\i386\winlogon.exe
echo Nie zamykaj tego okna, dopoki nie skonfigurujesz wszystkego
start /wait %systemroot%\system32\oobe\setup2.exe
exit

Jak widać skrypt ten podmienia zmienia nazwę winlogon.exe na  winlogon.exe.bak, a winlogon.crack na winlogon.exe w system32 następnie robi to samo w folderze i386 (folderu i386 nie ma w Sigmie, zostawiłem to w celu zachowania kompatybilności z czystym Longhornem 4074). Następnie uruchamiane jest właściwe OOBE w pliku setup2.exe i następuje wykrywanie sprzętu. Po kilkunastu minutach i restarcie mamy zainstalowany system z wykrytym sprzętem i podmienionym winlogonem.

Ważne aby pliki winlogona miały własnie taką strukturę przed zwimowaniem (patchowany winlogon.crack i niespatchowany winlogon.exe w folderze system32).

Nic nie stoi na przeszkodzie żeby napisać bardziej rozbudowane OOBE (np. takie jakie było w Sigmie 2.0), lub dodać do skryptu preinstall.bat inne akcje które wymagają wykonania jeszcze przed wykrywaniem sprzętu (np. napisanie mechanizmu dodawania własnych sterowników z dowolnego nośnika).

Stworzenie obrazu wim

Teraz będzie już z górki. Wykonanie obrazu wim możliwe jest bezpośrednio z zamontowanego w VMware obrazu dysku, obraz taki najlepiej stworzyć na innym dysku fizycznym, dzięki temu że dane będą mogły być jednocześnie odczytywane i zapisywane na innych dyskach przyśpieszy się jego czas wykonywania. W zależności od szybkości komputera trwa to od 15 minut do kilku godzin.

Do wykonania pliku wim longhorna oczywiście używamy ximage w wersji 4059 (znajduje się w paczce). Wykonanie wima możemy sobie ułatwić skryptem który umieszczamy w tym samym folderze co ximage.exe

@echo off
del /a Z:\pagefile.sys
ximage /capture Z: F:\install.wim "Sigma OS"
pause

Jeśli wszystko pójdzie z planem uzyskamy plik install.wim który wystarczy podmienić na obrazie iso. W ten sposób uzyskamy swój własny obraz instalacyjny zmodyfikowany w dowolny wybrany przez nas sposób. Miłej zabawy 🙂