Jump to content

Проблем с повредени файлове при зареждане на WinXP


azxc33

Препоръчан пост

Здравейте. Имам следният въпрос, ако някой знае от какво може да е.

Много често на различни машини ми се е случвал проблема да се появят съобщения от типа: "Missing files: Ntldr..." и прочее или "Missing files: Ntoskrnl.exe".

И в двата случая е било след механичен досег до вътрешността: почистване на машината от прах и мръсотия или добавяне на нов храд диск, или памет. В общия случай съобщението излиза веднага, но е имало варианти да стане след 1 или 2 рестарта (по време, на които ОС е работила нормално).

За първото съобщение: "Ntldr..." е имало случаи да се оправи след копирането на въпросните файлове от стартиращ диск, но в повечето решението е било преинсталация на Windows-а. За второто съобщение лека е бил винаги преинсталация. Пробвал съм различни техники описващи решението на тези проблеми през "Recovery Console"-ата, но не ставаше.

Въпросът ми е ако някой се е сблъсквал с такива проблеми и се е справял по интелигентен и бърз начин, нека сподели. а още повече пък, ако знае защо се появяват изобщо? Дали се дължи на лоши сектори? В повечето случаи са били дискове на по 1 година, и след преинсталацията си карат и досега без проблем (3-4 години).

Ще чакам с интерес, ако някой има инфо по въпроса и може да ме "светне" с нещо, което би ми улеснило живота много.

Поздрави на всички.

Link to comment
Сподели другаде

В общия случай можеш да потърсиш софтуер за диагностика от страницата на производителя на съответното устройство. С негова помощ можеш да установиш наличието или отсъствието на физически лоши сектори. Друг вариант е да следиш S. M. A. R. T. показателите и при влошаване на състоянието на устройството да вземеш съответните мерки за запазване на информацията.

Причините за тези проблеми (като изключим възможните сривове на ОС и действията на потребителите), обикновено са непостоянни или неподходящи (твърде високи или твърде ниски) захранващи напрежения, вибрации и висока работна температура на устройството.

Твърдението ти, че проблемите се проявяват обикновено след интервенция в системата, подсказва още една възможна причина: некачествени кабели или некачествени/износени накрайници на кабелите.

Link to comment
Сподели другаде

Здравей Krasi!

Съобщения от рода на "NTLDR is missing", "NTLDR is compressed" или "A disk read error occurred" най-често се визуализират, когато има проблем със сектора за начално зареждане на операционната система (т.нар. Boot Sector). Това е нормално, защото Boot Sector-а зарежда и инициализира файла NTLDR, който е един от най-важните компоненти при зареждането на операционната система. Причините за повредата на сектора за начално зареждане могат да бъдат както грешки по твърдия диск, така и повреда в резултат от бъг в драйвер или вирус. Ако проблема не е хадуерен (т.е физически проблем с твърдия диск) най-често се решава чрез изпълнение на командата fixboot в Recovery Console. Преди това добра идея е да се пусне един chkdsk. Възможно е на този етап от последователността на начално зареждане да се визуализират и други съобщения в резултат от повреда на MBR или Boot.ini. Написах за Boot Sector-а, защото въпроса ти беше свързан с него.

Ако има проблем с някои системен файл най-често се визуализира съобщение "Windows could not start because the following file is missing or corrupt име_на_файла". Друг вариант е да се появи син екран (BSOD). Причината за появата на тези съобщение предполагам е ясна - това са критични файлове, без които операционната система няма как да работи. Специално NTOSKRNL, за който си написал в твоя пост е критичен файл, защото съдържа вътрешната част (горния слой) и ядрото (най-ниския слой в NTOSKRNL) на операционната система. На диска с Windows NT базираните операционни системи има две версии на NTOSKRNL - NTOSKRNL.EXE и NTKRNLMP.exe. Първата е за еднопроцесорни системи, а втората е за многопроцесорни. По време на инсталация на Windows подходящият файл се избира и копира на локалния диск, като и в двата случая файла се нарича NTOSKRNL.exe. Ако няма физически проблем с твърдия диск или друг компонент, може да намериш копие на повечето системни файлове (включително NTOSKRNL) в папката %Systemroot%\System32\DllCache. Чрез Recovery Console лесно може да възстановиш системата, като копираш читавото копие от DLLCache в System32. Също за целта може да използваш и live cd като BartPE, Windows PE, UBCD и тн. Това важи не само за NTOSKRNL, а и за всички други системни файлове. Също така е възможно проблем с някои файл на системния регистър на Windows (файловете от папката %Systemroot%\system32\config) да причини подобна грешка. В такъв случай може да вземеш актуално копие на някои от тези файлове от папката System Volume Information, която се поддържа от System Restore. За целта System Restore трябва да е бил активиран на дяла, който съдържа Windows. Друг вариант, но не толкова добър е да се използва папката %Systemroot%\Repair. Проблема е, че тези копия на файловете на регистъра няма да са актуални, докато чрез папката System Volume Information може да вземеш съвсем актуално копие на дадения файл. Копирането на файлове от папката System Volume Information може да стане отново чрез Recovery Console или чрез live cd. Лично на мен ми се струва по-лесен варианта чрез live cd. Имай предвид, че файловете от папката на System Restore функцията трябва да се преименуват преди да се копират в %Systemroot%\system32\config. Ако те интересуват тези неща пиши ми, за да ти отговоря подробно.

