HAL.dll відсутній або пошкоджений



Ви коли-небудь спостерігали при завантаженні комп'ютера напис, яка б говорила про те, що файл hal.dll відсутній або пошкоджений? Якщо - "так" і Ви хочете навчитися самостійно усувати цю проблему, то ця стаття допоможе Вам в цьому.

Для наочності, відсутній файл hal.dll ми організуємо собі самі. Я зайду по дорозі C:\Windows\system32 (туди, де він і розташовується) і просто видалю його з системній директорії. Перезагрузимся.

Після цього система повідомить нам, що файл hal.dll відсутній або пошкоджений. Чудово! :) Ось як виглядає подібна напис:


HAL.dll отсутствует или поврежден

Природно, після цього - система запускається, оскільки її завантаження пошкоджена, і повторний рестарт нічого не дає.

Процедура "лікування" полягає в тому, що пошкоджений або відсутній файл hal.dll досить легко повертається на своє місце з допомогою консолі відновлення Windows. І нижче ми докладно розберемо цей момент.

Але поки що давайте нагадаємо собі, що ж таке цей файл «hal» і що таке «dll»?

Що таке HAL ?

HAL - Hardware Abstraction Layer - рівень (шар апаратних абстракцій. Це - шар програмного коду, який приховує (абстрагує) нюанси апаратної реалізації компонентів комп'ютера (його "заліза") від верхніх рівнів операційної системи і прикладних програм, що запускаються її користувачем.

Це - своєрідне проміжне ланка між програмним забезпеченням і апаратурою. Воно, наприклад, дозволяє розробнику програми звертатися до різних функцій пристрою, не знаючи його марку, модель та нюанси роботи.

Операційні системи, у яких якісно реалізований рівень апаратних абстракцій, можуть бути легко перенесені (портіровани) на різне обладнання (банкомати, планшети, телефони і т. д.) Шар HAL як би віртуалізує все апаратне обладнання платформи, тому драйвери пристроїв також можуть бути перенесені з мінімальними змінами.

Давайте позначимо місце рівня апаратних абстракцій в ієрархії взаємодії програм і комп'ютерних комплектуючих. Розглянемо на прикладі відеокарти і програми, яка її використовує (наприклад - комп'ютерна гра).


Зачем нужен HAL.dll

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

Примітка: «Direct3D» - компонент інтерфейсу програмування додатків, що працюють з графікою.

Тепер давайте поміркуємо про те, що ж таке є друга частина нашого файлу - компонент «DLL».


Що таке DLL ?

Абревіатура перекладається так - DLL (dynamic link library - клієнтська бібліотека). Це - автономний блок виконуваного коду програми, який підключається до неї в міру необхідності. Причому одна і та ж dll, вже завантажена в оперативну пам'ять, може бути багато разів використана різними програмними додатками, не створюючи її додаткові копії і економлячи ресурси комп'ютера.

Динамічно підключаються бібліотек - дуже зручне рішення, яке дозволило програмістам (нарешті-то :) ) кожен раз заново не "винаходити велосипед". Тепер можна якось написаний ділянку виконуваного коду помістити в dll і багаторазово використовувати її у своїх майбутніх проектах. З часом можна, наприклад, просто оновити версії бібліотек, додавши, таким чином, необхідний функціонал в програму.

Давайте розглянемо викладене вище прикладі: запустимо текстовий редактор (наприклад, Microsoft Word або Open Office) і подивимося скільки часу піде на його завантаження? Тепер - повністю закриємо його. І - знову запустимо. Вдруге він відкриється дуже швидко. Чому це відбувається? Тому що після закриття програми його динамічні бібліотеки (dll-ки) не вивантажуються з оперативної пам'яті (це відбувається тільки при її крайньої нестачі), а кешируются в ній. Звідси - швидкий повторний запуск редактора.

З філософської точки зору, різниця між dll-і exe файлом - не велика. Просто перший не може бути запущений автономно. Динамічні бібліотеки, включаючись в роботу в міру необхідності, надають додатком додаткову функціональність, яку запитує користувач.

Можна створити програму (той же MS Word) і без використання бібліотек (у вигляді одного виконуваного «exe файлу). Чим це може нам зашкодити? Просто тоді він буде завантажуватися дуже довго. Адже це не просто редактор тексту, а - багатомодульна структура, в яку входить конструктор діаграм, редактор формул, модуль перевірки орфографії, інструмент роботи з графікою і т. д.

