안녕하세요!


요즘 상당히 재미있는 녀석을 발견하여 계속 가지고 놀고 있습니다.

바로 GRUB4DOS 라는 녀석인데요~~


하드디스크에서도 1차 부트로더를 GRUB, 2차를 윈도우 부트 매니저로 사용하고 있었습니다.

GRUB가 매우 강력해 가끔 하드디스크 정보 날리거나 부트로더 날라가도 사용하기 편하여 사용중 입니다.


그런데 여러가지를 찾다가 GRUB4DOS 를 USB에 설치하여 PE부팅용으로 자주 쓰시는듯 하더군요~~

다른 블로그에서도 여러차례 소개가 되었지만, 제 블로그를 방문해 주시는 분들도 한번 사용해 보셨으면 하여 적어둡니다.


아쉬운 점이라면 GRUB4DOS가 UEFI 부트를 지원하지 않습니다. bootmgr.efi 는 지원 한답니다 ㅠㅠ


차례


1. 일딴 GRUB4DOS가 무엇인가요?

2. 무작정 GRUB4DOS 따라 만들기!

2-1. Bootice를 통한 GRUB4DOS MBR 설치

2-2. GRUB4DOS 부트로더 설치

2-3. menu.lst 작성

3. 메뉴 옵션 알아보고 추가하기

3-1. 윈도우 설치 디스크 부팅 메뉴

3-2. ISO 파일 부팅 메뉴 (윈도우 PE, 복구용 프로그램등)

4. 자신만의 커스터마이즈 혹은 메뉴 팁! (는 다음글!)

4-1. menu.lst 추가 항목들

4-2. 우분투 설치 디스크 부팅 메뉴

4-3. wim 파일을 통한 윈도우 PE 부팅 메뉴

4-4. BCD 수정을 통한 마음대로 메뉴(?)


1. 일딴 GRUB4DOS가 무엇인가요?

일딴 이친구가 무엇을 하는 친구 인지는 알아야 뭘 하든가 하겠지요?!!?!?

사실 저도 처음에 모르고 먼저 만져 보고 나중에 찾아 보았습니다 (...)

뭔가 사면 설명서는 버리던가 나중에 읽고 몸으로 먼저하는 습관 때문인가요..


자세한 내용은 위키백과를 참조해주시면 감사하겠습니다 ^_^

https://ko.wikipedia.org/wiki/GRUB 저도 잘 설명할 자신이 없네요.


뒤에 붙은 4DOS는 말그대로 For DOS 입니다. 윈도우 부트로더를 작동시키는데 조금더 최적화 된 아이라고 하네요.

명령어가 DOS쪽에 더 가깝다고 저도 만질때 어디서 주워들은듯 한 기분이 드네요. 카더라 통신 입니다 ^_^


GRUB For DOS는 오픈소스 프로젝트로 https://gna.org/projects/grub4dos/ 이 사이트에서 소스코드와 자세한 내용을 알수가 있습니다.

사이트에 가시면 최신 버전의 GRUB4DOS 파일을 구하실 수 도 있습니다. 2009년 3월정도에 출시된 0.4.4가 마지막 버전 이네요.


제가 사용하는 버전도 0.4.4 입니다.



제가 발퀄리티로 꾸민 (...) 만든 GRUB4DOS 입니다.


사실 디지누리님의 블로그 를 참조하시면 저보다 훨씬 이쁘게 꾸밀 수 있는 듯 합니다만 저는 귀찮아서 그렇게 못하겠네요!!



2. 무작정 GRUB4DOS 따라 만들기!

일딴 뭔가 "오! 감이온다!" 라는 기분을 받으셨다면 무작정 따라 만드시면 됩니다! (핳)


준비물 : 자신이 원하는 용도에 따른 USB, Bootice (아래 첨부), GRUB4DOS 부트로더 (아래 첨부) + 부가적으로 MobaLiveCD

라는 매우 편리한 친구를 찾았습니다.



USB는 정말 자신이 원하는 크기에 따라 준비해 주시면 됩니다.

난 윈도우를 종류별로 설치파일을 담고싶어!! 하시면 정말 큰 16GB 이상의 USB 를 준비하시면 됩니다.

저는 어디까지나 복구용 USB를 만들었기에 4GB USB에서 작업하고 2.2GB정도가 남았습니다.


Bootice 이친구는 정말 물건입니다;;; 만약에 자신이 멀티부팅을 하신다면 이친구는 한번 쯤 들어보셨거나, 이미 하드디스크 어딘가에 있거나, 한번쯤은 이름도 모르고 실행해 보셨을 수 도 있습니다.

