Microsoft MVP성태의 닷넷 이야기
글쓴 사람
홈페이지
첨부 파일
 

Windows 10의 Recovery 파티션을 삭제 및 새로 생성하는 방법

이전 글에서 복구 모드로의 부팅을 설명했는데요.

Windows 10의 복구 콘솔로 부팅하는 방법
; https://www.sysnet.pe.kr/2/0/11207

복구 모드와 '복구 파티션(Recovery partition)'과는 무슨 관계가 있을까요? ^^

우선, "Disk Management" 관리 콘솔을 이용해 복구 파티션이 있는지 확인할 수 있습니다.

boot_recovery_mode_1.png

그리고, 자신의 Windows 10 PC에서 정상적으로 복구 콘솔 기능이 동작하고 있는지 reagentc.exe를 관리자 권한으로 실행해 보면 알 수 있습니다.

C:\Windows\System32>reagentc /info
Windows Recovery Environment (Windows RE) and system reset configuration
Information:

    Windows RE status:         Enabled
    Windows RE location:       \\?\GLOBALROOT\device\harddisk0\partition1\Recovery\WindowsRE
    Boot Configuration Data (BCD) identifier: cb172ec6-1b4f-11e7-947f-da9018c8edfd
    Recovery image location:
    Recovery image index:      0
    Custom image location:
    Custom image index:        0

REAGENTC.EXE: Operation Successful.

"Windows 10의 복구 콘솔로 부팅하는 방법" 글에서 설명한 데로 복구 콘솔로 진입한다는 것은 곧, "\\?\GLOBALROOT\device\harddisk0\partition1\Recovery\WindowsRE"에 저장된 winre.wim 이미지를 사용한다는 것과 같습니다.

그런데, 복구 콘솔로 진입한 경우에 나오는 "X:" 드라이브가 좀 재미있습니다. 해당 드라이브는 "\\?\GLOBALROOT\device\harddisk0\partition1\Recovery\WindowsRE" 폴더에 직접 매핑되는 것은 아니고, 윈도우는 RAM DISK를 만들어 그곳에 WindowsRE 폴더의 내용을 복사해 복구 콘솔을 운영하는 방식으로 동작합니다. 이에 관해 다음의 문서에서 설명하는,

Windows Recovery Environment (Windows RE)
; https://msdn.microsoft.com/en-us/windows/hardware/commercialize/manufacture/desktop/windows-recovery-environment--windows-re--technical-reference

bcdedit /enum all 명령어로 그 힌트를 찾을 수 있습니다.

Windows Boot Loader
-------------------
identifier              {f4117904-10c3-11e7-b9ca-9b96daeebba1}
device                  ramdisk=[unknown]\Recovery\WindowsRE\Winre.wim,{f4117905-10c3-11e7-b9ca-9b96daeebba1}
path                    \windows\system32\winload.efi
description             Windows Recovery Environment
locale                  en-US
inherit                 {bootloadersettings}
displaymessage          Recovery
osdevice                ramdisk=[unknown]\Recovery\WindowsRE\Winre.wim,{f4117905-10c3-11e7-b9ca-9b96daeebba1}
systemroot              \windows
nx                      OptIn
bootmenupolicy          Standard
winpe                   Yes




물론, 복구 파티션은 삭제해도 상관없습니다. 그래도 여전히 윈도우 부팅은 가능하고 단지 복구 콘솔로의 진입만 못하는 것뿐입니다.

실제로 ^^ 한번 삭제를 해볼까요? 관리자 권한의 diskpart.exe를 실행하고,

C:\Windows\System32>diskpart

Microsoft DiskPart version 10.0.15063.0

Copyright (C) Microsoft Corporation.
On computer: TESTPC

DISKPART>

윈도우가 설치된 디스크를 선택한 후,

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online           64 GB   450 MB        *
  Disk 1    Online           24 GB      0 B        *

DISKPART> sel disk 0

Disk 0 is now the selected disk.

해당 디스크의 "Recovery" 파티션까지 선택한 다음,

DISKPART> list part

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Recovery           449 MB  1024 KB
  Partition 2    System             100 MB   451 MB
  Partition 3    Reserved            16 MB   551 MB
  Partition 4    Primary             63 GB   567 MB

DISKPART> select part 1

이렇게 삭제할 수 있습니다.

DISKPART> delete part override