Ці чудові можливості не потрібні користувачу все і відразу (завантажені в пам'ять одним виконуваним файлом), вони підключаються по мірі необхідності, у вигляді dll бібліотек. Таким чином загальна швидкість завантаження програми різко скорочується.

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

HAL.dll відсутній або пошкоджений

З необхідної теорією закінчили, повертаємося до практики! Тепер ми розуміємо, коли даний файл відсутній це - не є добре. Мало того, операційна система просто не запуститься і видасть нам негарну напис наступного змісту: "не вдається запустити windows за зіпсованого або відсутнього файлу hal.dll".

Нам потрібно за допомогою консолі відновлення виправити ситуація. Саму роботу з консоллю я описувати не буду (ми розбирали її у попередній статті), але покажемо весь процес з самого початку.

Беремо настановний диск з Windows XP або 2000), в BIOS виставляємо з нього завантаження і перевантажуємося. Уважно поспостерігавши за початковим процесом ініціалізації, ми можемо побачити ось таку цікаву напис внизу вікна:


Загрузка HAL.dll

Як бачите, операційна система завантажує HAL ще до початку своєї установки.

Але не відволікаємося, а - просуваємося! :) Входимо в консоль відновлення, натиснувши клавішу «R» у відповідному вікні установника.


Консоль восстановления Windows XP

Оскільки файл hal.dll відсутній або пошкоджений, то нам необхідно замінити його на такий же, але справної копією.

Де його взяти? Один із способів - зайти на дуже корисний сайт: dll точка ru. Там буквально за алфавітом відсортовані різні динамічні бібліотеки, які нам можуть знадобитися для відновлення системи. Можна прямо звідти завантажити будь-яку і підставити замість відсутнього або пошкодженого.

Але ж ми - ідейні адміністратори! Ми таким легким способом користуватися не станемо, а "чесно" відновимо Windows, отримавши додатковий досвід і підтвердивши своє право називатися такими :)

Нам треба міркувати приблизно так: оскільки з інсталяційного диска проводилася інсталяція всіх компонентів операційної системи, то, швидше за все, і відсутній файл hal.dll там і знаходиться. І його прямо звідти можна скопіювати.

Перевіримо це припущення. Перейдемо в консолі відновлення на наш DVD-Rom оптичний привід в директорію установки Windows (I386) і виконаємо команду огляду її вмісту - «dir».



Примітка: у мене диск має букву «D», у Вас - може бути по іншому. Також можете ввести команду у форматі «dir /p» (без лапок). Це дозволить "перегортати" вміст директорії по одному екрану за одне натискання будь-якої клавіші.

В її надрах знаходимо те, що нам потрібно:


Работа в консоли восстановления

Як бачимо, назва файлу має вигляд: HAL.DL_ (не DLL). Чому? Це - запакований cab-архів (Windows Cabinet File), подібний тип архівів часто використовується для установки на жорсткий диск комп'ютера компонентів самої ОС від Microsoft і набору драйверів до неї.

Для його розпакування ми з успіхом можемо використовувати команду «expand», яка застосовується самої ОС.

Примітка: для того, щоб побачити всі можливості щодо використання тієї чи іншої консольної команди, наберіть її, поставте пробіл, потім - правий слеш і знак питання.


Дополнительные ключи команд консоли

На скріншоти вище Ви можете бачити усі доступні параметри (ключі) з якими може запускатися дана команда.

Розпакувати і скопіювати по потрібному шляху наш файл hal.dll ми можемо тепер буквально в одну командну строчку:
expand d:\i386\hal.dl_ c:\windows\system32 Природно, замість «d» підставляєте букву диска свого оптичного приводу.


Восстановление файла HAL.dll

Розглянемо сам формат набору. Розпакувати (expand) звідки - диск «d» папка «i386» - файл «hal.dl_» - куди: диск «c», папка «windows» і в ній - «system32» (саме туди, де повинен знаходитися файл).

Перевіримо результат наших праць. Зайдемо по дорозі: C:\Windows\system32 і, застосувавши команду «dir /p», пошукаємо скопійований файл нами hal.dll


Файл HAL.dll скопирован на диск

Як бачите, він - на своєму місці. Тепер - перезагрузимся і подивимося на загальний результат.


Загрузка Windows восстановлена

Як бачите - операційна система успішно завантажується. Наша місія виконана!

Тепер - кілька слів про те, з якої причини, власне, може бути пошкоджений або взагалі відсутній даний системний файл? Тут є кілька причин:

  • комп'ютерний вірус
  • збійні сектори на жорсткому диску
  • невдале зміна конфігурації обладнання
  • Отже, друзі, ми успішно вирішили проблему, коли hal.dll відсутній або пошкоджений і тепер можемо по праву пишатися собою! Ми - самі собі адміни ! :)