저는 로웰님이 한글화 해주신 UEFI지원 버전인 1.3.3 버전이 하드디스크에 있어 이 파일로 작업을 하였습니다. 출처를 찾고 싶은데 로웰님이 작성하신 글이 보이지를 않네요.


첨부파일1

BOOTICE_v1.3.3_KOR.exe


GRUB4DOS 부트로더는 위에서 알려드린 오픈소스 프로젝트에서도 다운로드 가능합니다.

귀찮으신 분을 위해 첨부 합니다. 0.4.4 버전 입니다.


첨부파일2

grldr


MobaLiveCD 이친구 디지누리님이 사용하시기에 저도 사용해 보았는데...무지편하네요.

제가 여기서 쓸 기능은 이 프로그램의 LiveUSB 기능입니다. GRUB4DOS 를 만드실때 일일이 USB를 확인하시기 위하여 컴퓨터를 재부팅할 필요가 없어졌습니다.

위 제 스크린샷도 이 친구를 통해 찍은것 입니다.


http://www.mobatek.net/labs.html 모바텍(?) 공식 홈페이지 입니다. 위 사이트에서 다운로드 가능합니다.

첨부파일3

http://www.mobatek.net/exes/MobaLiveCD_v2.1.exe 다운로드 링크 바로가기만 빼왔습니다 (...) 복사.


위 첨부파일 1 2 3은 모두 필요합니다~~ 모두 받아주세요~~




이렇게 3개의 파일 입니다.


GRUB4DOS 공식 배포 사이트에서도 배포하는 프로그램으로도 가능하지만, 대체로 Bootice와 MobaLiveCD를 가장 많이 사용하는듯 하네요.


2-1. Bootice를 통한 GRUB4DOS MBR 설치


GRUB4DOS 환경을 구성하는데 가장 어렵다고 할 수 있겠네요.

정말 가장 고생했습니다 ㅡㅡ;


우선 Bootice 를 실행 합니다.



실행이 되셨다면, 먼저 대상디스크를 선택해 줍니다. 꼭 자신이 연결하신 USB 인지 확인해 주세요!


확인이 되셧다면, "MBR 작업" 버튼을 클릭합니다.




마스터 부트 레코드 (MBR)을 선택할수 있는 창이 나옵니다.

우리는 GRUB4DOS 환경을 구성해야 하니, GRUB4DOS 를 선택한 뒤 설치/구성 버튼을 눌러줍니다.




GRUB4DOS 환경 설정 입니다. 사실 우리는 뭔지도 모르고 건들 필요도 없습니다!

하지만 만약에 USB 혹은 SD카드가 exFAT 으로 포맷되 있으시다면, GRUB4DOS 버전을 0.4.6a 로 바꾸어 주셔야 합니다.

파일 이름은 제 파일을 받으셨다면 그대로 쓰시면 됩니다 :)


자 이제 디스크에 저장 버튼을 눌러주세요!


오류 없이 모두 진행되셨나요??

하아 이제 끝입니다...가장 어려웠어요...무려 클릭을 5번씩이나 진행해야 했습니다...; 공부가 가장 쉬웠어요



2-2. GRUB4DOS 부트로더 설치


이 글 중에서 가장 쉬운편에 속하는 작업 입니다.


위에서 받으신 첨부파일2 grldr 파일 기억하시나요?

"grldr" 파일을 방금 MBR 작업을 하신 USB에 담아줍니다.



바로 "grldr" 요친구를 복사하여



아까 MBR을 설치하신 드라이브에 붙여 넣어 줍니다.


설치가 다되었습니다!! (?)



2-3. menu.lst 작성


이녀석을 다 하시고 나신다면, 여러분들은 성공적으로 GRUB4DOS를 이용하여 USB 복구 환경을 만드신 상태 입니다!!


우선 방금 grldr 파일을 복사하신 드라이브에 빈 파일을 아무거나 만들어 줍니다.

텍스트 파일이든 ZIP파일이든...확장자 명을 바꿔야 하니깐요! 0KB 의 아무것도 들어있지 않은 파일이면 됩니다.



정말로 아무 파일이나 만들어 주시면 됩니다...폴더와 바로가기를 제외하구요!




그런다음 위처럼 파일명을 menu.lst 로 바꿔 줍니다.


혹시 확장자 명이 안보이시나요?


그런 뒤 메모장이든 워드패드, MS오피스 워드, 노트쁠쁠이든 자작프로그램이든 무엇이든간에 텍스트형식의 파일을 수정할 수 있는 프로그램으로 열어 줍니다!