DISKPART> list part

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 2    System             100 MB   451 MB
  Partition 3    Reserved            16 MB   551 MB
  Partition 4    Primary             63 GB   567 MB

이제 다시 "Advanced startup"으로 재부팅하는 경우, 다음 화면과 같이 "Troubleshoot"로 들어가도 "Command Prompt"로의 (들어가는 메뉴가 없어져) 복구 콘솔로 들어갈 수 없습니다.

recovery_partition_2.png

이런 상황에서 reagentc.exe를 실행해 보면 다음과 같이 "Windows RE status"가 "Disabled"로 나옵니다.

C:\Windows\system32>reagentc /info
Windows Recovery Environment (Windows RE) and system reset configuration
Information:

    Windows RE status:         Disabled
    Windows RE location:
    Boot Configuration Data (BCD) identifier: f411790a-10c3-11e7-b9ca-9b96daeebba1
    Recovery image location:
    Recovery image index:      0
    Custom image location:
    Custom image index:        0

REAGENTC.EXE: Operation Successful.

즉, Recovery Partition을 지워도 "복구 모드"로의 부팅은 되지만, 그 내부에 포함된 "Command Prompt"로의 진입만 못하는 것뿐입니다.




자, 그럼 다시 복구 콘솔을 띄우고 싶다면 - 즉, 정상적인 Recovery partition을 만들려면 어떻게 해야 될까요? 한 마디로, "\Recovery\WindowsRE\Winre.wim" 파일이 있는 파티션을 만들어 주기만 하면 됩니다.

이를 위해 우선, "Disk Management" 관리 콘솔을 이용해 다시 해당 영역을 Primary 파티션으로 만들어 NTFS로 포맷해 줍니다. (물론, diskpart로 직접 파티션을 만들어도 됩니다.)

recovery_partition_3.png

보는 바와 같이 현재 F 드라이브로 할당되어 있습니다. 이제 winre.wim 파일만 구해주면 되는데, 이에 대한 방법은 다음의 글에 자세히 나옵니다.

Customize Windows RE
; https://msdn.microsoft.com/en-us/windows/hardware/commercialize/manufacture/desktop/customize-windows-re

정리해 보면, 우선 "d:\mount" 폴더를 만들고 설치 디스크로부터 /sources/install.wim 파일을 복사해 옵니다. 그다음, 아래의 명령어로 install.wim 파일의 내용을 마운트시켜 풀어줍니다.

md d:\mount\windows

Dism /Mount-Image /ImageFile:d:\mount\install.wim /Index:1 /MountDir:d:\mount\windows

위의 명령어가 실행된 후, "D:\mount\windows\Windows\System32\Recovery" 폴더를 보면 "Winre.wim" 파일이 있는데, 그 파일을 F 드라이브의 f:\temp 폴더에 복사해 줍니다. 그런 후, "Mount-Image" 시켰던 install.wim 파일을 다음의 명령으로 해제(unmount)해 줍니다.

Dism /Unmount-Image /MountDir:d:\mount\windows /Discard

(* 위의 명령이 실행되고 나면, d:\mount\windows 폴더 하위에 풀려있던 모든 파일들이 삭제됩니다.)

이제 reagentc.exe를 다음과 같이 실행해 줍니다.

F:\temp>reagentc /setreimage /path f:\temp\winre.wim
Directory set to: \\?\GLOBALROOT\device\harddisk0\partition4\temp

REAGENTC.EXE: Operation Successful.

그런 다음, "/enable" 옵션으로 다시 실행해 주면,

F:\temp>reagentc /enable
REAGENTC.EXE: Operation Successful.

temp 폴더에 복사했던 winre.wim 파일이 없어지고, 대신 f:\Recovery\WindowsRE 폴더가 생성된 후 그 안에 winre.wim 파일이 복사됩니다. 이 상태에서 reagentc /info로 복구 콘솔이 가능해졌는지를 확인할 수 있습니다.

F:\Recovery>reagentc /info
Windows Recovery Environment (Windows RE) and system reset configuration
Information:

    Windows RE status:         Enabled
    Windows RE location:       \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
    Boot Configuration Data (BCD) identifier: f411790a-10c3-11e7-b9ca-9b96daeebba1
    Recovery image location:
    Recovery image index:      0
    Custom image location:
    Custom image index:        0

REAGENTC.EXE: Operation Successful.

