[만능 USB를 만들어 보자!] 9편 - GRUB4DOS로 ISO 부팅하기

Multibooting/GRUB4DOS


지금까지는 윈도우 설치 메뉴와 윈도우 PE를 GRUB4DOS에 추가하는 방법에 대해서 알아보았습니다. 윈도우를 GRUB4DOS에 추가하면서 공통적으로 했던 과정은 추가할 파일을 USB에 복사한뒤, 2차 부트로더인 bootmgr을 체인로드하는 메뉴를 추가했었는데요, 이번에는 조금 다른 방법을 알려드리려 합니다.

바로 ISO 가상화 기능인데요, GRUB4DOS는 윈도우 상에서 데몬 같은 가상화 프로그램을 통해 ISO파일을 가상 CD롬을 통해 인식하는 것처럼 부트로더 상에서 ISO를 가상 드라이브에 마운트 시키고 그 드라이브를 통해서 부팅을 할 수 있는 기능을 지원합니다.


GRUB4DOS ISO 가상화의 핵심 - MAP 명령어


그렇다면 GRUB4DOS에서 ISO를 마운트하려면 어떤 명령어를 사용해야 할까요? 바로 MAP 명령어입니다. ISO 파일을 포함하는 이미지 파일들을 가상 드라이브로 마운트 해주는 역할을 하는데요, 사용법은 이렇습니다.


map (--mem) 이미지 파일 경로 (가상 드라이브 주소)


이런 식으로 사용해주시면 됩니다. 먼저 MAP 명령어를 쓰시고요, 그 뒤에 차례대로 로드할 이미지 파일을 경로와 그 이미지가 마운트 될 가상 드라이브의 주소를 적어주시면 됩니다. 가상 드라이브의 주소는 (hd32) 같이 적어주셔도 되지만 같은 주소의 드라이브가 이미 있을 경우 충돌 될수도 있으니 (0xff) 같은 주소를 사용하시는 것을 추천합니다.

--mem 옵션은 MAP 명령어 뒤에 붙여주시면 이미지를 램 디스크에 마운트하게 됩니다. 마운트할 이미지 파일의 용량만큼의 램 공간을 차지하기 때문에, 램 용량이 넉넉하신 분들만 사용하시면 되겠습니다. (단, 이 옵션을 사용하실 경우 부팅시 이미지 파일을 램 디스크에 복사하기 때문에 상대적으로 부팅시 많은 시간이 소요됩니다.)

이외에도 상황에 맞게 --read-only, --heads, --sectors-per-track 같은 옵션들을 붙여주셔야 합니다. 그리고 MAP 명령어로 이미지를 마운트 하신 뒤에는 꼭 뒤에 MAP --hook 명령을 붙여주셔야 GRUB4DOS에서 드라이브로 인식됩니다.


MAP 명령어를 이용해서 GRUB4DOS에 복구 도구 추가하기


그럼 이제 이 MAP 명령어를 직접 써보도록 하겠습니다. 앞서 말씀드린 것 같이 이 MAP 명령어를 사용하면 USB에 모든 파일을 복사해서 사용했던 윈도우 설치/PE등을 ISO 파일만으로 부팅시킬 수 있기 때문에 매우 간편한 관리가 가능합니다.

그럼에도 불구하고 전편에서 복잡한 방법을 먼저 알려드린 이유는 제가 ISO 가상화를 그리 선호하지 않기 때문입니다.

일단 부팅 시간이 늘어나고, 모든 ISO를 지원하는 것이 아니며 마운트할 이미지가 단편화(fragmentation) 되어있을 경우 일일히 조각모음을 해줘야 하는 불편함이 있기 때문인데요, 특히 추가할 ISO가 GRUB4DOS의 가상화 기능과 충돌할 경우 대부분의 경우 부팅이 불가능합니다.

그래서 저는 대부분의 부팅 ISO들은 압축을 풀어 사용하고, 간단한 복구 도구 정도만 ISO 가상화 기능을 사용하는 편입니다. 물론 윈도우 설치/PE 또한 ISO 가상화 기능을 통해 부팅 하실 수 있고요, 이 부분에 대해서는 뒤에서 간단히 설명하도록 하겠습니다.



