원문출처  http://diginuri.tistory.com/category/Multibooting/Windows%20PE?page=4

 

1 - 윈도우 PE란?

 

 

컴퓨터를 쓰다보면 누구나 한번씩은 갑자기 컴퓨터가 안켜지는 상황을 마주치게 됩니다. 이런 경우, 간단히 컴퓨터를 재포맷 할수도 있겠지만, 만약 중요한 자료가 안에 있다면 어떻게 해야할까요? 하드디스크를 뽑아서 다른 컴퓨터에 연결하는 방법도 있지만, 시간도 오래걸리고 하기도 쉽지 않죠. 

이번 포스팅에서는 이런 상황을 만났을 때 유용하게 사용할 수 있는, 휴대용 윈도우인 윈도우 PE을 소개하겠습니다. 

PE 란 Windows Preinstallation Environment의 약자로, 윈래는 윈도우를 설치할 때 설치 프로그램을 실행하기 위한 임시 OS입니다. 기존의 윈도우에서 꼭 필요한 기능들만 모아두었기 때문에 간단한 프로그램을 실행할 수 있는, CD/DVD등을 포함한 이동식 저장매체에서 동작하는 윈도우의 축약판이라고 보시면 되겠습니다.

PE의 장점은 하드웨어가 바뀌어도 정상적으로 작동한다는 것인데요, 기존의 윈도우는 처음 설치시 인식한 하드웨어 정보를 기반으로 작동하기 때문에 하드웨어가 바뀌면 여러가지 문제가 생기지만, PE는 대부분의 경우 아무런 문제 없이 돌아갑니다.

윈도우 8은 Windows To Go 라는 기능을 통해 부팅시 다른 하드웨어가 감지되면 모든 드라이버를 다시 로드하는 방법으로 다른 하드웨어에서도 정상적으로 사용할 수 있지만, 실제 운영체제 자체를 이동식 저장 매체에 설치하는 윈리이기 때문에 CD/DVD로는 부팅이 불가능하고, 속도가 느린 USB를 사용하면 실사용이 불가능할정도로 느려지기 때문에 외장하드나 USB 3.0을 사용해야한다는 단점이 있습니다.

하지만 PE는 부팅시 램에 가상 드라이브를 생성한 후 그곳에 필요한 모든 파일을 옮겨놓고 부팅하기 때문에, 오히려 하드디스크에서 실행되는 기존 윈도우보다 훨씬 빠른 속도로 동작하게되고, CD/DVD 등 읽기 전용 메모리를 통해서도 부팅할 수 있습니다. 또한, 윈도우 8의 Windows To Go는 기본용량이 6~7GB인 반면, Windows 7을 기반으로 만들어진 PE의 기본용량은 300MB도 채 안되기 때문에, 용량 면에서도 훨씬 효율적이게 되죠.

자, 이제 가장 기본적인 형태의 PE의 모습을 구경해 보도록 하겠습니다. 윈도우 7 설치 CD/DVD 나 USB를 넣고 부팅하면 다음과 같은 화면이 뜨면서 PE를 로드합니다.

 

아까 말씀드렸듯이, PE는 부팅하기 전 모든 파일을 임시 램디스크에 복사한 뒤 부팅하게 됩니다. 따라서 처음 부팅할 때 파일들을 로드하게 되는데요, PE에 따라 다르지만 평균적으로 1~2분 정도의 시간이 소요됩니다.

 

 

기본 윈도우 7 설치 DVD가 부팅된 화면입니다. 이 설치프로그램은 PE 위에서 구동되고 있습니다. 여기서 SHIFT + F10을 눌러볼까요? 

 

설치 화면에서 SHIFT + F10을 누르면 명령프롬프트 창이 뜨게 됩니다. 일반 윈도우에서 사용할수 있는 대부분의 명령어들은 다 사용이 가능하고요, 도스 명령어에 자신이 있으신 분들은 이 명령프롬프트 하나로 백업, 복사 등 대부분의 작업을 하실 수 있으실겁니다. 물론 여기서 다른 프로그램들을 더 실행할 수도 있죠.