특이한 것은, harddisk0\partition4에서처럼 현재 4번 파티션으로 할당된 것을 볼 수 있습니다. 이는 Disk Management 관리 콘솔에서 파티션을 생성했을 때 정해진 것으로 diskpart에서도 4번이라고 나옵니다.

C:\Windows\system32>diskpart

Microsoft DiskPart version 10.0.14393.0

Copyright (C) 1999-2013 Microsoft Corporation.
On computer: TESTPC

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online           64 GB  1024 KB        *
  Disk 1    Online           24 GB      0 B        *

DISKPART> sel disk 0

Disk 0 is now the selected disk.

DISKPART> list part

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 4    Primary            449 MB  1024 KB
  Partition 1    System             100 MB   451 MB
  Partition 2    Reserved            16 MB   551 MB
  Partition 3    Primary             63 GB   567 MB

상관없습니다. 재부팅하고 나면, 다시 다음과 같은 순서로 파티션 정렬이 됩니다.

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Primary            449 MB  1024 KB
  Partition 2    System             100 MB   451 MB
  Partition 3    Reserved            16 MB   551 MB
  Partition 4    Primary             63 GB   567 MB

"reagentc.exe /enable" 명령어로 인해 이제부터 "복구 파티션"으로써의 기능이 실제로 동작하게 됩니다. 즉, 이 상태에서 "Advanced startup"으로 재부팅하면 정상적으로 X: 드라이브의 복구 콘솔로 진입할 수 있습니다.

'복구 콘솔'을 사용하기 위한 더 이상의 설정은 이제 '필요'하지 않습니다.

하지만, "F:\" 드라이브로 사용자가 언제든지 복구 파티션을 임의 접근할 수 있다는 것이 좀 걸립니다. 즉, 윈도우 설치 파일이 그랬던 것처럼 hidden 파티션으로 만들어 주고 싶은데요. 방법은, 파티션 타입을 Recovery로 바꿔주는 것으로 해결할 수 있습니다. 이를 위해 diskpart.exe를 실행하고, 다음과 같이 해당 파티션을 Recovery Partition으로 설정해 주면 됩니다.

DISKPART> list part

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 4    Primary            449 MB  1024 KB
  Partition 1    System             100 MB   451 MB
  Partition 2    Reserved            16 MB   551 MB
  Partition 3    Primary             63 GB   567 MB


DISKPART> sel part 4

Partition 4 is now the selected partition.

DISKPART> set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac

DiskPart successfully set the partition ID.

위와 같이 해주고 나서, "Disk Management" 관리 콘솔로 확인해 보면 처음 지웠을 때와 동일한 복구 파티션으로 나타납니다.

boot_recovery_mode_1.png

물론, 취향에 따라 ^^ 저렇게 복구 파티션으로 굳이 지정하지 않아도 됩니다.




참고로, 이 글에서 복구 파티션에 할당한 winre.wim 파일은 그야말로 기본적인 환경만을 인식하는 윈도우 부팅 파일이라고 보시면 됩니다. 다시 말해, 특별한 장치들은 인식할 수 없습니다. 따라서, 복구 콘솔에서 인식하고 싶은 장치가 있다면 미리 winre.wim 파일에 device driver를 설치해 주어야 합니다. 이에 대해서는 다음의 글에 설명한 내용을 참고하시면 됩니다.

Windows 운영체제의 ISO 설치 파일에 미리 Device driver를 준비하는 방법
; https://www.sysnet.pe.kr/2/0/11190

그 외에, (UEFI 기반의 장치를 위한) 윈도우 설치 시 생성되는 기본 파티션들에 대한 설명을 다음의 글에서 찾을 수 있습니다.

UEFI/GPT-based hard drive partitions
; https://msdn.microsoft.com/en-us/windows/hardware/commercialize/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions




끝맺기 전에, 주의 사항 하나 전달합니다. ^^

일반적인 PC인 경우 복구 파티션을 지우는 것은 크게 문제가 되지 않습니다. 하지만, 태블릿이나 소형 노트북 등의 경우에는 제조사가 미리 인식시켜야 할 장치에 대해 '복구 파티션'의 winre.wim에 장치 드라이버를 미리 설정해 놓은 경우가 있는데, 이를 삭제하게 되면 나중에 복구 콘솔로 들어갔을 때 (최악의 경우) 아무것도 못할 수도 있습니다.

