TechNet Magazine > Home > All Issues > 2009 > TechNet Magazine January 2009 >  Diagnostics and Recovery Toolset과 Windows PE를 사...
The Desktop Files Windows가 시작되지 않을 때
Wes Miller


Windows를 오랫동안 사용해오고 있다면 문제가 생기는 경우를 몇 번은 경험해 보았을 것입니다. Windows의 안정성은 각 릴리스마다 향상되고 있지만 드라이버 오류, 시스템 정전, 파일 손상, 디스크 고장과 같이 사용자나 Windows가 제어할 수 없는 문제가 있습니다. 이러한 문제가 발생할 때마다 컴퓨터를 새로 구입해야 할지 모른다는 걱정이 생기기도 합니다. 이 칼럼에서는 Windows에서 발생할 수 있는 문제에 대해 알아보고 이러한 문제를 해결하여 다시 작동하도록 하는 방법을 살펴보겠습니다.

발생할 수 있는 문제
Windows를 20년 동안 사용하면서 필자는 시스템이 부팅되지 않는 경우를 상당히 많이 경험해 보았습니다. 문제의 원인은 시스템에서 어떤 작업을 수행하고 있었는지에 따라 비교적 금방 찾아낼 수 있습니다. Windows 시스템에서 발생할 수 있는 증상을 분류하고 문제 해결에 사용할 수 있는 방법을 설명하겠습니다.
  • 시스템에서 BIOS POST(Power On Self Test)가 수행되지 않습니다. 즉, 컴퓨터를 켜도 비프음이 들리지 않습니다.
  • 시스템이 POST를 수행하지만 운영 체제가 없거나 발견되지 않는다는 메시지가 표시됩니다.
  • 시스템이 POST를 수행하지만 NTLDR이나 BOOTMGR이 발견되지 않는다는 메시지가 표시됩니다.
  • 시스템이 부팅을 시작하지만 시작 중에 중단됩니다.
  • 시스템이 부팅을 시작하지만 Windows 바탕 화면이 표시되기 전에 작동이 중단되고 무한 루프에 빠집니다.
  • Windows 바탕 화면이 표시되지만 Windows가 실행되는 동안 작동이 중단되고 무한 루프에 빠집니다.
이러한 시나리오는 모두 다른 것처럼 보이지만 실제로는 몇 가지 공통적인 문제가 원인이며 약간의 문제 해결을 통해 원인을 밝혀내고 해결할 수 있습니다. 가장 어려운 상황 중 하나는 시스템에서 POST가 전혀 수행되지 않는 경우입니다.
아쉽게도 이 경우는 대부분 하드웨어 문제입니다. 이러한 문제는 CMOS 배터리를 교체하는 것처럼 간단하게 해결 수 있는 경우도 있지만 메인보드나 전원 공급 장치를 교체해야 하는 복잡한 경우도 있습니다. 시스템에서 POST가 수행되지 않는 경우에는 여러분이 직접 문제를 해결할 수 없는 경우가 많기 때문에 시스템 제조 업체의 고객 센터에 문의하는 것이 좋습니다.

필요한 도구
시스템에서 POST가 수행되는 경우에는 소프트웨어와 하드웨어가 모두 문제인 경우도 있지만 하드웨어 고장이 아닌 경우가 많기 때문에 문제를 해결할 수 있을 가능성이 높습니다. 시스템이 부트 과정을 얼마나 진행하는지에 따라 다양한 "용의자"를 단계적으로 목록에서 제거하여 시스템이 다시 작동하도록 만들 수 있습니다.
시작하기에 앞서 준비하면 유용하게 사용할 수 있는 몇 가지 유용한 도구를 소개하겠습니다.
  • 충돌 분석에 사용할 수 있도록 Windows가 실행 중이며 Debugging Tools for Windows가 있는 다른 컴퓨터를 사용할 수 있다면 이상적입니다.
  • MDOP(Microsoft Desktop Optimization Pack)의 일부인 Microsoft DaRT(Diagnostics and Recovery Toolset)가 필요하며 온라인으로 30일 평가판을 구할 수도 있습니다. 또는 Windows PE CD를 사용할 수 있으며 Windows Vista 또는 Windows Server 2008 시스템을 복원하는 경우 버전 2.1을 사용하는 것이 좋습니다.
  • 문제 시스템의 크래시 덤프를 저장할 공간이 있는 USB 플래시 드라이브가 있어야 합니다.
  • 문제 시스템에서 하드웨어를 제거하는 데 필요한 공구가 있어야 합니다.