윈도우 설치 ISO 내부를 보면 크게 boot, efi, sources 폴더가 있고, bootmgr 이라는 부트로더와 setup.exe가 존재합니다. 여기서 실질적인 설치를 담당하는 프로그램은 setup.exe 인데요, 윈도우 7 설치용 PE의 대략적인 구조는 다음과 같다고 할 수 있습니다.

 

 

 

 

기본적인 윈도우 7 PE는 부팅된 뒤 바로 Setup.exe를 실행하도록 설정되어있습니다. 만약 위 Setup.exe를 다른 실행파일로 바꿔치기한다면 어떻게 될까요? 당연히 PE는 바꿔치기된 파일을 실행하게 됩니다.

 

 

Ghost32.exe 를 Setup.exe와 바꿔치기한 후 부팅된 모습입니다. 보시다시피 기본 윈도우 7 설치 프로그램이 아닌 고스트 프로그램이 실행되는 것을 확인 하실수 있습니다. 이런방식으로 간단한 PE를 만들수 있습니다.

만약 시작메뉴 등 GUI기능을 넣고 싶으면 어떻게 할까요? 간단합니다. 시작메뉴 프로그램을 넣어준 뒤 자동으로 실행하도록 프로그램을 만들어 주면 됩니다. 

 위 스크린샷은 현재까지 나온 한국어 윈도우 7 PE 중 explore 쉘을 사용해서 실제 윈도우 환경에 가깝게 만들어진 UserPE입니다. 역시 윈도우 7 설치 PE를 기반으로해서 실행된 뒤, explorer 쉘 등을 실행하는 식으로 구동됩니다.

 

 

2 - 간단한 PE 만들기

 

원문출처  http://diginuri.tistory.com/category/Multibooting/Windows%20PE?page=3#

 

 

이번 포스팅에서는 윈도우 VISTA/7/8 ISO에 포함되어있는 윈도우 설치 PE인 BOOT.WIM를 수정해서 간단한 PE를 만들어보도록 하겠습니다. 지난 '[Windows PE] 윈도우 PE란?' 에서는 Setup.exe를 교체해서 프로그램을 실행하는 것을 보여드렸는데요, 실제 PE를 만들때는 PE의 설정 파일이라고 할 수 있는 WINPESHL.INI 파일에 실행될 프로그램을 지정해서 사용합니다.

따라서 이번 포스팅에서는 BOOT.WIM 파일을 마운트 한 뒤, WINPESHL.INI를 수정해서 파일 탐색기인 Q-Dir을 실행하는 간단한 PE를 만들어 보도록 하겠습니다. 작업을 위해서는 MS에서 제공하는 ImageX 프로그램을 이용해서 WIM 파일을 편집해 주어야 하는데요, 배치파일로 만들어 보았습니다. 다운로드 하시고 압축을 풀어주세요.

 

MakePE.rar

 

 

압축을 푸시면 이렇게 MakePE.bat과 Q-Dir, Tools 폴더가 있는데요, 이 중 MakePE.bat 을 관리자 권한으로 실행해주세요.

 


MakePE.bat을 실행하시면 BOOT.WIM을 배치파일이 존재하는 경로로 복사해달라고 출력됩니다. 윈도우 설치 ISO의 Sources 폴더에서 BOOT.WIM 파일을 복사하신뒤, 배치파일이 존재하는 곳에 붙여넣기 해주세요.

 

 

이렇게 복사해주시면 됩니다. 복사하신뒤 아무 키나 눌러주시면 마운트가 시작됩니다.

 

 

ImageX가 BOOT.WIM을 배치파일이 존재하는 경로의 Mount 폴더에 마운트하는데요, 약간의 시간이 소요됩니다. 기다려주세요.

 

 