이번 포스팅에서는 수많은 복구 도구 중 무료로 제공되고있는 리눅스 기반의 복구 도구인 Parted Magic을 GRUB4DOS에 추가해보도록 하겠습니다. 윈도우 PE만으로 거의 대부분의 복구 작업을 하실 수 있으시겠지만 저는 꼭 리눅스 하나 정도는 USB에 포함시키는 편입니다. 리눅스 명령어들을 자주 사용하기도 하고 제가 사용하는 프로그램들 중 리눅스에서만 구동되는 프로그램들이 있기 때문인데요, 윈도우 PE만으로 충분하다고 생각하시는 분들은 넘어가셔도 무방합니다. 먼저 아래의 다운로드 버튼을 클릭해 Parted Magic을 다운로드 해 주세요.




다운로드가 완료되셨으면 다운로드 된 ISO 파일을 USB에 복사해줍니다. 경로에 한글이 포함되지 않는 이상 어떤 폴더에 넣으셔도 상관이 없지만 저는 편의를 위해 루트경로에서 작업하도록 하겠습니다.



title Parted Magic
find --set-root {ISO 파일 경로}
map {ISO 파일 경로} (0xff)
map --hook
chainloader (0xff)


이제 이런 식으로 메뉴를 작성한 뒤 저장해줍니다. {ISO 파일 경로}에는 복사하신 ISO 파일의 경로를 적어 주시면 됩니다. 저 같이 루트에 복사하시면 /pmagic_2012_12_25.iso 가 되겠네요.



이 메뉴로 부팅하시면 'Error 62: The number of heads must be specified' 라는 오류가 뜨면서 부팅이 되지 않는 것을 보시게 될텐데요, 바로 ISO가 마운트된 드라이브의 헤드 부분이 정의가 되지 않았기 때문입니다. 이런 오류가 발생할 경우 '--heads=0' 옵션을 MAP 명령어 뒤에 붙여주시면 됩니다.



산넘어 산이네요... 이번에는 'Error 63: The number of sectors per track must be specified.' 라는 오류가 보이는데요, 이번에는 트랙당 할당할 섹터를 지정해 달라네요. 이 경우에는 MAP 명령어 뒤에 '--sectors-per-track=0' 옵션을 붙여 주시면 됩니다.



title Parted Magic
find --set-root {ISO 파일 경로}
map --heads=0 --sectors-per-track=0 {ISO 파일 경로} (0xff)
map --hook
chainloader (0xff)


그래서 Parted Magic을 GRUB4DOS에 추가하는 메뉴는 다음과 같습니다. 보시다시피 MAP 명령어 뒤에 '--heads=0' 옵션과 '--sectors-per-track=0' 옵션을 주었는데요, 이렇듯 MAP 명령어를 사용하실때는 상황에 맞게 적절한 옵션들을 주셔야 됩니다. 대부분의 경우 출력되는 오류 메시지만 보셔도 어떤 옵션을 추가해야 하는지 알수 있으니 적당한 옵션을 찾아서 붙여주시면 됩니다.



잘 부팅되네요 ^^


MAP 명령어를 이용해서 GRUB4DOS에 윈도우 PE 추가하기



지난 편에서 윈도우 PE를 GRUB4DOS에 추가할 때는 ISO의 압축을 풀어 필요한 파일들을 복사한뒤, BCD를 수정해 bootmgr을 로드하는 방법을 사용했었는데요, 윈도우 PE도 GRUB4DOS의 ISO 가상화 기능을 통해 부팅할 수 있습니다.

이 경우 중복되는 파일들을 처리할 수 없어 용량을 조금 더 차지한다는 단점이 있지만, BCD를 편집할 필요가 없어 관리가 간단하다는 장점이 있습니다. (물론 약간의 속도 저하는 피할 수 없지만요;;)



윈도우 PE의 ISO 파일을 통째로 USB에 복사해줍니다. (이번에도 편의를 위해 루트경로에서 작업하겠습니다.)


title Windows PE (from ISO)
find --set-root {ISO 파일 경로}
map {ISO 파일 경로} (0xff)
map --hook
chainloader (0xff)