그리고 가볍게 타이핑 해줍니다.


title Power Off

halt


그런 뒤 안전하게 저장 해 줍니다!



딱 감이 오시나요? 지금 여러분들은 메뉴에 컴퓨터 종료 메뉴를 추가한 GRUB4DOS 를 완성하셨습니다!! (...)


이제 요거라도 실험을 해보셔야 하니 첨부파일 3에서 받으신 mobaLiveCD 를 실행해 줍니다.

실행하실때는 꼭!! 관리자 권한으로 실행해 주셔야 합니다!

그냥 실행하시면, 권한때문에 일부 필요 드라이버(?) 파일을 제대로 설치하지 못하는 듯 합니다. 뭐 제가 본 경험담은 아니구요!



위의 LiveUSB 열기 버튼을 눌러줍니다.



자신이 GRUB4DOS 부트로더를 설치하신 드라이브를 선택하시고, OK!



가상머신을 위한 쏼라쏼라. 필요 없습니다! 우린 체크만 할껍니다!



만약에 위와 같은 화면이 나온다면 여러분들은 성공적으로 GRUB4DOS 부트로더를 구성 하신 겁니다.

그리고 엔터를 누르면 에뮬레이션이 꺼지기까지 한다면 정말 완벽 그자체!



3. 메뉴 옵션 알아보고 추가하기!

3-1. 윈도우 설치 디스크 부팅 메뉴


윈도우 설치 디스크 부팅 메뉴 추가 입니다.

우리는 ISO파일을 읽기전에 직접 윈도우 bcd 를 읽어오는 방법을 알아보겠습니다!

단 이 방법은 윈도우 비스타 이상의 윈도우 에서만 사용이 가능 합니다.

윈도우 XP는 되지 않습니다. 윈도우 XP는 약간 다른 방법을 통해 ISO 파일 형태로 가상화를 진행을 시키셔야 합니다만 XP 지원 중단되었습니다. 설치 하신다면 꼭 말리고 싶습니다. 방법 다루지도 않겠습니다...


우선 혹시 Snoopy님의 하드디스크에서의 설치 방식을 아시나요?

그와 비슷 합니다. 우리는 그 친구를 GRUB4DOS의 명령어를 통해 사용하는 것과 비슷합니다.


GRUB4DOS에서 bootmgr을 읽어, 윈도우 부트 매니저를 띄운뒤 bcd 파일을 읽어 파일 내의 설정에 따라 설치 파일을 로드 시킵니다.


여기서 사용할 명령어는 "find" 와 "chainloader" 입니다.

명령어에 대한 자세한 설명은 "http://seleucos.tistory.com/649" 이 블로거 분이 설명을 자세히 적어 주셨기에 링크로 대체 합니다!


우선 설치를 원하는 윈도우 운영체제의 ISO 파일을 준비 합니다.

윈도우 비스타 이상의 윈도우라면 아무것이나 상관 없습니다. 서버 제품군도 마우스를 통하여 설치를 진행하는 비스타 기반의 서버 이상의 제품군이라면 다 가능 합니다.


저는...예를 들어서 사진을 찍으려니 남겨둔 모든 ISO파일을 담아둔 USB 를 이 글 찍는 다고 포맷해버리면서 날렸네요... 선포맷 후생각;;;


우선 ISO 파일을 압축을 풀어보시거나, 압축 프로그램으로 열어보시거나, 윈도우8 부터 탑제된 ISO 탑제 기능을 사용하여 가상 마운트 시켜 보신다면 아래와 같은 3개의 폴더와 파일을 보실수 있습니다.




"boot" 폴더, "sources" 폴더, "bootmgr" 파일


실제로는 bootmgr 파일이 0KB가 절대 아닙니다!!!!!


이 3개의 폴더와 파일을 만드신 복구용 USB 루트에 복사해 주세요.

저 3개만 복사하시면 됩니다 :)


다 복사가 되셨다면 USB의 내용물은 아래와 같습니다.




이제 다시, menu.lst 파일을 텍스트 편집 프로그램으로 열어 줍니다.



그런 뒤 처음에 추가 하였던, title Power Off 줄 위에 아래와 같이 타이핑해 줍니다.


title Windows Setup

find --set-root /bootmgr

chainloader /bootmgr


딱 명령어를 보시면 감이 오시나요?


title 은 GRUB4DOS에 표시될 이름 입니다. 마음대로 수정 하셔도 됩니다.

find 는 부트로더에게 bootmgr 파일의 위치를 알려주는 (...) 간단한 과정이라 생각하시면 됩니다.

