Не вдається запустити windows за ntoskrnl



Що робити, якщо при завантаженні Ви бачите повідомлення: Не вдається запустити Windows зіпсованого або відсутнього файлу: windows root\system32\ntoskrnl.exe ?




Сьогодні ми спробуємо відповісти на це питання. Насамперед, що таке є файл ntoskrnl.exe? Його назву можна розкласти на кілька складових: NT, OS kernel - «ядро операційної системи NT»). В даному випадку - файл ядра операційних систем сімейства Windows NT. Даний файл запускається завантажувачем ядра (NTLDR) у безпечному режимі. Також він цікавий тим, що містить у собі картинку, яку ми бачимо при завантаженні Windows (boot screen).

Примітка: Компанія Microsoft розшифровує абревіатуру NT як «New Technology» (нова технологія). По ній випускаються всі ОС починаючи з Windows 2000.

Файл ntoskrnl.exe розташовується відразу в декількох місцях ОС (стандартна практика Microsoft). У більш пізніх версіях операційних систем такий підхід дозволяє достатньо ефективно проводити автоматичне відновлення завантаження системи при її пошкодженні. Але - про все по порядку!

Давайте проведемо пошук по каталогу Windows:




Бачимо, що файл ядра операційної системи знаходиться в двох різних директоріях.