운영 체제가 없음
운영 체제가 없거나 발견되지 않는다는 오류 메시지(실제 텍스트는 PC에 장착된 BIOS에 따라 다름)가 표시된다면 실질적으로 시스템에 부트 섹터가 손상된 경우가 많습니다. 여기에서 부트 섹터란 부트 로더가 어디에 있는지 알려 주는 디스크 상의 영역입니다. 필자가 이 문제를 실제로 경험한 것은 단 한 번이었는데, 정전 중에 회사 임원의 컴퓨터에 서지가 발생한 경우였으며 놀랍게도 이러한 원인이 금방 밝혀졌습니다.
그러나 컴퓨터를 자세히 조사하면서 모든 파티션이 완전히 손상되었다는 것을 알게 되었습니다. 흥미롭게도 이때는 필자가 Winternals에 있던 시기였는데 이 일을 계기로 지금은 Diagnostics and Recovery Toolset에 포함된 Disk Commander(그림 1 참조)라는 도구를 개발하게 되었습니다.
그림 1 Disk Commander 복구 도구
Disk Commander는 삭제된 전체 디렉터리를 복구하는 데도 유용합니다. 이 경우라면 도구를 사용하여 디스크에서 최근에 삭제된 파티션을 검색하고 완전히 복구할 수 있으므로 더 이상 바랄 것이 없습니다(그림 2 참조).
그림 2 Disk Commander를 사용하여 디스크 파티션 복구
파티션을 복구하는 것이 그리 쉬운 작업은 아니지만 파티션이 최근에 삭제 또는 손상되었고 Disk Commander와 같은 도구를 사용한다면 성공률이 상당히 높은 편입니다. 물론 이 오류는 다른 문제(일반적으로 하드웨어)에 의한 것일 수 있습니다. 이 주제에 대한 자세한 내용은 기술 자료 문서"Windows XP 기반 컴퓨터를 시작할 때 "Operating System Not Found" 또는 "Missing operating system" 오류 메시지가 나타난다"를 읽어 보십시오. BIOS에서 문제로 인해 디스크가 표시되지도 않는 하드웨어 문제인 경우 DaRT와 같은 도구를 사용해도 그다지 도움이 되지 않습니다.

부트 로더가 없음
시스템에서 Windows Server 2003이나 이전 버전을 실행하는 경우 부트 로더 오류에서 부트 로더를 NTLDR이라고 하며 운영 체제를 업그레이드하거나 Windows Vista 이상 버전과 이중 부팅하는 경우 BOOTMGR이라고 합니다. 기본적으로 메시지는 부트 섹터가 가리키는 부트 로더에 따라 다릅니다.
일반적으로 이 오류가 그냥 발생하는 경우는 거의 없지만 앞서 언급한 파티션 손상과 비슷하게 발생하기도 합니다. 이 경우에는 Windows PE로 부팅하고 CD에 있는 NTLDR과 NTDetect.com 파일로 Windows 시스템을 대체하거나 공유하면 됩니다. 이 경우에 대체되는 기존 파일보다 새로운 Windows 릴리스의 파일을 사용해야 하며 최신 서비스 팩에 있는 최신 파일을 사용하는 것이 좋습니다. 이러한 파일은 이전 버전에 대한 호환성을 제공합니다. Windows Vista 또는 Windows Server 2008의 경우에는 BOOTMGR 파일을 복사해야 하며 Boot 디렉터리(기본적으로 숨겨짐)도 있어야 합니다.
이에 대한 자세한 내용은 "NTLDR 또는 NTDETECT.COM이 발견되지 않음 오류" 문서를 참조하십시오. Microsoft 기술 자료 중에는 Windows 복구 콘솔을 사용하도록 권장하는 내용이 많으며 이 중에서 "Windows 복구 환경에서 Bootrec.exe 도구를 사용하여 Windows Vista의 시작 문제를 해결하고 복구하는 방법"이 상당히 유용합니다.
그러나 필자는 이러한 시나리오에 Windows PE를 사용하기를 권장합니다. 복구 콘솔을 사용하여 더 쉽게 할 수 있는 일들이 몇 가지 있지만 일반적으로 Windows PE의 전반적인 기능과 유연성 덕분에 더 수월하게 문제를 해결할 수 있습니다.
파티션이나 부트 로드 복구를 완료한 다음에는 나중에 발견되는 디스크 손상이 있는지 확인하기 위해 chkdsk를 실행하는 것이 좋습니다.
필자는 정전이나 다른 문제로 인한 파일 손상의 경우 S.M.A.R.T.(Self-Monitoring Analysis and Reporting Technology)가 활성화되었는지 확인합니다. 디스크 모니터링은 이벤트 로그에 오류를 로깅합니다. 파티션이나 파일이 삭제된 만큼의 데이터 손실을 유발하는 문제는 곧 더 심각한 문제로 이어집니다.