이런 메뉴를 추가해주세요. 보시면 MAP 명령어 뒤에 아무 옵션도 붙지 않은 것을 확인하실수 있으실 텐데요, 윈도우 설치/PE ISO는 별다른 옵션을 요구하지 않습니다. 그냥 이렇게 추가하시고 부팅해주셔도 됩니다.


//수정 - 윈도우 설치 ISO는 별도의 드라이버가 없으면 윈도우 설치를 진행할 수 없습니다. 자세한 내용은 여기를 참고하세요.


이미지 파일이 단편화 되어있을 경우


앞에서 언급한 것처럼 관리가 편하다는 장점에도 불구하고 제가 ISO 가상화 기능을 즐겨 쓰지 않는 이유는 이미지 파일이 단편화 되어있을 경우에 일일히 조각모음을 해주어야 한다는 불편함 때문입니다.

'단편화'가 무엇인지 모르시는 분들이 계실 텐데요, '단편화'의 사전적 정의는 '하나의 파일을 이루는 데이터가 디스크의 여기저기에 분산되어 있는 일' 입니다. 그냥 쉽게 설명하자면 파일이 조각모음 되어있지 않고 여러개로 나누어져 있다는 것인데요, 이 경우 GRUB4DOS가 나누어져 있는 이미지 파일을 가상 드라이브에 마운트 할 수 없기 때문에 오류가 발생하게 됩니다.



바로 이 오류인데요, 이미지 파일이 단편화 되어있을 경우 GRUB4DOS는 'Error 60: File for drive emulation must be in one contiguous disk area' 라는 오류를 출력하게 됩니다.

이런 오류가 발생할 때는 해당 파일을 조각모음 해주시면 됩니다. 그냥 단순히 윈도우의 조각모음 기능을 사용해서 GRUB4DOS가 설치된 USB 자체를 조각모음 시켜주셔도 되지만 시간이 오래 걸리므로 여기서는 단편화 된 파일 하나만 조각모음 하는 방법을 알려드리겠습니다. 먼저 아래의 다운로드 버튼을 눌러 WinContig 프로그램을 다운로드해 주세요.



 

다운로드된 파일의 압축을 푸시고 32비트 운영체제를 사용하시는 분들은 WinContig.exe 파일을, 64비트 운영체제를 사용하시는 분들은 WinContig64.exe 파일을 실행해 주세요. (무설치 단일 실행파일입니다 ^^)



실행시키시면 이런 창이 열리는데요, 여기서 좌측 상단의 '추가' 버튼을 클릭하시고 조각모음 할 이미지 파일을 추가해주세요.



이미지 파일을 추가하셨으면 우측 상단의 'Defragment' 버튼을 클릭해주세요.



조각모음할 파일이 있는 드라이브를 검사할지 묻는데요, '디스크 검사 안함(C)' 버튼을 눌러 넘어 갑시다.



이번에는 디스크를 정리할지 묻네요, 역시 '디스크 정리 시작안함(D)' 버튼으로 넘어가 줍시다.



이제 조각모음이 시작됩니다. 시간이 좀 걸리니 느긋히 기다려주세요 ^^



조각모음이 완료되면 프로그램을 닫고 다시 USB로 부팅해봅니다.



오류가 사라지고 정상적으로 부팅되는 것을 보실 수 있으실 것입니다 ^^


이렇게 ISO 가상화 기능을 사용하시면 손쉽게 GRUB4DOS에 ISO 파일들을 추가하실 수 있습니다. 하지만 일단 속도가 저하되고 많은 용량을 차지하기도 하고, 각종 오류들에 대처해야 하기때문에 상황에 맞게 ISO 가상화 기능을 사용할지 압축을 풀어 사용할지 잘 선택하셔야 합니다. 특히 아예 GRUB4DOS의 ISO 가상화 기능과 충돌해버리는 ISO 파일들도 있기 때문에 잘 생각하시고 사용하셔야 합니다.

이번 편은 여기서 마치고요, (어쩌다 보니 많이 길어졌네요;;) 다음 편에서는 GRUB4DOS를 통한 윈도우 XP 설치 방법에 대해 알아보도록 하겠습니다.