U ovom ću članku pokušati opisati metodu za dijagnosticiranje problema s nepotpisanim upravljačkim datotekama u x64 bitnoj verziji Windows sustava zbog kojih se računalo prestaje učitavati i ruši se na BSOD kad se pokrene. Ali sustav se i dalje može učitati onemogućavanjem provjere digitalnog potpisa prilikom pokretanja (F8 -> Onemogući vozač potpis Izvršenje). Kao primjer, u ovom ću članku raditi s Windows Server 2008 R2 (koji se, podsjećam, događa samo u 64-bitnom izdanju), no ova je tehnika prikladna za Windows 7 x64 i Vista x64.
Vratimo li se pozadini problema, podsjetimo da je Microsoft odlučio da u 64-bitnim sustavima, počevši od sustava Windows Vista, Windows učitava upravljačke programe u kernel modusu samo ako je upravljački program digitalno potpisan. Ako upravljački program nema digitalni potpis, tada se kritična pogreška pojavljuje kada se sustav pokrene (ovisi o vrsti upravljačkog programa čije je punjenje blokirano) i pojavi se BSOD ekran. Specifična pogreška i njezin kôd ovise o konkretnom pokretaču koji je blokiran tijekom postupka dizanja. Neke pogreške upravo na zaslonu BSOD mogu upućivati na nepotpisanu datoteku s upravljačkim programima.
U mom slučaju se nakon ažuriranja upravljačkih programa na Windows 2008 r2 poslužitelju tijekom normalnog pokretanja stroja pojavio plavi ekran smrti s tekstom:
STOP: c000021a (kobna pogreška sustava)
Početni proces sesije ili proces sustava neočekivano je završio sa statusom 0x00000000 (0xc000428 0x00100448). Sustav je isključen
Pokušajmo otkriti o kakvoj se pogrešci radi, koji je vozač to uzrokuje, a mi ćemo odrediti konkretni uređaj od strane vozača.
Za dešifriranje pogreške potreban nam je drugi parametar (istaknut je podebljano) - 0xc000428.
Pretvorite šesterokutni kôd pogreške u čitljiviji oblik. Da biste to učinili, možete koristiti ugrađeni uslužni program u sustavu Windows SLUI.EXE ili se podudaraju s kodom pogreške u datoteci ntstatus.h, koji se mogu naći u Windows SDK-u. Koristit ćemo prvu metodu za koju ćemo izvršiti u naredbenom retku:
slui.exe 0x2a 0xC0000428
Kao što možete vidjeti na snimci zaslona, uvjerili smo se da je BSOD uzrokovan nemogućnošću provjere digitalnog potpisa vozača ("Windows ne mogu provjeriti digitalni potpis za ovo datoteka„)
Ponovno pokrećemo svoje računalo i pri pokretanju pritisnite tipku F8. U izborniku Napredne mogućnosti pokretanja onemogućite provjeru digitalnog potpisa izboromOnemogući vozač potpis Izvršenje .
U slučaju da se u ovom načinu poslužitelj pokrene, sigurni smo da neki nepotpisani modul ili upravljački program ne dopušta normalno pokretanje sustava.
Sljedeći je korak identifikacija problematičnog modula ili datoteke upravljačkog programa. Otvorite dnevnik događaja konzole (Preglednik događaja) i idite na Dnevnici aplikacija i usluga -> Microsoft -> Windows -> CodeIntegrity -> Operativni.
Napomena: ako pri pristupu zapisnicima u ovoj grani dođe do pogreške "pristup odbijen ", stvoriti na disku c: direktorij pružanjem grupe Svima pun pristup. Zatim promijenite putanju datoteke ETL prebacite u novu mapu i isključite i ponovo uključite prijavu.
U mom slučaju se u dnevniku s tekstom nalazi događaj EventID 3001 "Integritet koda utvrdio je da se nepotpisani modul kernel \ Device \ HarddiskVolume1 \ Windows \ System32 \ win32k.sys učitava u sustav. Provjerite kod izdavača da li je dostupna potpisana inačica kernel modula". Stoga smo pronašli pokretački problem!
Ovaj vozač može biti izvorni Microsoftov upravljački program ili upravljački program treće strane. Obavezno provjerite je li ovaj vozač zaista nema digitalni potpis. Da bismo to učinili, potreban nam je program Sysinternalsa pod nazivom SIGCHECK.EXE (možete ga preuzeti ovdje http: //TechNet.Microsoft.com /hr-nas /sysinternals /bb897441).
Provjera prisutnosti digitalnog potpisa vrši se naredbom:
c: \ ALATI> sigcheck.exe -i c: \ Windows \ System32 \ win32k.sys
Ako nema potpisa, tada će u polju Ovjereno biti označeno Upisano (u suprotnom Potpisano u skladu s tim).
Imamo dvije mogućnosti za rješenje problema nemogućnosti normalnog pokretanja sustava s nepotpisanim pokretačkim programom:
- Pronađite potpisanu verziju upravljačkog programa
- Odbijte upotrebu ovog upravljačkog programa (i uređaja)
- onemogući provjeru digitalnog potpisa upravljačkog programa u sustavu Windows
Treća opcija možda neće raditi iz jednog ili drugog razloga. U prva dva slučaja trebamo utvrditi kojemu konkretnom uređaju pripada današnja datoteka .sys..
Kako odrediti uređaj, znajući samo naziv sys datoteke? Koristim sljedeću metodologiju (trebamo identificirati uređaj čiji se pogonitelj zove HpCISSs2.sys):
1) Otvorite uređivač registra i potražite podružnicu HKEY_LOAL_MACHINE \ SYSTEM \ ControlSet001 tražite ključ sa vrijednošću HpCISSs2.sys
2) U mom slučaju pronađena je u podružnici HKEY_LOAL_MACHINE \ SYSTEM \ ControlSet001 \ usluge \ HpCISSs2
3) Gnijezdeću granu proširujemo imenom ENUM, zanima nas ključna vrijednost 0, u mom slučaju to je PCI \ VEN_103C& DEV_3230& SUBSYS_3235103C & REV_01 \ 4 & 3b416f2c & 0 & 0018
4) Utvrđujemo da proizvođač uređaja ima ID 103C, a kod uređaja 3230
5) Nadalje na mjestu navedite u poljima Pretraživanje dobavljača i Uređaj Pretražite kodove koje smo pronašli.
6) Shvaćamo da je uređaj koji tražimo kontroler tvrdog diska HP Smart Array P400 Controller.
Moramo pronaći novu verziju upravljačkog programa na web mjestu proizvođača opreme (pažljivo potražite za koje verzije OS-a je pogodan upravljački program) i ažurirajte upravljački program na računalu.