Общо взето често подобни проблеми се случват в резлутат от хардуерен проблем - повреден твърд диск, дефектен RAM, прекалено агресивни настройки в BIOS на паметта (тайминги и честота) и тн. Добра идея е хардуера да се тества - особено паметта например чрез Memtest и твърдия диск чрез софтуера за тест на производителя. Също така е добре да се прави backup на регистъра и други важни файлове, за да може по-късно, ако се случи проблем например с липсващ или повреден файл на регистъра да имаш негово актуално копие. Най-добрия вариант е след инсталация и конфигуриране на операционната системa и приложенията да се направи пълен backup на системата чрез дисково изображение (image файл). За целта може да използваш софтуер като Acronis True Image или Norton Ghost. Може да прочетеш и темите Ръководство за работа с Acronis True Image и Ръководство: Norton Ghost.

Link to comment
Сподели другаде

Първо искам да изкажа благодарност за бързите и наистина съдържателни отговори, особено на l.kanelov. В отговорите наистина намирам неща, върху които не съм се замислял, а повечето не ги знаех. За частта с пипането на тайминги и настройки в BIOS-а наистина не съм предполагал, че може да доведе до системен срив, но... неведоми са пътищата електронни :cooldude:.

Нека карам подред: относно пускане на fixboot и chkdsk. В някои случаи тези функции помагат, но за съжаление не винаги :'( .

Към l.kanelov:

Имай предвид, че файловете от папката на System Restore функцията трябва да се преименуват преди да се копират в %Systemroot%\system32\config. Ако те интересуват тези неща пиши ми, за да ти отговоря подробно....
Наистина бих желал да узная повече за "Recovery Console"-та, т.к. много пъти съм се опитвал да правя неща през нея, но безуспешно. Също при работа с LiveCD-та повечето не са ми давали write права (не знам защо).

А относно създаването на Image file след настройка на системата - това е нещо което правя от доста време на всяка машина, с която съм имал взимане-даване. Но има и такива, които не са били при мен, но идват с въпросните проблеми.

Още веднъж благодаря за добрата информация,

Поздрави.

Link to comment
Сподели другаде

Наистина бих желал да узная повече за "Recovery Console"-та, т.к. много пъти съм се опитвал да правя неща през нея, но безуспешно. Също при работа с LiveCD-та повечето не са ми давали write права (не знам защо).

 

Recovery Console представлява команден интерпретатор в текстов режим, който се използва за поправка на операционната система. Може да се зарежда от CD-тата на Windows 2000, XP, Server 2003 или да се инсталира на твърдия диск и да се добави като опция за начално зареждане. За съжаление Recovery Console има някои недостатъци като например:

  • Липсва графичен потребителски интерфейс (GUI).
  • Трябва да влезеш в системата чрез паролата на акаунта Administrator*.
  • Стандартно достъпа е ограничен само до системни папки*.
  • Не поддържа мрежа и редактиране на системния регистър.

 

***

Може да конфигурираш системата, така че когато заредиш Recovery Console да те включва автоматично и да имаш достъп до всички устройства и папки. Това може да стане като отвориш Start --> RUN и напишеш secpol.msc. Отиваш на Local Policies --> Security Options. Като превъртиш списъка ще откриеш две настройки, които дефинират поведението на Recovery Console. И двете приемат само две стойности - Enabled и Disabled. Ако поставиш Enabled на първата опция (Allow automatic administrative logon) при зареждане на RC, няма да ти бъде искана паролата за акаунта Administrator. Ако разрешиш и втората опция (Allow floppy copy and access to all drives and all folders) чрез RC ще имаш достъп до всички устройства и папки.

 

***

 

Може да инсталираш Recovery Console на твърдия диск и така при всяко стартиране системата ще визуализра екрана за избор на OS и там ще имаш възможност да избереш Rеcovery Console. Това може да стане като поставиш компакт-диска на Windows в оптичното устройство и отвориш диалоговия прозорец RUN от Start менюто (или Windows key + R). Там пишеш X:\i386\winnt32 /cmdcons (където X е буквата зададена на оптичното устройство). След това следваш инструкциите на инсталационната програма. Имай предвид, че по време на инсталацията на Recovery Console, инсталационната програма може да се опита да се свърже с Microsoft и да потвърди, че имаш последните ъпдейти от Microsoft. Спокойно може да прекъснеш този процес чрез клавиша Esc и да продължиш инсталацията.

 