У сімействі ОС Windows розрізняють чотири версії файлів ядра:

  • ntoskrnl.exe - однопроцессорное ядро
  • ntkrnlmp.exe (NT Kernel Multi-Processor version) - ядро ОС NT з підтримкою декількох процесорів
  • ntkrnlpa.exe - однопроцессорное ядро з більш ніж трьома гігабайтами оперативної пам'яті (режим PAE - Physical Address Extension)
  • ntkrpamp.exe - багатопроцесорне ядро з більш ніж трьома гігабайтами оперативної пам'яті

  • У звичайній Windows XP для однопроцесорних систем можна зайти за адресою: c:\\windows\system32 і переконатися в цьому самому.




    На одному з етапів завантаження ОС, її завантажувач (в даному випадку - NTLDR) викликає і передає управління системного процесу ядра Ntoskrnl. Процес Ntoskrnl.exe ініціалізує підсистему завантаження і запуск системних драйверів для пристроїв, а також готує операційну систему для роботи з прикладними програмами і додатками.

    Частиною коду, що виконується в режимі ядра, є рівень апаратних абстракцій (HAL - Hardware Abstraction Layer),

    Код ядра ОС працює в найбільш привілейованому режимі роботи процесора. Цей режим роботи часто називають «нульовим кільцем захисту» (Ring 0). У x86-х процесорах подібний рівень привілеїв надає необмежений доступ до всіх можливостей процесора, дозволяє прямо звертатися до периферії і апаратних ресурсів всього комп'ютера.

    Різні віруси (мережеві черв'яки і руткіти) прагнуть отримати доступ до ядру, щоб "дотягнутися" до системних функцій, що працюють з пам'яттю, файлами, мережевими з'єднаннями і процесами на самому низькому рівні. При їх перехопленні, можна надійно замаскувати свою присутність в системі або виконати інше.

    Сам факт втручання в ядро легко виявляється порівнянням способу ntoskrnl.exe, постійно знаходяться в оперативній пам'яті, з файлом, розташованих на жорсткому диску комп'ютера за адресою c:\\windows\system32\ntoskrnl.exe




    Є простий спосіб переконатися в цьому: видаліть файл ntoskrnl.exe (його копію - можете теж) і побачите, як через 10-20 секунд він автоматично з'явиться на тому ж самому місці! Він скопіюється на вінчестер прямо з оперативної пам'яті.

    У Вас може виникнути питання: навіщо файл ntoskrnl.exe взагалі тримати на диску, якщо його копія постійно знаходиться в ПАМ'ЯТІ комп'ютера? А потім, що ця копія повинна спочатку записатися в пам'ять при старті системи. Оперативна пам'ять - енергозалежна (після кожного вимкнення її вміст обнуляється), от і виходить, що файл на диску, потрібен саме для того, щоб рахувати з нього інформацію в пам'ять. А його образ у пам'яті гарантує те, що файл на диску не буде видалений, або модифікований зловмисником під час роботи системи. Ось така виходить "кругова порука" :)

    Давайте переконаємося в тому, що файл ntoskrnl.exe дійсно постійно присутня в пам'яті у вигляді окремого процесу. Це добре видно на прикладі Windows 7.

    Запустимо диспетчер завдань і зліва внизу зазначимо галочкою пункт "Відображати процеси всіх користувачів". Після цього у колонці "Ім'я образу" (процесу) ми побачимо запис "System" і в полі його опису - "NT Kernel & System":




    Підемо далі! Натиснемо на меню "Вид" і в розкрився списку відзначимо пункт "Вибрати стовпці". З'явиться вікно, в якому ми можемо вказати додаткові поля з даними, які можуть відображатися в диспетчері завдань Windows.




    Відзначаємо галочкою пункт "Шлях до образу" (процесу). Повертаємося в диспетчер і бачимо, що в ньому з'явився додатковий стовпець "Пут до образу", з якого чітко видно, що процесом "System" є файл ntoskrnl.exe, що знаходиться за адресою c:\\windows\system32




    Причому, якщо ми спробуємо примусово завершити цей процес, то у нас це не вийде.

    Незважаючи на все перераховане вище, на практиці досить часто зустрічаються випадки коли ми бачимо при завантаженні напис: Не вдається запустити Windows зіпсованого або відсутнього файлу : windows root\system32\ntoskrnl.exe

    Грунтуючись на своєму особистому досвіді, можу сказати наступне: ця помилка часто виникає при проблемах з жорстким диском комп'ютера. Або після того, як диск переподлючали або - додавали в систему новий. Коротше кажучи, - проводилися якісь маніпуляції з фізичними носіями.

    Перелічимо найбільш поширені причини несправності:

  • помилки файлової системи вінчестера (перевіряти командою chkdsk)
  • некоректне завершення роботи (раптове відключення електроенергії)
  • виникнення збійних секторів на диску

  • Після того, як ми переконаємося що з дисковою підсистемою все в порядку, можна приступати до відновлення файлу ntoskrnl.

    Для цього нам знадобиться звичайний інсталяційний диск Windows XP (2000) і трохи удачі! :) Отже, в bios виставляємо з нього завантаження і перезавантажуємося. Якщо все зробили правильно, побачимо, що запустився майстер установки Windows:




    Нам потрібно дочекатися коли з'явиться наступне вікно з пропозицією вибору опції відновлення системи:




    Натискаємо клавішу «R» і потрапляємо в консоль відновлення (про те, що це таке ми говорили в попередніх статтях). Тут нас запитають: в яку копію операційної системи ми хочемо виконати вхід? Якщо ОС у нас на комп'ютері одна, то натискаємо клавішу «1» і - введення (Enter).

    Після цього, з'явиться текстове запрошення ввести пароль адміністратора встановленої системи. Вводимо пароль і знову натискаємо Enter (якщо пароль не було - відразу введення). Після цього, з'явиться запрошення для введення консольних команд: C:\\WINDOWS> , яке свідчить про те, що ми успішно увійшли в консоль і можемо приступити до відновлення файлу ntoskrnl.exe.




    Після цього нам потрібно написати всього одну команду:
    expand d:\i386\ntoskrnl.ex_ c:\windows\system32




    Буквою «d» у нас тут позначений привід оптичних дисків. Якщо у Вас по іншому, - просто підставте в рядок свою букву диска. Що є команда «expand» і яку роль виконує, ми з Вами розбирали в цій статті. Якщо коротко, то суть її зводиться до наступного: розпакувати файл ntoskrnl.exe з оптичного диска і записати в системну папку Windows.

    Після набору команди, натискаємо клавішу «Enter» і якщо все зробили правильно, нас запитають чи ми хочемо замінити вже існуючий на вінчестері файл ntoskrnl.exe новим (з оптичного диска)? Погоджуємося на заміну (вводимо з клавіатури «y») і натискаємо Enter. Бачимо повідомлення про те, що 1 файл успішно скопійований (розпакований).

    Тепер можна виходити з консолі: вводимо команду «exit» (вихід) і комп'ютер піде на перезавантаження. Не забуваємо в bios-і назад виставити завантаження з жорсткого диска і після ще одного ребут бачимо, що завантаження Windows успішно відновлено!




    У Windows 7 відновити файл ntoskrnl.exe простіше. Точніше, там особисто нам взагалі нічого робити не доведеться! :) В нових версіях Windows присутня система автоматичного відновлення завантаження і працездатності ОС.

    Давайте для початку подивимося на файли наших ядер в системній директорії:




    Як бачите, у нас їх тут два. Оскільки у мене на комп'ютері більше трьох гігабайт оперативної пам'яті, то, в моєму випадку, Windows використовує файл ядра ntkrnlpa.exe.

    Давайте зімітуємо проблему з цим файлом. Яким чином? А просто візьмемо видалимо його, перезагрузимся і подивимося що буде? :) Після перезавантаження Windows автоматично запустить середовище відновлення WRE (Windows Recovery Environment) і спробує сама вирішити проблему:




    Знаєте, чудово, звичайно, що WRE намагається робити за нас "брудну роботу", але проблема полягає в тому, що вона абсолютно не показує, що саме робиться для відновлення працездатності системи? Мовляв, ось виправили - радійте!

    Особисто мене, як сам собі адміна, і просто людини, яка хоче зрозуміти, як це працює, такий підхід мало влаштовує. Звичайно, пройшовши всі ті етапи, які описані в цій статті, ми розуміємо, що система просто копіює файл ntoskrnl.exe звідки з "засіків" на його колишнє місце, але погодьтеся, що з подібними нововведеннями кермо правління декілька вислизають з наших трудових адміністраторських рук :)

    Посокрушались і буде! Після, без сумніву, героїчного відновлення файлу ядра, Windows просить нас перезавантажити комп'ютер для застосування виправлень.




    Якщо встигнути натиснути посилання "Відобразити діагностику та виправлення" до того, як закінчиться відлік часу, то нам, так вже і бути, покажуть що приблизно робила Windows Recovery Environment. Прокрутимо повзунок праворуч в самий низ і там знайдемо ось такий напис:




    Що за файл? Яку функцію виконує? - ні слова! Вже відчуваєте незриму присутність "Великого Брата"? :) Як би там не було, після перезавантаження ми побачимо, що все в порядку і Windows відновлена, а це - головне!




    Сподіваюся, що стаття була для Вас корисною? Якщо так, то залиште свій коментар або скористайтесь кнопками внизу.