V tomto článku sa pokúsim opísať metódu diagnostiky problémov s nepodpísanými súbormi ovládačov v x64 bitovej verzii systémov Windows, kvôli ktorej počítač prestane načítavať a pri načítaní spadne na BSOD. Systém sa však dá načítať aj zakázaním overenia digitálneho podpisu pri štarte (F8 -> zakázať vodič podpis vynútenie). Napríklad v tomto článku budem pracovať s Windows Server 2008 R2 (ktorý, spomínam si, môže byť iba v 64-bitovej edícii), ale táto technika je vhodná pre Windows 7 x64 a Vista x64.
Ak sa vrátime na pozadie problému, pripomíname, že Microsoft sa rozhodol, že v 64-bitových systémoch, počnúc systémom Windows Vista, systém Windows načíta ovládače v režime jadra, iba ak je ovládač digitálne podpísaný. Ak ovládač nemá digitálny podpis, potom dôjde k kritickej chybe pri zavedení systému (záleží na type ovládača, ktorého načítanie je zablokované) a objaví sa obrazovka BSOD. Konkrétna chyba a jej kód závisí od konkrétneho ovládača, ktorý je počas procesu zavádzania zablokovaný. Niektoré chyby priamo na obrazovke BSOD môžu naznačovať nepodpísaný súbor ovládača.
V mojom prípade sa po aktualizácii ovládačov na serveri Windows 2008 r2 počas normálneho spustenia počítača objavila modrá obrazovka smrti s textom:
STOP: c000021a (závažná chyba systému)
Proces počiatočnej relácie alebo systémový proces sa neočakávane ukončil stavom 0x00000000 (0xc000428 0x00100448). Systém bol vypnutý
Skúsme zistiť, o aký druh chyby ide, ktorý ovládač ju spôsobuje, a určme konkrétne zariadenie podľa vodiča.
Na dekódovanie chyby je potrebný druhý parameter (zvýraznený tučným písmom). - 0xc000428.
Skonvertujte hexadecimálny chybový kód na čitateľnejšiu formu. Na tento účel môžete použiť vstavaný obslužný program v systéme Windows SLUI.EXE alebo priradiť chybový kód v súbore NTSTATUS.hod, ktoré nájdete v súprave Windows SDK. Použijeme prvú metódu, ktorú vykonáme na príkazovom riadku:
slui.exe 0x2a 0xC0000428
Ako vidíte na snímke obrazovky, boli sme presvedčení, že BSOD je spôsobená neschopnosťou overiť digitálny podpis vodiča („windows nemôžu overiť digitálne podpis pre toto súbor")
Reštartujeme počítač a pri štarte stlačte kláves F8. V ponuke Advanced Boot Options (Rozšírené možnosti zavedenia) zakážte overenie digitálneho podpisu výberomzakázať vodič podpis vynútenie .
V prípade, že v tomto režime server zavedie, sme si istí, že niektorý nepodpísaný modul alebo ovládač neumožňuje normálne zavedenie systému..
Ďalším krokom je identifikácia problémového modulu alebo súboru ovládača. Otvorte denník udalostí konzoly (Zobrazovač udalostí) a prejdite na Denníky aplikácií a služieb -> Microsoft -> Windows -> CodeIntegrity -> Prevádzkové.
Poznámka: ak pri prístupe k protokolom v tejto vetve došlo k chybe “prístup zamietnutý “, vytvorte na disku c: adresár poskytnutím skupiny Všetci majú plný prístup. Potom zmeňte cestu k súboru ETL do nového adresára a vypnite a znova zapnite odhlásenie.
V mojom prípade je v denníku udalosť EventID 3001 s textom „Integrita kódu určila, že do systému sa načíta nepodpísaný modul jadra \ Device \ HarddiskVolume1 \ Windows \ System32 \ win32k.sys. Overte si u vydavateľa, či je k dispozícii podpísaná verzia modulu jadra"Zistili sme problémový ovládač."!
Tento ovládač môže byť buď natívnym ovládačom spoločnosti Microsoft alebo ovládačom tretej strany. Uistite sa, že tento ovládač v skutočnosti nemá digitálny podpis. Na to potrebujeme pomocný program od spoločnosti Sysinternals zvaný SIGCHECK.EXE (môžete ho tu prevziať http: //TechNet.microsoft.sk /en-nás /sysinternals /bb897441).
Overenie prítomnosti digitálneho podpisu sa vykonáva príkazom:
c: \ TOOLS> sigcheck.exe -i c: \ Windows \ System32 \ win32k.sys
Ak nie je podpísaný, potom bude v poli Overené vyznačená položka Nepodpísané (inak príslušne podpísané).
Máme dve možnosti, ako vyriešiť problém nemožnosti normálneho spustenia systému pomocou nepodpísaného ovládača:
- Nájdite podpísanú verziu ovládača
- Odmietnuť používať tento ovládač (a zariadenie)
- zakážte overovanie digitálneho podpisu vodiča v systéme Windows
Tretia možnosť nemusí fungovať z jedného alebo druhého dôvodu. V prvých dvoch prípadoch musíme určiť, ku ktorému konkrétnemu zariadeniu daný súbor ovládača .sys patrí..
Ako zistiť zariadenie, poznať iba názov súboru sys? Používam nasledujúcu metodológiu (musíme identifikovať zariadenie, ktorého vodič sa volá HpCISSs2.sys):
1) Otvorte editor databázy Registry a prehľadajte vetvu HKEY_LOAL_MACHINE \ SYSTEM \ ControlSet001 hľadáte kľúč s hodnotou HpCISSs2.sys
2) V mojom prípade sa zistilo v odbore HKEY_LOAL_MACHINE \ SYSTEM \ ControlSet001 \ services \ HpCISSs2
3) Vnorenú vetvu rozširujeme o názov ENUM, zaujíma nás kľúčová hodnota 0, v mojom prípade je to PCI \ VEN_103C& DEV_3230& SUBSYS_3235103C & REV_01 \ 4 & 3b416f2c & 0 & 0018
4) Zistili sme, že výrobca zariadenia má ID 103C a kód zariadenia je 3230
5) Ďalej na mieste v poliach Vyhľadávanie dodávateľa a Vyhľadávanie zariadenia zadajte kódy, ktoré sme našli.
6) Zistili sme, že hľadané zariadenie je ovládač pevného disku HP Smart Array P400.
Musíme iba nájsť novú verziu ovládača na webovej stránke výrobcu zariadenia (pozorne vyhľadajte, ktoré verzie OS je vhodný ovládač, ktorý potrebujete) a aktualizujte ovládač v počítači.