След като Recovery Console е стартирана (от компакт-диска на Windows или от твърдия диск) може да изпълняваш различни команди за поправка и диагностика на системата. Има доста такива команди, но ще ти напиша за тези, които са свързани пряко с темата:

 

fixmbr

 

Поправя главния запис за начално зареждане (Master Boot Record). Обикновено в резултат от повреда на MBR се визуализират съобщения от рода на "Invalid Partiton Table", "Error Loading OS" или "Missing OS". Друг вариант е системата да увисне на черен екран. MBR най-често се поврежда от грешки по твърдия диск, бъг в драйвер или вирус. Имай предвид, че тази команда презаписва само кода в MBR, а не поправя таблицата с дяловете.

 

fixboot

 

Тази команда празаписва сектора за начално зареждане на операционанта система, за който писах в предишното мнение.

 

bootcfg /rebuild

 

Тази команда се използва, ако има проблем с файла Boot.ini, който също е доста важен за процеса на начално зареждане. NTLDR използва информацията от този файл, за да покаже екрана за избор на операционна система, която да бъде стартирана. Също така Boot.ini съдържа ARC пътища, който посочват дяла за начално зареждане на системата. Ако Boot.ini е повреден / изтрит по някаква причина или вече не съдържа актуална информация за дяла за начално зареждане най-често се визуализират грешки от рода на "Windows could not start because of a computer disk hardware configuration problem", "Could not read from selected boot disk" или "Check boot path and disk hardware".

 

Относно повредените системни файлове като NTOSKRNL, HAL и др. вече писах в предишното мнение. Може да вземеш тяхно копие от %Systemroot%\System32\DllCache и чрез командата Copy на Recovery Console да ги копираш в %Systemroot%\System32.

 

Нещата седят малко по-различно, когато става въпрос за повреден файл на системния регистър. Системния регистър е изключително важен компонент за операционната система. Той осигурява и информация за инициализиране на ядрото, за да се извърши процеса на стартиране на OS. Когато някои от файловете му е повреден, системата визуализира грешка за липсващ / повреден файл от папката %Systemroot%\System32\config. Системата създава backup на тези файлове при инсталация и ги запазва в папката %Systemroot%\Repair. Но в общия случай е минало доста време след инсталацията, когато проблема се е появил и тези файлове вече не съдържат актуална информация. Решението е да се използва ръчно създаден backup на тези файлове или ако нямаш такъв да използваш копията направени от функцията System Restore (ако е била разрешена), които се съхраняват в папката System Volume Information на дадения дял. Процедурата е следната:

 

1. Чрез Recovery Console или някое live cd влизаш в папката System Volume Information.

2. Влизаш в папката, на която името започва с "_restore{xxx}".

3. Вътре ще откриеш папки, които започват с името "RP<някакъв номер>"

4. Влизаш в папката с най-голям номер след "RP".

5. Вътре ще откриеш папка "snapshot", която съдържа актуални копия на всичките файлове на системния регистър.

 

http://img146.imageshack.us/img146/7497/snapshotfldrrf8.png

 

Имената им са подобни на следните "_REGISTRY_MACHINE_SAM", "_REGISTRY_MACHINE_SYSTEM" и тн. В зависимост от проблема, който имаш избираш подходящия файл. След това чрез командата ren на Recovery Console го преименуваш, така че да съответства на файл от папката %Systemroot%\System32\config. Ето един пример:

_REGISTRY_MACHINE_SAM ==> SAM

_REGISTRY_MACHINE_SECURITY ==> SECURITY

_REGISTRY_MACHINE_SOFTWARE ==>SOFTWARE

_REGISTRY_MACHINE_SYSTEM ==> SYSTEM

_REGISTRY_USER_.DEFAULT ==> DEFAULT

За да преименуваш например _REGISTRY_MACHINE_SYSTEM на System трябва да въведеш следното "ren _REGISTRY_MACHINE_SYSTEM system". След това само копираш въпросния файл в %Systemroot%\System32\config и рестартираш.

Тази операция става значително по-лесно чрез използването на live cd. Аз лично използвам live cd на базата на UBCD4Win и съм доволен. Тук може да прочетеш много добро ръководство как да си създадеш такова CD.

Поздрави! :thumbsup:

Link to comment
Сподели другаде

Нямам думи! :yes:

Отговора е повече от това, което съм очаквал. Много благодаря. Всички тези неща, ако съм ги знаел, толкова много нерви и време щяха да ми спестят, но нейсе. По-добре късно, отколкото никога. Човек се учи цял живот.

Още веднъж огромни благодарности на l.kanelov за тези изчерпателни отговори. Всяка една възможност ще я пробвам, защото когато "настане следващата битка", трябва да съм подготвен :).

 

БЛАГОДАРЯ!

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...