시스템이 부팅은 되지만 중단되는 현상
여러 가지 상황에서 볼 수 있는 증상이지만 실제 원인을 반영하는 경우는 드뭅니다. 문제 원인으로 agp440.sys가 표시되는 경우가 많지만 이 드라이버는 우발적인 피해자입니다. 그림 3에는 Windows가 시작되기 전에 Windows 안전 모드로 부팅하는 시스템이 나와 있으며 여기에서 볼 수 있듯이 asp440.sys는 마지막으로 로드되는 드라이버일 뿐입니다.
그림 3 Windows 안전 모드에서 로드되는 드라이버
일부 기술 자료를 포함하여 필자가 읽은 자료 중에는 시스템을 다시 작동하게 하려면 이 드라이버를 비활성화하도록 권장하는 것이 있었지만 이는 올바른 방법이 아닙니다. 시스템을 다시 작동하게 하기 위해 필자가 권장하는 내용은 다음과 같습니다.
  • 최근에 설치한 새 하드웨어를 한 번에 한 개씩 선택적으로 시스템에서 제거하고 시스템을 시작해 봅니다.
  • Windows 안전 모드로 부팅할 수 있는지 확인합니다. 안전 모드 중에는 타사 드라이버가 시작되지 않으므로 안전 모드로 부팅이 가능하다면 타사 드라이버가 문제 원인일 가능성이 높습니다.
  • Windows PE 또는 ERD Commander(DaRT에 포함)를 사용하여 최근에 설치된 드라이버를 비활성화합니다. 자세한 내용은 "드라이버 또는 서비스 비활성화"를 참조하십시오.
  • 마지막으로 성공한 구성(아래에 설명됨)을 사용하여 마지막 작동 구성 집합에 반영되지 않은 최근의 드라이버가 문제 원인인지 확인합니다.
이러한 네 가지 선택 사항을 사용해도 시스템이 다시 작동하지 않는 경우에는 Windows 설치 복구(작동하지 않는 Windows 설치와 서비스 팩이 일치하는 CD를 사용하여 부팅)를 수행하거나 Windows를 다시 설치해야 합니다.
드라이버 또는 서비스 비활성화

과정의 난이도는 다르지만 ERD Commander와 Windows PE를 사용하면 Windows에서 부팅 중에 중단되는 드라이버나 서비스를 비활성화할 수 있습니다.
Windows PE를 사용하여 문제 서비스를 활성화 및 비활성화하려면 먼저 Windows PE로 부팅합니다. 이 경우 부팅하는 시스템에 필수 저장소 컨트롤러 드라이버가 있어야 합니다. Windows 레지스트리 편집기(regedit.exe)를 실행하고 HKEY_LOCAL_MACHINE 하이브를 선택합니다.
파일 메뉴에서 하이브 로드를 선택하고 C:\Windows\System32\Config\system(사용 중인 Windows 경로에 맞게 수정)으로 이동한 다음 편집 중에 하이브에 사용할 이름(이름은 중요하지 않음)을 지정합니다. 새로운 key\CurrentControlSet\Services\servicename으로 이동하고 0-4 범위인 Start 값을 확인합니다.
0—부팅 시작: 운영 체제 로더에 의해 가장 먼저 시작됩니다.
1—시스템 시작: 부트가 드라이버를 시작한 후 커널 시작 중 로드됩니다.
2—자동 시작: SCM(서비스 제어 관리자)이 다음에 이를 시작합니다.
3—요청 시 시작: SCM에 의해 요청 시 시작됩니다.
4—사용 안 함: 로드되지 않습니다.
비활성화하려는 서비스나 드라이버를 4로 설정합니다. 일부 드라이버는 상호 종속성이 있으며 이러한 드라이버만 비활성화하고 해당 종속성을 비활성화하지 않으면 단순한 시스템 중단이 아니라 충돌이 일어나므로 주의해야 합니다. 이 과정을 완료하면 레지스트리 하이브를 언로드하고 시스템을 다시 부팅합니다. 그러면 해당 드라이버나 서비스가 부팅 과정에서 제외됩니다.
MDOP가 있는 경우에는 DaRT를 사용하여 이 작업을 더 쉽게 수행할 수 있습니다. 부팅하고 Windows 설치에 연결한 다음, 그림 A에 나와 있는 것처럼 서비스 및 드라이버 응용 프로그램을 사용하면 매우 간단한 UI를 통해 서비스나 드라이버를 활성화 또는 비활성화할 수 있습니다.
그림 A 드라이브나 서비스를 비활성화하는 쉬운 방법