마운트가 완료되면 이런 메시지가 출력됩니다. Mount 폴더를 확인해볼까요? (아직 창을 닫으시면 안됩니다 ^^;;)

 

 

Mount 폴더를 확인하시면 이렇게 WIM 파일의 데이터가 마운트 된 것을 보실 수 있는데요, 일반 윈도우와 구조가 흡사함을 보실 수 있습니다. 이제 이중 Program Files 폴더에 첨부된 Q-Dir 폴더를 복사해주시고, WINPESHL.INI 파일을 작성해주시면 됩니다.

 

 

먼저 첨부된 MakePE.zip의 압축을 푸시면 들어있는 Q-Dir 폴더를 Mount 폴더 내의 Program Files 폴더로 복사해주세요. Program Files 폴더는 일반 윈도우의 Program Files 폴더처럼 PE상의 프로그램들이 존재하는 기본 경로입니다. (관리자 권한을 요구합니다. 승인해주세요.)

 

 

1
2
[LaunchApp]
AppPath = "%SYSTEMDRIVE%\Program Files\Q-Dir\Q-Dir.exe"

 

이제 WINPESHL.ini를 작성해주시면 되는데요, 이렇게 작성하신 뒤 PE의 System32 폴더 내에 저장해주시면 됩니다. 이 때, 메모장에서 바로 저장하시면 권한 때문에 저장이 되지 않으니 메모장을 관리자 권한으로 실행하시거나 다른 곳에 저장하신 뒤 복사해주셔야 합니다.

 

 

이렇게 Mount - Windows - System32 경로에 WINPESHL.ini로 저장해주세요.

 

 

수정을 완료하신뒤 아까 전의 배치 파일 창에서 아무 키나 눌러주시면 이렇게 이미지 파일의 언마운트가 진행됩니다. 기다려주세요.

 

 

언마운트가 완료되면 이런 메시지가 출력됩니다. 배치파일이 존재하는 폴더를 확인해보세요.

 

 

언마운트가 완료되면 배치파일이 존재하는 경로에 PE.wim 이라는 새로운 파일이 생성된것을 확인하실 수 있습니다. 이제 이 WIM 파일을 윈도우 7 ISO의 BOOT.WIM과 교체하셔서 CD/DVD에 구우시거나 '[만능 USB를 만들어 보자!] 8편 - 윈도우 PE 추가하기'를 참고하셔서 부팅 USB를 만들어서 사용하시면 되겠습니다 ^^

 

 

완성된 PE로 부팅하시면 이렇게 Setup.exe 대신 Q-Dir이 실행되는 모습을 보실 수 있는데요, 위의 WINPESHL.ini에 다른 프로그램을 지정하시면 다른 포터블 프로그램들도 실행하실 수 있습니다. 단, 윈도우 PE는 일반 윈도우에서 여러 DLL 파일들이 제외되었으므로, 상황에 맞는 DLL 파일을 같이 넣어주셔야 합니다.

(WINPESHL.ini 파일에 대해서는 마이크로소프트 TechNet에 자세히 설명되어있습니다. 참고하세요 ^^)

 

 

 

3 - 윈도우PE의 시작프로그램 제어하기

 

원문출처 http://diginuri.tistory.com/category/Multibooting/Windows%20PE?page=2

 

 

이번 포스팅에서는 윈도우 PE의 시작 프로그램을 제어하는 방법을 알아보려 하는데요, 지난 포스팅에서 WINPESHL.INI에 대해서 간단하게 설명하기는 했지만 이 밖에 PE의 작업 순서와 쉘 프로그램, 시작 프로그램에 대한 개념 등 추가 설명이 더 필요할 것 같아서 이렇게 따로 포스팅하게 되었습니다.

 

Windows PE의 작업 순서

 

Windows PE의 부팅 프로세스는 다음과 같습니다.

