[멀티부팅] Grub4Dos 전체적인 설명

Grub4Dos 란?

이걸 알기전에 하드디스크의 부팅영역에 알 필요성이 있다. 다음 그림을 보고 정독하기 바란다. 

 

 

 

 

 

 

MBR : 하드디스크의 제일 먼저 읽어 들이는 중요한 부분이다. 마스트 부트 레코더 약자로 하드디스크의 전체적인 관리를 한다고 볼수 있다. 이부분으로 하드 파티션을 감출수도 있고 부트섹터를 이용해서 멀티 부팅을 만들수도 있다. 그러나 MBR의 정보가 잘못되어서 하드디스크 파티션이 꼬일수도 있고 굳이 지운다고 부팅 안되는것도 아니다. MBR에 정보가 없으면 자동으로 Activate 된 부트영역에 부팅을 시도를 한다. 그러나 MBR영역을 지우게되면 와 부팅영역하고 관련된 부분도 있어서 어떤 경우엔 부팅조차도 안되는 경우도 있고 MBR영역을 지워도 그영역이 제데로 지워지지 않아 하드가 맛이 간것처럼의 착각도 일으키게 만든다. 센토리의 경험에 의하면 부팅이 되지 않아 MBR영역을 Fdiak.exe /MBR 지웠음에도 불구하고 부팅이 안되는 경우가 있엇다. Clearhdd.exe 로도 하드 날려서 파티션 지정 Activate 해도 부팅이 안되는 경우가 있었다. 보통 네이버에 검색하면 Fdisk 로 MBR영역을 지우라는 말이 많다. Dos의 트레이드 마크중에 하나이지만 이것또한 100% 신뢰가 안간다는게 경험에 의하면 그렇더라.. 결국 Gdisk 높은 버전으로 부팅가능하게 되었다.

 

Boot Sector : MBR 다음으로 읽어 들이는 영역이다. 실질적으로 부팅가능한 지역이라고 볼수 있다. Dos 는 이영역에 IO.SYS를 읽어 들이고 XP는 NTLDR을 읽어 들인다. 이영역은 어셈블리어로 넣거나 Dos SYS.COM처럼 프로그램을 이용후 이영역에 부트파일을 넣어야 한다. 그냥 포멧후 부트파일만 넣는다고 100% 부팅이 되는건 아니다.

 

*부팅이 안돼는 경우는 MBR 와 Boot Sector 연관성 100%다 아니면 기계적인 결함.

 

Primary : 기본 파티션이라고 부른다. 기본 파티션은 Boot Sector영역과 함께 포함된다. 파티션은 하드디스크의 영역이라할수 있다. 이렇게 파티션을 만들게되면 드라이브가 생겨나고 기본은 C: 시작해서 Z: 까지 생기게 할수가 있다.

 

Activate : 부트 파티션을 활성화 시킨다. Primary 파티션에서만 줄수 있으며 같은 Primary 여러개가 있다면 어느 파티션을 부팅을 해야 할지 모르므로 Activate 를 주어 이파티션에 부팅 하겠다 라는 것이다. 설정을 안해주면 부팅이 안되므로 꼭 지정 해주어야 한다.

 