Windows 안전 모드와 복원 지점
시스템이 시작 중에 중단되는 경우, 특히 Windows PE가 없거나 안전 모드로 시작할 수 있으면 안전 모드로 부팅하는 것이 도움이 될 수 있습니다. 클라이언트 버전의 Windows에서는 복원 지점을 활성화했고 복원해야 할 파일을 이 기능이 보호하고 있는 경우(Windows XP의 모든 것을 보호하지는 않음) 복원 지점을 사용하여 시스템을 복구할 수 있습니다.
Windows PE를 사용하여 Windows Vista 시스템을 복원하는 경우에는 Windows PE 2.0 이상 버전으로 부팅해야 합니다. 이전 버전으로 부팅하면 복원 지점이 손상되어 사용할 수 없게 됩니다. 이것은 Windows Vista의 시스템 복원 지점이 디스크 쓰기를 조사하는 방식 때문이며 Windows PE 1.x에는 시스템과 상호 작용하여 복원 지점을 손상시키지 않고 쓰기를 수행하는 기능이 없습니다.

Windows 로딩이 완료되기 전 시스템 충돌
Windows 로딩이 완료되기 전에 시스템 충돌을 일으키는 두 가지 유형의 문제가 있습니다. 첫 번째는 레지스트리 손상입니다. 이러한 문제는 이전 버전의 Windows에서 더 많이 발생하며 시스템을 갑작스럽게 다시 시작하는 경우에도 발생할 수 있었습니다. 일반적으로 레지스트리 손상 때문에 시스템이 시작하지 못하는 경우 문제가 되는 레지스트리는 전체 중 일부인 경우가 많습니다. Windows Vista의 경우에는 \windows\system32\config\regback folder 폴더에 두 개의 레지스트리 복사본이 있으며 대개의 경우 24시간 이전의 상태입니다. 레지스트리 파일을 이러한 복사본으로 대체할 수 있습니다..
또한 앞서 소개한 방법을 사용하여 Windows PE에서 오프라인으로 레지스트리를 로드하면 종종 문제가 해결됩니다. Windows 레지스트리 편집기에는 손상이 발견되면 복원하는 논리가 포함되어 있습니다. 손상 복원 기능은 Windows XP에서도 훌륭했지만 Windows Vista와 Windows Server 2008에서는 더욱 개선되었습니다.
Windows PE 1.6을 사용하여 문제를 해결할 수 없는 경우 Windows PE 2.x를 사용하거나 Windows Vista 시스템으로 레지스트리를 복사하고 앞에서 소개한 방법으로 복원한 다음 다시 원래 위치로 복사해 보십시오. 아쉽게도 이러한 방법으로도 시스템이 복구되지 않으면 할 수 있는 일이 많지 않습니다. 이전 버전의 Windows에서는 설치 복구를 수행해 볼 수 있지만 일반적으로 다시 설치하는 것이 좋습니다. 이 경우에도 chkdsk를 수행하여 다른 문제가 있는지 확인하는 것이 좋습니다.
Windows가 시작되기 전에 시스템 충돌(블루 스크린)을 일으키는 가장 일반적인 원인은 드라이버 문제입니다. 이를 해결하려면 DaRT CD를 준비하고 부팅되지 않는 시스템의 Windows 크래시 덤프도 분석할 수 있는 사용하기 쉬운 메커니즘인 Crash Analyzer(그림 4 참조)를 사용하는 것이 좋습니다.
그림 4 Crash Analyzer로 덤프 파일 분석
DaRT가 없거나 사용할 수 없는 경우 Windows PE와 Debugging Tools for Windows를 사용하여 일반적인 오류 지점이 있는지 확인할 수 있습니다. 크래시 덤프가 손상되거나 확정적이지 않은 경우가 많지만 대부분은 올바른 방향으로 이끌어 줍니다. 다음과 같은 단계를 수행하면 됩니다.
  1. 충돌한 시스템에서 최근 *.dmp 파일을 Windows PE로 복사합니다. 이러한 파일은 %windir%\minidump\에 있습니다. 전체 덤프를 활성화한 경우 Windows 디렉터리에 파일이 있으며 최소한 시스템의 전체 메모리 만큼의 크기를 가집니다. 즉, 상당히 큽니다.
  2. Debugging Tools for Windows를 시작하고 File(파일)|Open Crash Dump(크래시 덤프 열기)를 선택하고 방금 복사한 덤프 파일을 선택합니다.
  3. 진달할 Windows 바이너리에 대한 디버깅 정보를 제공하는 기호 경로를 설정합니다. 다음을 입력합니다.
    .sympath= SRV*C:\SYMBOLS\*http://
    msdl.microsoft.com/download/symbols
    
    Enter(입력)를 클릭합니다.
  4. .reload를 입력하고 Enter(입력)를 클릭합니다.
  5. !analyze –v를 입력하고 Enter(입력)를 클릭합니다.
  6. 결과를 통해 문제 드라이버를 알 수 있을 가능성이 높습니다.