chainloader 는 그 친구를 부트로더로서 읽으라는 명령 입니다.


다 되셨다면 저장을 하시고, mobaLiveCD 프로그램으로 다시 에뮬레이션을 해줍니다.



각자 자신들이 추가하신 메뉴가 보이실껍니다.

이름은 똑같이 따라하셨다면 Windows Setup 메뉴 입니다!



만약 정상적으로 설치 파일이 복사가 되셨고, 타이핑에 오타도 없으셨다면 별다른 오류 없이


위와 같이 윈도우 설치 디스크를 읽으면 나오는 친숙한 화면으로 넘어 갑니다.

하단 스크린샷 알람은...왜끼어들었대요!!


만약 이 과정부터 문제가 생긴다면 에뮬레이션이라 그렇습니다. 실제로 부팅하시면 됩니다.


실제 부팅을 하신뒤 진입하시면 동일한 화면이 나옵니다 :)



3-2. ISO파일 부팅 메뉴


윈도우 PE를 보통 받으시면 아마 통짜 ISO로 받으시게 될껍니다. 또한 USB에 담을 수 있는 복구용 프로그램들도 받으셔도 ISO 로 받으실껍니다.


그러한 ISO 파일들을 GRUB4DOS 에서 바로 읽는 법을 알려드리겠습니다.


하지만 저는 이 방법을 권장드리지 않습니다. 이유는 바로 USB에 담아두는 것 이기 때문인데요!!

FAT32든 NTFS든 USB에 담아두신다면 파일 단편화 현상때문에 나중에 ISO파일이 필요할때 제대로 읽지를 못하는 경우도 있고

무엇보다 직접 boot 폴더와 wim 파일을 읽는거보다 상당히 느립니다.

일딴 그래도 가장 많이 쓰이는 기능이기에 적어둡니다!


여기서 필요한 명령어는 "find" 와 "chainloader" 와 새로운 친구인 "map" 입니다.


저는 지인분께서 만들어주신 노턴 고스트 11.5.1 64비트 ISO 를 읽어 드리겠습니다.

ISO는 원하시는 걸로 직접 구하시면 됩니다 :) 사실상 윈도우 PE를 받으신 다음에 따라해 주셔도 무방 합니다.


우선 구하신 ISO 파일을 복구용 USB 드라이브에 담아줍니다.


최상위 루트 폴더에 담으셔도 무방하시구, 원하신다면 한글이아닌 영문 폴더 내에 담아두셔도 상관 없습니다.

무조건 영문이기만 하고 그 경로를 기억만 하시면 됩니다. 기억이래봤자 이 글을 읽는 동안만이면 충분 합니다^^;;


저는 스크린샷 찍는 편의를 위해(?) 최상위 폴더에 담았습니다.



(용량이 5KB인건 그냥 넘어가주세옇)


그런 다음 역시 menu.lst 를 열어 주세요.



크으 딱 보시면 역시 감이 오시죠?!?!!?!? (...)


title 메뉴명

find --set-root "ISO파일위치"

map "ISO파일위치" 가상디스크마운트위치

map --hook

chainloader 가상디스크마운트위치


한가지 주의 하실점은 GRUB4DOS는 폴더 경로를 나타낼때 \가아닌 /를 사용합니다. 아시는 분들이라면 왜 그런지도 아시겠지만, 전 우분투 처음쓸때부터 그렇게 왜쓰는지도 모르고 그냥 쭉 써와서 \보다 더 친숙하네요 (...)


그리고 어느분들의 글을 보면 --mem 이라는 옵션을 다는 글들이 있습니다.

mem 은 저 ISO파일을 램에다가 복사한 뒤 읽게 만드는 명령어 인데요, 메모리가 작은 PC라면 중단될뿐더러 시간이 걸리므로 저는 쓰지 않습니다.


title 은 본인이 원하시는 명 적어 주시면 됩니다.

다음은 find 역시나 위치를 알려주어야 합니다.

새로운 명령어인 map.

ISO 파일등의 이미지 파일들을 가상 드라이브로 마운트 시켜주는 명령어 입니다.

map 파일위치정도는 아실테고, 뒤에 붙은 가상디스크 마운트 위치라는 것은 무엇인가요??


말 그대로 GRUB4DOS에서 저 ISO파일을 가상 마운트 시켜서 어느 위치에 마운트 시킬꺼냐 지정해 주는 것입니다.

리눅스에서 사용하는 것 처럼 (hd*) 으로 하드디스크 번호를 지정해 주셔도 무방합니다.