Extended : 확장 파티션이다. 확장 파티션은 논리 영역을 만들때 쓰는 부분이다. 논리 영력은 무엇이냐면 Primary 영역만 사용할경우 데이터의 보존성이라던가 관리가 힘들수가 있다. 그걸 보안한것이 이 확장 파티션을 만들어서 데이터를 따로 분리 시킴으로써 Primary 데이터가 위험해졌어도 확장파티션데이터는 보존이 된다는것이다. Dos 초기인지 버전 몇인지는 몰라도 (예전에 컴퓨터 배울땐 하드디스크도 없는 16비트로 공부 했었다. 그때 도스 버전이 3.xx로 나갔엇던것같다. 286 도입되면서 MS-DOS 5.0을 알게되었고 FDISK.EXE 으로 하드 디스크 분할하는걸 알게되었다. 아무튼 Extended 는 단순 영역만 지정 하는것이다.  그러므로 이 영역안에 논리 영역을 만드는것이다. 위의 사진은 Extended 안에 한개의 Logical 만든 경우이다.

 

Logical : Extended 영역안에 존제하는 논리 파티션이다. 저 영역안에 논리파티션을 만들수가 있다. 보통 1개 만들지만 사용자에 따라 1개 이상도 만들수가 있다. 단 드라이브문자 는 계속 늘어나게 될것이다. 그러므로 드라이브가 많아지게되면 헷갈리므로 볼륨이라는걸 사용한다. 파티션마다의 이름표라고 보면된다.

 

Grub4Dos 를 사용할려면 위의 설명 개념을 확실히 알수록 도움이 된다. 물론 하드디스크의 구조 공부하기에도 좋다고 볼수있다.

 

Grub4Dos 구동원리

Grub4Dos 구동원리는 다음과 같다.

MBR에 심어진 Grub4Dos에서 Grldr 파일을 찾는다. 자동으로 하드 디스크내의 파티션에서 검색한다. 그리고 찾게되면 Grldr에서 Menu.lst 를 찾는다 물리하드 1번 -> 파티션 -> 물리하드 2번 -> 파티션 이렇게 찾는다. 많일 찾질 못하게되면 Grldr내부의 메뉴를 호출한다. 센토리는 Menu.lst 못찾은 상태에서 뜬 매뉴로 수정을 하여 부팅가능하게 할수가 있다. 물론 현재 부트파티션의 구조와 Grub4dos 내부 명령어를 알게되면 수정해서 부팅이 가능하다. 그리고난다음에 Menu.lst를 만들거나 백업된걸 가져올수있다. 그리고 만일 Grldr도 못찾게되면 커멘드라인으로 들어간다.(이부분은 외부로 부팅할수 밖에 없는 상황)

 

Grub4Dos MBR에 정보 넣기

[잡담]

센토리는 약 1년 2~3개월 전에 멀티매뉴인 부트 매직을 사용 해왔었다. 유명한 퀘스트(?)사의 파티션매직 프로그램의 부속 프로그램에 있는 기능으로 XP에서 멀티매뉴를 쉽게 구성이 가능하다. 암호도 걸수있어서 피시방에서도 활용이 가능햇지만 의외로 이프로그램을 아는 사람은 별로 없다. 파티션 매직은 검색만해도 수두룩빽빽하게 정보가 많다. 참고고 파티션 매직은 기존의 데이터를 살리면서 파티션을 나눌수가 있다. 물론 증말 중요한거라면 다른데 백업은 필수이다. 왜나 파티션 나눈중에 하드의 이상이거나 정전이거나 되어버리면 그안의 파티션 정보는 어떻게 될지 모른다. 편하게 데이터 날라갓다고 생각하면 쉽겟지만.. 복구 프로그램으로 어떻게든 살리면 다행이지만... 아무튼 이 부트매직을 더이상 사용이 불가능햇다. 왜나... Sata 하드를 인식 못하는것.... E-IDE방식은 거의 활용이 가능하지만... 그래서 이것때문에 수일밤 밤설쳐가며 여기저기 검색해가며 결국은 포기한 부분이었다. 그래서 멀티 부트를 찾기위해 찾다찾다 알게된것이 Grub4dos 이다. 그때 당시만해도 네이버에서 검색하면 어느 블로그 달랑 한개만 검색될정도로 정보 수집하기가 여간 힘들엇다. 내가 영어라도 알면 머 ㅡㅡ 독파 하면돼지만 챙피하지만 영어 몇단어 밖에 모른 상테에선 증말 눈물 날정도로 힘들엇다는것..; 그래서 성공하고나서 해본에 xp 만 4개 가까이 설치해본적이 있었다. 그때만 해도 흥분의 도가니었지만;;

 

중요한건 이녀석 매뉴를 보게 만들려면 MBR에 Grub4dos 를 심어야 했다. 그게 바로

Bootlace.com (dos) 와 grubinst.exe (XP) 인것이다. 특별한 경우가 아니면 Bootlace.com 을 이용햇으므로 이부분만 설명한다.

Dos 상태에서

Bootlace.com 0x80 [엔터]

이렇게 나오면 설치가 성공된것이다. 알고보면 너무나 간단한건데... 지금은 충분히 검색을 통해 설치방법이 자세하게 나온다. Grubinst.exe 도 포함이다.

 

Grub4Dos 메인매뉴 설명

아래의 설명을 해본다.

1. 위아래 화살표키로 매뉴 선택을 한다.

2. 엔터 또는 b 키를 누름으로 부팅을 선택된 메뉴 부팅을 시도한다.

3. e 키를 누르면 선택된 매뉴의 편집창이 뜬다. 편집창엔 추가 편집창이 뜬다.

4. c 키를 누르면 grub4dos 명령어 모드로 들어간다.

 

이상 기본매뉴 설명을 마친다.

 

Grub4Dos 하드 번호 파티션 구분

 

위의 그림을 보면

(하드물리하드번호,파티션번호) 해석하면된다.

추가로 파티션번호에 대해 설명을 하자면 0~3번까지는 로컬 파티션이다. 그이후의 4번부터가 Logical 파티션으로 번호가 매겨진다. 센토리 경험에 의하면 이 번호는 어떠한 상황이 주어졌을경우 번호가 바뀌기도 한다. 예을 들어 Primary 파티션이 2개 있으면 보통 첫번째 파티션 0, 두번째파티션 1 이 정상이지만 경우에 따라서 이 두번째 파티션 번호가 2가 될수 있고 3이 될수가 있다. 물론 4나 6처럼 엉뚱하게 Logical 파티션번호로 가진 않는다. 하드를 완전히 날리거나, 혹은 MBR 문제을 일으키지 않는이상 한번 지정된 파티션 지정된 번호는 바뀌지 않는다. 첫 설정할때 미리 파악 해볼 필요성이 있다는 것이다. 파악하는건 쉽게 볼수가 있다. 추가적으로 Tab 키를 이용한 예제이다.

 

아 또 한가지 유심히 볼수 있는부분은 (hd0,2)부분이다. 이부분은 Dos Primary 파티션인데 (hd0,1) 잡혀야할 상황에 (hd0,2)로 잡인 대표적인 예제이기도 하다. 저녀석을 1번으로 바꿀려고 많은 시도도 해보고 여기저기 정보를 밤새도록 찾아봐도 결국 해결 못한 부분이다.

 

Grub4Dos Command Mode and Menu.Lst

커맨드라인에 대해 센토리가 부팅과 배경 이미지 넣는것만 상세 설명 하겠다.

메인매뉴 에서 c 키를 누르면

grub>

나온다

grub> help

   명령어가 주루룩 나온다. 상당히 많긴한데 몇가지만 알아도 부팅하는데 문제는 없다.

grub> find --set-root /ntldr

   위의글을 정독을 햇다면 ntldr이 먼지 알것이다. 참고로 Grub4dos 는 원레 리눅스 멀티 부팅으로(grub) 나온걸 개량(?)해서 dos사용자도 사용할수 있게 만든것이 Grub4dos 이다. 리눅스와 도스의 차이점중에 하나로 ms-dos는 \ 디렉토리 표시이지만 리눅스는 / 디렉토리 표시이다. \ 마크가 영문상태에선 역슬러쉬가된다. 그러므로 리눅스 형식을 따른다. 위의 명령어뜻은 ntldr 있는 파티션을 찾는명령어이다. 보통은 찾게되면 (hd0,0) 뜬다.

grub> clear

   화면을 지운다.

grub> splashimage (hd0,2)/grub/xpm/Ju1-2.gz

   배경 이미지를 삽입한다. 위의 예제는 저부분에 Ju1-2.gz 를 불러낸 상황이다.

Esc Key

   메뉴화면으로 돌아간다.

 

Menu.lst 작성.

# OPGM 부팅메뉴

   주석이다

splashimage (hd0,2)/grub/xpm/Ju1-2.gz 

   배경 이미지 삽입한다. 경로지정은 연습하면서 나름대로 찾아보아야한다. 이건 예제이다.

password --md5 [암호값] (hd0,2)/grub/m1.lst

   메인매뉴에 패스워드를 건다.

상단에 이 명령어가 들어가게되면 위의 설명과 달리 이 메인 화면엔 어떠한 수정작업이나 커맨드라인에 들어가질 못한다. 단 추가 설정 해줘야 할부분은 Bootlace.com 에 --duce 옵션을 넣어주어야 한다. --md5 옵션은 --md5방식의 암호값을 넣으면 사용자가 아닌이상 암호를 알수가 없다. 물론 --md5옵션 없이도 단순하게 123 처럼 넣어도 된다.

위의 해석은 암호값이 맞으면 /grub/m1.lst를 불러온다. grub로 --md5 옵션은 cd 부팅 만들때 유용할껏같다. 그러면 자체 시디로는 암호를 알수가 없으니 타인이 부팅이 접근 불가능하게 만든다. 물론 Menu.lst 찾아봤자 암호화된값은 해석이 안된다.

   실제 실행하면 저 M1.lst 메뉴 호출 할려면 p키를 누르면 암호 입력창이 나온다  암호 입력하고 나면 m1.lst 메뉴를 볼수 있을것이다.

   *경고* 경로는 확실해야 한다. 만일 틀릴경우 외부 부팅으로 들어 가야한다.

timeout 5

default 0 

   타임이 5초 뒤면 지정된 번호로 자동으로 부팅 시도한다. 메뉴순서는 0번부터 시작된다.

title [** OPGM XP HDD Boot Nomal Mode **] 

   메뉴 타이틀을 넣는다.

hide / unhide  

   지정된 파티션을 숨기거나 혹은 풀어줄수 있다. 숨긴뒤엔 접근이 불가능해진다. 물론 Gdisk로 풀수가 있다.

   * 경고 * hide (hd0,0) 즉 부팅할부분을 숨겨버릴경우 오류가 나므로 잘 생각해서 써야 할껏이다.

makeactive

chainloader  (hd0,0)/ntldr

  makeactive 부트 하려는 파티션을 활성 해놓고 (hd0,0)/ntldr 부팅 한다는것이다. xp 같은 경우 chainloader +1 해도 상관없다.

  부트 첫번째 섹터를 읽는다는 뜻이다. 그리고 makeactive 부분은 xp나 비스타 등 여러 운영체제를 설치 하지 않는한 쓸필요성은 없다.

rootnoverify (hd0,0)

   이부분은 잘 모르는 부분이다. 루트가 바뀌지 않게 지정하는거라는것밖에.. (추가설명 필요)

  [추가] 경험상으로 Map 으로 드라이버장치를 바꾸게되면 이 명령은 꼭 써주어야 한다.

  map --mem (hd0,2)/T_mem/gm.img (fd0)
  map --hook
  chainloader (fd0)+1
  rootnoverify (fd0)

이예제는 골드메모리를 부팅하는 문이다. 부팅파일 GM.IMG 을 (fd0)으로 장치를 플로피로 바꾸어준다.그리고 마지막에 rootnoverify (fd0) 넣어주어야 정상 부팅이 된다.

 

pause --wait=0  OPGM System....

   부팅후 조금이나마 멋지게 소개할때 써먹을수 있다. 0은 초를 나타내며 짥은말을 볼땐 1초나 2초 주어도 됀다. 아무키나 누르면 바로 넘어가는 특징이 있다.

kernel (hd0,2)/T_mem/memtestp.bin

  커널 부팅과 관련된 명령어같다. 아직 확실한정보를 모른다. 다만 위의 예제처럼 MEMTESTP.BIN은 메모리 테스트 프로그램이 들어있는 커널방식의 부팅 OS이다.

 

 

Grub 인식 안되는경우

Grub4Dos 에 MBR에 등록 시키는 방법은 Dos Bootlace.com 과 Windows 에서는 Grubinst.EXE가 있다.경험에 의하면 컴퓨터별로 인식이 안되는 경우가 있었다. 제일 원시적인 Dos설치는 실패했으나 Win에서 설치는 가능한 실제예도 있었다.

Grub4Dos설치후 문제점 생겼을때 나타나는 증상

'GRLDR'파일찾는중에 멈춘다. 몇몇컴퓨터에서 발견. 그러나 기존의 MBR을 제거후 Win에서 설치후엔 정상 작동 되었다.

 

작성 : 센토리님

위로 스크롤