1. 특정 미디어의 부팅 섹터가 로드됩니다. 컨트롤이 Bootmgr에 전달됩니다. Bootmgr은 BCD(부팅 구성 데이터)에서 기본 부팅 정보를 추출하고 컨트롤을 Boot.wim에 포함된 winload.exe에 전달합니다. 그러면 Winload.exe는 적절한 HAL(하드웨어 추상화 계층)을 로드하고 시스템 레지스트리 하이브 및 필요한 부팅 드라이버를 로드합니다. 로드가 완료되면 커널을 실행할 환경이 준비됩니다.

2. Ntoskrnl.exe가 실행되고 환경 설정이 완료됩니다. 세션 관리자(SMSS)로 제어가 전달됩니다.

3.SMSS는 레지스트리의 나머지를 로드하고 Win32 하위 시스템(Win32k.sys)과 해당 여러 프로세스를 실행하도록 환경을 구성합니다. SMSS는 Winlogon 프로세스를 로드하여 사용자 세션을 만든 다음 서비스 및 꼭 필요하지는 않은 나머지 장치 드라이버와 보안 하위 시스템(LSASS)을 시작합니다.

4. Winlogon.exe는 HKLM\SYSTEM\Setup\CmdLine 레지스트리 값에 따라 설치를 실행합니다. Winpeshl.exe%SYSTEMDRIVE%\sources\setup.exe(있는 경우)를 시작합니다. 그렇지 않으면 %SYSTEMROOT%\system32\winpeshl.ini에 지정된 응용 프로그램을 찾습니다. 응용 프로그램이 지정되지 않은 경우 Winpeshl.exe는 cmd /k %SYSTEMROOT%\system32\startnet.cmd를 실행합니다. 기본적으로 Windows PE에는 Wpeinit.exe를 시작할 Startnet.cmd 파일이 포함되어 있습니다. Wpeinit.exe는 네트워크 리소스를 로드하고 DHCP와 같은 네트워킹 구성 요소에 맞춰 조정됩니다.

5.Wpeinit.exe가 완료되면 명령 프롬프트 창이 표시됩니다. Windows PE의 부팅 프로세스가 완료됩니다.

출처 : http://technet.microsoft.com/ko-kr/library/cc721977(v=ws.10).aspx


마이크로소프트의 TechNet에는 여러 OEM 제조사들을 위해서 이렇게 자세한 PE 도움말을 제공하고 있습니다. 위의 내용은 이 중 대략적인 윈도우 PE의 작업 순서에 대한 내용인데요, 여기서 주목해야될 내용은 4번입니다. 대부분의 시작 프로그램이 레지스트리에 지정되어있는 일반 윈도우 환경과는 달리 윈도우 PE는 시작 프로그램들을 크게 3가지 방법으로 지정할 수 있는데요, 지난 포스팅에서 설명한 WINPESHL.INI를 통한 방법 외에도 Startnet.cmd, AutoUnattend.xml 을 통한 방법이 있습니다.

단순히 원도우 설치과정을 자동화 하기 위한 PE의 경우는 Startnet.cmd, AutoUnattend.xml 파일을 수정하는 방법을 사용해도 괜찮지만, WINPESHL.INI를 로드하는 WINPESHL.EXE 파일이 있어야 원활한 자원 분배가 가능하므로 마이크로소프트는 WINPESHL.INI를 통한 시작 프로그램 지정을 권장합니다. 저도 WINPESHL.INI를 수정하는 방법을 소개하도록 하겠습니다.

 

WINPESHL.INI 파일의 구조 

 

1
2
3
4
5
[LaunchApp]
AppPath = %SYSTEMDRIVE%\myshell.exe
[LaunchApps]
%SYSTEMDRIVE%\mydir\application1.exe, -option1 -option2
application2.exe, -option1 -option2

 