가령, Dell Venue 8 Pro의 경우 델 측에서 미리 터치스크린과 가상 키보드를 장치 드라이버로 제공하게 되는데 "복구 파티션"을 지운 후 이 글의 방법에 따라 winre.wim 파일만 달랑 복사한 복구 파티션으로 복원하는 경우 복구 콘솔에서 터치스크린과 가상 키보드를 전혀 쓸 수 없는 상태가 됩니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]





[최초 등록일: ]
[최종 수정일: 5/25/2017 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer@outlook.com

비밀번호

댓글 쓴 사람
 



2018-07-04 06시23분
[임원정] 안녕하세요. 정말 제가 찾던 내용과 95% 동일해서 문의드립니다.
MS사에 WINDOWS 10 서비스 요원이 포맷 후 윈도우 재설치하라고 하는데, 과연 그 방법 밖에 없는지 여쭙습니다.

[윈도우오류메시지]
원도우 10 업데이트중에 "시스템에서 사용하는 파티션은 업데이트할 수 없습니다."
https://answers.microsoft.com/ko-kr/windows/forum/windows_10-windows_install/%EC%9B%90%EB%8F%84%EC%9A%B0-10/6e252332-ea18-4ac5-9476-697a622e74a9

[MS사 진단] 복구 파티션이 2개나 된다. 해결책은 포맷 후 윈도우 재설치
            디스크1의 450MB (정상 복구파티션이 EFI시스템으로 바뀌어야 한다)

[제 PC의 시스템 상황]

디스크0 System(D:) (E:) 420GB HP_RECOVERY(F:) HP_TOOLS(G:)
기본 1.00 GB NTFS 491.33 GB NTFS 할당되지 않음 16.82 GB NTFS 2.00 GB FAT32
931.51GB 정상(활성, 정상(주파티션) 정상(주파티션) 정상(주파티션)
(주파티션)

디스크1 450MB 99MB (C:) 838MB
기본 정상(복구 파티션) 정상(EFI시스템) 231.51 GB NTFS 정상(복구파티션)
237.51GB 정상(부팅, 페이지파일,
                                                       크래시덤프,주파티션)
[손님]
2018-07-04 06시32분
[임원정] 이미지를 첨부할 수 없어 텍스트로 입력했는데, 구조가 깨지네요.

다시 입력합니다.

DISK0 기본 931.51GB

     System(D:) 1.00 GB NTFS
                정상(활성, 주파티션)

     (E:) 491.33 GB NTFS
          정상(주파티션)
     

     420GB 할당되지않음


     HP_RECOVERY(F:) 16.82 GB NTFS
                      정상(주파티션)

     HP_TOOLS(G:) 2.00 GB FAT32
                  정상(주파티션)

 디스크1 기본 237.51GB

      450MB 정상(복구 파티션)

      99MB 정상(EFI시스템)

      (C:) 231.51 GB NTFS
      정상(부팅, 페이지파일,
      크래시덤프,주파티션)

      838MB
      정상(복구파티션)
[손님]
2018-07-04 11시54분
저도 이런 부분은 딱히 뭐라고 할 수가 없군요. 정말 복구 파티션이 2개가 문제라면, 어차피 제가 쓴 이 글에서 보면 복구 파티션이 없어도 상관없으므로 지워도 됩니다. (또는, 복구 파티션 2개 삭제하고 이글에 적힌 내용대로 하나 새롭게 생성해도 될 것입니다.)

문제는, 정말 그 파티션 때문인지는 해보지 않고는 알 수 없습니다. 즉, 문제 해결을 위해 이것 저것 해보시고 그래도 안 되면 포맷을 하는 것이 좋겠습니다. (어느 쪽이 더 시간을 절약할 지는 스스로 판단하셔야겠고.)
정성태
2018-07-04 12시38분
[임원정] 우문 현답이시네요. 왜 당연한 결론인데, 혼자서는 결론을 못내릴까요? ㅎㅎ
이대로 해보고, 안되면 포맷하자^^
정말 단순한 결론인데요...
감사합니다.
[손님]
2019-11-14 10시24분
[궁금해요] 마지막 작업까지 하니 디스크 관리에서 히든 파티션으로 되는 것을 확인할 수 있었습니다.
하지만 내 PC로 들어가니깐 새 볼륨(F:)가 뜨던데, 이것도 안보이게 할 순 없나요?

[손님]
2019-11-14 10시42분
해당 파티션의 드라이브 문자 할당을 해제하시면 됩니다. 방법은 다음의 글에 설명해 두었습니다.

diskpart - remove letter 이후 재부팅 시 다시 드라이브 문자가 할당되는 경우
; http://www.sysnet.pe.kr/2/0/11804

정성태

... 31  32  33  34  35  36  37  38  39  [40]  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
11232정성태6/28/20173935Windows: 144. Windows Server 2016에 Windows Identity Extensions을 설치하는 방법
11231정성태6/28/20174982디버깅 기술: 86. windbg 의 mscordacwks DLL 로드 문제 - 세 번째 이야기 [1]
11230정성태6/28/20173978제니퍼 .NET: 26. 제니퍼 닷넷 적용 사례 (6) - 잦은 Recycle 문제
11229정성태6/27/20173985오류 유형: 402. Windows Server Backup 관리 콘솔이 없어진 경우
11228정성태6/26/20174243개발 환경 구성: 320. Visual Basic .NET 프로젝트에서 내장 Manifest 자원을 EXE 파일로부터 제거하는 방법파일 다운로드1
11227정성태6/19/20178398개발 환경 구성: 319. windbg에서 python 스크립트 실행하는 방법 - pykd [5]
11226정성태6/19/20174523오류 유형: 401. Microsoft Edge를 실행했는데 입력 반응이 없는 경우
11225정성태6/19/20174359오류 유형: 400. Outlook - The required file ExSec32.dll cannot be found in your path. Install Microsoft Outlook again.
11224정성태6/13/20174293.NET Framework: 661. Json.NET의 DeserializeObject 수행 시 속성 이름을 동적으로 바꾸는 방법파일 다운로드1
11223정성태8/2/20173872개발 환경 구성: 318. WCF Service Application과 WCFTestClient.exe
11222정성태6/10/20175309오류 유형: 399. WCF - A property with the name 'UriTemplateMatchResults' already exists.파일 다운로드1
11221정성태6/10/20174154오류 유형: 398. Fakes - Assembly 'Jennifer5.Fakes' with identity '[...].Fakes, [...]' uses '[...]' which has a higher version than referenced assembly '[...]' with identity '[...]'
11220정성태6/10/20175599.NET Framework: 660. Shallow Copy와 Deep Copy파일 다운로드2
11219정성태6/7/20174717.NET Framework: 659. 닷넷 - TypeForwardedFrom / TypeForwardedTo 특성의 사용법
11218정성태6/1/20176114개발 환경 구성: 317. Hyper-V 내의 VM에서 다시 Hyper-V를 설치: Nested Virtualization
11217정성태6/1/20174226오류 유형: 397. initerrlog: Could not open error log file 'C:\...\MSSQL12.MSSQLSERVER\MSSQL\Log\ERRORLOG'
11216정성태6/1/20174823오류 유형: 396. Activation context generation failed
11215정성태6/1/20175146오류 유형: 395. 관리 콘솔을 실행하면 "This app has been blocked for your protection" 오류 발생 [1]
11214정성태6/1/20174550오류 유형: 394. MSDTC 서비스 시작 시 -1073737712(0xC0001010) 오류와 함께 종료되는 문제 [1]
11213정성태5/26/20175614오류 유형: 393. TFS - The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
11212정성태5/26/20176712오류 유형: 392. Windows Server 2016에 KB4019472 업데이트가 실패하는 경우
11211정성태5/26/20174522오류 유형: 391. BeginInvoke에 전달한 람다 함수에 CS1660 에러가 발생하는 경우
11210정성태5/25/20174528기타: 65. ActiveX 없는 전자 메일에 사용된 "개인정보 보호를 위해 암호화된 보안메일"의 암호화 방법
11209정성태5/25/201715277Windows: 143. Windows 10의 Recovery 파티션을 삭제 및 새로 생성하는 방법 [6]
11208정성태5/25/20177030오류 유형: 390. diskpart의 set id 명령어에서 "The specified type is not in the correct format." 오류 발생
11207정성태5/24/20177716Windows: 142. Windows 10의 복구 콘솔로 부팅하는 방법
... 31  32  33  34  35  36  37  38  39  [40]  41  42  43  44  45  ...