본문 바로가기

Windows Platform

부팅 오류 - NTDETECT가 실패했습니다.(Ntdetect failed)

Windows Server 2003 x86 + SP2 환경의 서버에서 특정 작업을 한 후 시스템을 재 시작 하였는데 아래와 같은 오류로 시스템이 재 시작 되지 않는 현상이 발생 했습니다.

한 3년 전 쯤에도 Ntldr is missing 오류가 발생 한 적이 있고  복구가 늦어져 인생의 쓴맛을 본 저로서는 이번에 발생한 아래 오류를  조치 하면서 많은 것을 생각하게 되었습니다. 특히나  정리가 중요성... ㅋㅋ
  

[증 상]

특정 작업 후 시스템을 재 시작하였으나 Ntdetect failed 메시지와 함께 부팅이 실패 됨

 

[원 인]
Ntdetect.com  파일이 삭제(?) 되어 부팅이 실패 됨
=>
해당 파일의 삭제 되었다고 단정 짓는 이유는 복구 콘솔로 부팅 후 플로피 디스크에 미리 copy 해 둔 Windows booting 파일 중 Ntdetect.com 파일을 문제 발생한 서버로 copy 시 overwrite 메시지가 나오지 않았기 때문입니다.
Ntldr 파일의 경우 copy 시도 시 overwrite 메시지가 발생 하였음.

실제 해당 서버의 파일이 왜 손상 되었는지는 확인이 어렵지만 Windows 부팅 파일이 손상되거나 제거 되는 일반적인 원인은 하드웨어 오류에 의한 파일 손상의 의해서 일 수 있으며 백신 프로그램 또는 바이러스 프로그램에 의해 OS가 실행 중에 제거된 후 시스템 재 부팅 하면서 발견되는 경우도 상당수 존재합니다. 이외의 다양한 이유에 의해 문제가 발생할 수 있습니다.

[조치 방법]
Windows Server CD를 이용해서 복구 콘솔로 서버 재 시작 한 후 ntdetect.com 파일 해당 서버에 copy 후 시스템 재 시작.

Windows Server 2003에서 "NTLDR is missing" 오류 메시지가 나타나는 문제를 해결하는 방법

http://support.microsoft.com/kb/816793

여기 서 잠깐.. Windows Server 2003의 부팅 프로세스 중 중요한 파일인 NTLDR과 NTDETECT.COM 등의 파일들의 동작 윈리를 살펴 보면.....

NTLDR(NT Loader의 약자임) Windows에서 사용하는 Boot Loader입니다. MBR(Master Boot Record) Format
파일 시스템이 NTFS인 경우 NTFS Partition BootSector를 읽습니다
.
BootSector에서 NTLDR(NT Loader)를 로딩하게 됩니다. 로드된 NTLDR NTDETECT.COM을 로드하여 하드웨어 정보를 수집하고 NT Kernel파일을 로딩합니다. 이후 NT Kernel(Single CPU) NTOSKRNL.exe에 위에서 수집한 정보를 전달하고

Kernel
을 시작시켜서 OS가 시작하게 됩니다
.

[ Windwos server 2003 x86 및 x64 부트 프로세스 구성요소]

구성 요소

프로세스 실행

기능

마스터 부트 레코드(MBR)

16 비트 실제 모드

파티션 부트 섹터를 읽어 로드한다.

부트 섹터(Boot Sector)

16 비트 실제 모드

Ntldr을 로드하기 위해 루트 디렉터리를 읽는다.

NTLDR

 

 

 

 

 

16 비트 실제 모드 및 32비트 또는 64비트 보호 모드; 페이징 켜기

Boot.ini 파일을 읽고, 부트 메뉴를 표시하고 Ntoskrnl.exe, Bootvid.dll, Hal.dll 및 부트 시작 장치 드라이버들을 로드한다.
32
비트 설치가 부팅 되면 32비트 모드로 전환하고 64비트 설치로 부팅 되면 64비트 Long 모드로 전환한다.

Ntdetect.com

16비트 실제 모드

Ntldr에 대한 하드웨어 감지를 수행한다.

Ntbootdd.sys

보호모드

Bios가 사용되지 않는 SCSI
ATA
시스템에서 디스크 I/O에 대해 사용된 장치 드라이버

Ntoskrln.exe

페이징을 사용하는 보호모드

실행부 서브시스템들 및 부트 그리고 시스템 시작 장치 드라이버를 초기화하고, 네이티브 응용 프로그램들을 시작하는 시스템을 준비하고, Smss.exe를 실행한다.

Hall.dll

페이징을 사용하는 보호모드

Ntoskrnl와 드라이버들을 하드웨어에 대해 인터페이스하는 커널 모드 DLL

Smss

네이티브 응용 프로그램

Wink32k.sysCrsss.exe를 포함하는 Windows 서브시스템을 로드하고 Winlogon 프로세스를 시작한다.

Winlogon

네이티브 응용 프로그램

서비스 제어 관리자(SCM) LSASS(Local Security Subsystem)을 시작하고 대화식 로그온 대화상자를 표시한다.

Service control
Manager(SCM)

네이티브 응용 프로그램

자동 시작 장치 드라이버와 Windows 서비스들을 로드하고 초기화 한다.


[참고 자료]
Windows Server 2003
에서 "NTLDR is missing" 오류 메시지가 나타나는 문제를 해결하는 방법
http://support.microsoft.com/kb/816793

 Windows XP에서 NTFS 또는 FAT 파티션용 부팅 가능 플로피 디스크를 만드는 방법

http://support.microsoft.com/kb/305595/ko