마이크로소프트 TechNet에 공개된 WINPESHL.INI 도움말에서는 WINPESHL.INI 파일을 크게 두 섹션, 즉 [LaunchApp][LaunchApps] 섹션으로 분류합니다. 똑같아 보이지만 두번째 섹션은 LaunchApp's' 로 복수형이 사용된 것을 알 수 있는데요, 이를 통해 LaunchApp 섹션은 하나의 프로그램을, LaunchApps 섹션은 여러 프로그램들을 포함한다는 것을 알 수 있습니다.

 

 


 

 

 

1
2
[LaunchApp]
AppPath = %SYSTEMDRIVE%\myshell.exe

 

[LaunchApp] 섹션에는 쉘 프로그램을 지정합니다. '쉘 프로그램'은 윈도우의 시작 메뉴, 작업 표시줄 등 UI를 담당하는 Explorer.exe 같은 프로그램들을 지칭하는데요, 아무 프로그램이나 지정해주셔도 상관 없습니다. 단, 윈도우 PE에서는 쉘 프로그램이 종료될 경우 자동으로 시스템이 종료된다는 점을 염두하셔야 합니다.

'[Windows PE] 간단한 윈도우 PE 만들기' 에서는 Q-Dir을 쉘 프로그램으로 지정했었는데요, 이 밖에도 수많은 프로그램들을 쉘 프로그램으로 사용할 수 있습니다. 가볍게 BSExplorer을 사용할 수도 있고, 실제 윈도우와 비슷하게 만드려면 Explorer 쉘을 사용할 수도 있습니다.

쉘 프로그램을 지정할 때는 [LaunchApp] 섹션의 AppPath 항목에 실행될 프로그램을 지정해 주시면 되며, 명령줄 옵션은 사용할 수 없습니다. 그리고 되도록이면 절대 경로보다는 %SYSTEMDRIVE%, %SYSTEMROOT%, %WINDIR%, %TEMP% 같은 환경 변수들을 사용하시는 것이 좋습니다.

 

 


 

 

 

1
2
3
[LaunchApps]
%SYSTEMDRIVE%\mydir\application1.exe, -option1 -option2
application2.exe, -option1 -option2

 

[LaunchApps] 섹션에는 시작 프로그램들을 지정합니다. 시작 프로그램들은 맨 위부터 순서대로 실행되며, 파일의 경로만 적어주시면 됩니다. 명령줄 옵션을 사용할 수 있으므로 여러 플래그들을 덧붙이셔도 됩니다.

주로 PENetwork 같이 PE의 부팅과 함께 실행되어야 하는 프로그램들을 지정해서 사용합니다.

 

 


 

 

 

전 편에서 설명한 것처럼 이렇게 작성된 WINPESHL.INI 파일은 PE의 Windows\System32 폴더에 저장해주시면 됩니다. ^^

 

 

 

4 - 윈도우 PE에 BSExplorer 추가하기

 

원문출처  http://diginuri.tistory.com/category/Multibooting/Windows%20PE?page=1

 

앞서 지난 포스팅에서 설명한 대로 대부분의 윈도우 PE들은 WINPESHL.INI 파일의 LaunchApp 섹션에 쉘 프로그램, 즉 윈도우의 시작 메뉴, 작업 표시줄 등 UI를 담당하는 Explorer.exe 같은 프로그램들을 지정해서 사용합니다. 저번에 만들었던 Q-Dir PE처럼 단일 프로그램을 실행하는 PE를 사용해도 되지만 이러한 쉘 프로그램을 사용하는 이유는 조금 더 PE를 실제 윈도우 환경과 비슷하게 사용할 수 있기 때문인데요, 이번 포스팅에서는 이러한 쉘 프로그램들 중 가장 가볍고 무난한 PE용 쉘 프로그램인 BSExplorer를 PE에 추가하고, 설정 파일을 작성하는 방법을 알아보도록 하겠습니다.

 