실제로 다른 곳에 문제가 있는 경우에도 특정 드라이버를 가리키는 가양성이 일어나는 경우가 많으므로 해당 시나리오와 연관된 선택 사항이 무엇인지 알아볼 수 있도록 약간의 웹 검색을 해 보십시오. 다른 사람도 해당 드라이버 때문에 같은 문제를 겪었을 가능성이 높습니다. 앞에서 설명한 단계를 사용하여 드라이버를 비활성화하거나 차이가 있는지 확인하기 위해 안전 모드로 부팅할 수 있습니다.

마지막으로 성공한 구성
시스템에 문제가 있을 때 그림 5에 나와 있는 마지막으로 성공한 구성이 도움이 되는 경우가 많습니다. 여기에는 마지막으로 부팅하는 데 성공한 서비스와 드라이버 집합의 복사본이 들어 있습니다. 그러나 항상 문제가 해결되는 것은 아니며 레지스트리가 손상된 경우에는 도움이 되지 않습니다. 그리고 Win32가 시작하기 전, 즉 Windows 바탕 화면 시작 초기화가 표시되기 전에 Windows가 충돌하는 경우에만 문제를 해결할 수 있습니다. 그렇지 않으면 시작이 "정상"인 것으로 판단되며 그 이후에 Windows가 충돌하는 경우에는 이 방법으로 복구할 수 있습니다.
그림 5 마지막으로 성공한 구성을 선택하여 시스템을 다시 시작할 수 있는 경우가 있습니다.

Windows가 시작된 후 시스템 충돌
Windows가 시작된 후에 시스템이 충돌한다면 드라이버가 원인일 수 있지만 하드웨어가 원인인 경우도 있습니다. 문제를 진단하려면 앞에서 설명한 방법으로 .dmp 파일을 가져오고 필요한 정보를 검색합니다.
Windbg에서 얻은 정보를 바탕으로 서비스나 드라이버를 비활성화하거나 새로 추가한 하드웨어를 살펴볼 수 있습니다. 메모리(특히 새로 설치한 경우)가 충돌을 일으키는 경우가 많으며 올바르게 작동하지 않는 디스크도 원인입니다. 이 경우 해당 OEM이나 소프트웨어 ISV에 문의하여 발생하는 증상에 대한 정보를 얻거나 웹에서 비슷한 현상에 대한 정보를 검색할 수 있습니다.
메모리가 문제 원인으로 의심되는 경우 Windows Vista 및 Windows Server 2008에 포함되어 있는 Windows Memory Diagnostic을 사용해 보십시오. Memory Diagnostic 도구는 시스템의 RAM이 충돌 원인으로 생각되는 경우 이를 매우 포괄적으로 테스트하는 방법을 제공합니다.
Windows가 정상적으로 부팅되지 않으면 상당히 당황스럽지만 근본 원인은 그리 다양하지 않습니다. 이러한 문제가 발생했을 때 어떤 부분을 어떻게 살펴보아야 할지 이해한다면 전체 이미지를 다시 작성하지 않고도 Windows를 백업하고 다시 실행할 수 있을 가능성이 높습니다.

Wes Miller는 텍사스 주 오스틴에 위치한 CoreTrace(CoreTrace.com)에서 기술 제품 수석 관리자를 맡고 있으며, 이전에는 Winternals Software에서 근무했고, Microsoft에서 프로그램 관리자로도 일했습니다. 문의 사항이 있으면 technet@getwired.com으로 연락하시기 바랍니다.

Page view tracker