만약에 map /ghost.iso (hd0) 으로 지정을 하신다면 hd0에 마운트를 하려고 할껍니다.

하지만 보통 hd0은 여러분의 PC에 장착되어있는 첫번쨰 하드디스크를 의미 합니다. 이미 있는곳에다가 마운트를 시키면 되지도 않을 뿐더러, Chainlodaer 명령을 통해 해당 마운트 위치를 불러온다면 아마 여러분 디스크의 첫번째 파티션을 불러오게 됩니다. ISO를 읽지를 않아요!!


그래서 이러한 상황을 방지하기 위해서 보통은 (0xff) 를 쓴다고 합니다. 16진수 숫자로 나타내면 (hd255) 입니다. 가장 끝 부분. 즉 혹시모를 충돌을 방지 하는 것이죠.


그리고 map --hook 를 입력해주어야 GRUB4DOS에서 아 이 위치가 그냥 가상디스크아니라 일반 디스크 구나! 라고 인식을 합니다.

그런 뒤 chainloader 를 통해 hd255 즉 우리가 ISO를 가상 마운트한 0xff 위치를 읽게 만들어 줍니다.


여기까지 문제 없이 만드셨다면 저장을 하시고 이제 mobaLiveCD 로 가셔서 PE로 부팅을 해봅시다!!



새롭게 추가한 두번째 Windows PE / Ghost 메뉴가 보입니다. 여러분들이 지정한 타이틀이 보입니다~~



여기서 부터는 받으신 ISO따라 다릅니다.

PE들은 모두 윈도우 설치 디스크에 이용되는 녀석을 기반으로 제작되었기에 윈도우처럼 아무키나 누르면 CD나 DVD로 부팅한다 나옵니다.

아무키나 눌러줍니다.

만약 이 과정부터 문제가 생긴다면 에뮬레이션이라 그렇습니다. 실제로 부팅하시면 됩니다.



성공!


위 map find chainloader 명령어만 알면 응용을 통해 어떠한 ISO라도 다 로드시키실수 있습니다!


감사합니다!! 두번째 글을 작성하면 이 글은 약간 수정될 수 있습니다.

(해봤자 귀찮아서 그냥 링크 다는게 다입니다 ㅎㅎㅎ)

  1. ㅇㅅㅇ 2016.03.10 17:43 신고

    menu.lst 에 본문 내용 그대로 타이핑 하였는데 결과가
    find / menu.lst, /boot/grub/menu.lst, /grub/menu.lst
    commandline
    reboot
    halt
    이렇게 4가지가 나옵니다. 무엇이 문제일까요??

  2. 동시 2016.06.30 00:52 신고

    안녕하세요.

    USB 1개에 윈도우7이랑 10 동시에 넣으려고 하는데

    boot 폴더, sources 폴더, bootmgr 파일 이렇게 이름이 같은 경우는 어떻게 해야하는건가요?

  3. JS Han 2016.09.18 19:37 신고

    menu.lst 작성하고 MobaliveCD prg 작동했으나

    Windows Setup
    Power Off

    안나와요??

    정확하게 타이핑 했는데요
    알려주세요
    감사합니다

  4. 살려주세요 2017.04.19 15:24 신고

    살려주세요 제발....
    멀티부팅을 만들었습니다

    근데 치명적인 오류가있습니다

    설치화면까지 넘어갑니다
    윈7,윈10 두개 했는데 둘다 설치화면까진 넘어가는데

    드라이버 로드 필요한 cd dvd 드라이브 장치 드라이버 가 없습니다 라는 문구가나와서 다시찾기나 찾아보기해도 없다그러고 ㅠㅠ
    이것만 해결하면 윈7,윈10 둘다 설치할수있게 멀티 부팅USB가 되는건데 그게 안되네요

  5. Favicon of https://acpp.com BlogIcon 김삿갓 2018.04.22 10:08 신고

    행복을 찾아가야 행복도 다가옵니다.행복을 찾아가야 행복도 다가옵니다.행복을 찾아가야 행복도 다가옵니다.

  6. Favicon of https://acpp.com BlogIcon 김삿갓 2018.04.24 00:47 신고

    행복을 찾아가야 행복도 다가옵니다!!행복을 찾아가야 행복도 다가옵니다!!행복을 찾아가야 행복도 다가옵니다!!!s

  7. Favicon of https://acpp.com BlogIcon 김삿갓 2018.04.24 01:57 신고

    행복을 찾아가야 행복도 다가옵니다행복을 찾아가야 행복도 다가옵니다...행복을 찾아가야 행복도 다가옵니다...

+ Recent posts