윈도우 PE에 BSExplorer 추가하기 

 

 

 

첨부된 파일의 압축을 푸시면 두 개의 폴더가 들어있습니다. 이 중 BSExplorer는 PE로 복사한 뒤 WINPESHL.INI에 등록해서 사용할 폴더이며, BSConvert는 BSExplorer의 설정 파일을 수정하기 위한 프로그램입니다.

 


BSExplorer를 PE에 추가하는 방법도 '[Windows PE] 간단한 윈도우 PE 만들기' 에서 Q-DIR을 추가했던 방법과 동일합니다. MakePE 배치파일을 통해서 WIM 파일을 마운트 하시고, Program Files 폴더에 BSExplorer 폴더를 복사하시고 winpeshl.ini의 [LaunchApp] 섹션에 BSExplorer 실행파일을 지정해주시면 됩니다. 

(MakePE 배치파일은 여기에서 다운로드 해주세요. 압축을 푸시고 MakePE.bat을 관리자 권한으로 실행하시면 됩니다.)

 

 

 

만들어진 PE로 부팅하시면 이렇게 BSExplorer가 실행되며 실제 윈도우와 비슷한 시작메뉴가 나타나는 것을 보실 수 있습니다.

 

BSExplorer의 시작메뉴 구성하기

 

 

BSExplorer의 시작메뉴와 바탕화면 등을 설정하려면 BSExplorer 폴더 안의 bs_desktop.ini, bs_start.ini 등 BSExplorer의 설정 파일을 수정해야 합니다. 간단한 작업은 메모장을 사용해서 직접 파일을 수정해도 되지만 이를 일일히 수정하는 일은 너무 비효율적이기 때문에 BSExplorer의 제작자는 이런 작업을 간단히 해주는 프로그램인 BSConvert를 제공하고 있습니다. 

첨부된 파일 중 BSConvert 폴더 안의 Nu2Convert.exe를 실행해 주세요.

 

 

Nu2Convert 프로그램이 실행되면 'Files - Open BS Menu File' 메뉴를 선택해줍니다.

 

 

현재 설정되어있는 가상 루트 경로가 올바르지 않다는 메시지가 출력되는데요, '예(Y)'를 클릭해주세요.

 

 

'가상 루트 경로'를 지정해주셔야 하는데요, PE가 마운트 되어있는 경로를 지정해주시면 됩니다. MakePE가 있는 경로의 Mount 폴더를 지정해주세요.

 

 

이제 bs_start.ini를 선택해줍니다. 기본 경로는 MakePE\Mount\Program Files\BSExplorer\bs_start.ini 입니다.

 

 

bs_start.ini의 내용이 출력되며 간편하게 수정할 수 있습니다. 수정을 하시려면 수정할 항목을 선택하시고, 오른쪽의 속성을 수정해주시면 됩니다. 먼저 저는 모든 메뉴를 한글로 바꿔보겠습니다.

 

 

 

항목의 이름을 바꾸려면 바꿀 항목을 선택하시고 오른쪽 속성 중 'Caption'을 바꿔주시면 됩니다. (Menu ID는 항목의 고유 이름입니다.) 저는 모든 항목의 Caption을 한글로 바꿔주었습니다.

 

 

이번에는 새로운 항목을 만들어보겠습니다. 새로 항목을 만들 폴더를 우클릭하시고 'New menu item' 을 클릭해주세요.

 

 

이런식으로 작성해주시면 됩니다 ^^ 적당한 Menu ID와 Caption을 적어주시고, 'Exe File Name'에서 프로그램을 지정해주시면 되는데요, 추가할 프로그램은 미리 PE가 마운트된 폴더의 Program Files 폴더로 옮겨주셔야 합니다.

 

 

 

수정이 완료되면 'File - Save Bs Menu File' 을 클릭해서 저장해주시면 됩니다.

 

 

 

 

<출처 : http://samso3615.tistory.com/89>