메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

시스템 관리용 오픈 소스 패키지 톱 5: 제3편 GRUB

한빛미디어

|

2003-07-07

|

by HANBIT

12,320

저자: 『시스템 관리의 핵심, 개정3판』의 저자 아일린 프리시/『시스템 관리의 핵심, 개정3판』의 역자 홍상욱 역

본 기사는 가장 유용하고 널리 사용되고 있는 오픈 소스 관리 툴을 소개하는 5부작 시리즈 기사중에 세번째 기사이다. 어떠한 유닉스 운영 제제를 사용하고 있든지 이와 같은 툴을 사용하면 작업이 한결 수월해진다.

3위: GRUB

리눅스 시스템 관리자라면 LILO 부트 로더를 사용해 본적이 있을 것이다. LILO(리눅스 로더)는 리눅스는 물론이고 인텔 기반 PC 하드웨어에서 돌아가는 다른 운영체제(윈도우 포함) 등을 부팅할 수 있게 해주는 훌륭한 툴이었다. 근래에는 보다 범용적이고 유연한 새로운 부트 로더가 많이 사용되고 있다. 특히 GRUB라는 부트 로더(Grand Unified Bootloader의 줄임말)가 대표적인 것으로, 첫 버전은 에릭 볼레인(Erich Boleyn)이 작성했으며 현재는 GNU 프로젝트의 일부로 진행되고 있다. 현재 개발은 고든 맛지그케잇(Gordon Matzigkeit), 오쿠지 요시노리(Okuji Yoshinori) 등이 담당하고 있으며, 프로젝트 홈페이지는 http://www.gnu.org/software/grub이다.

GRUB 개발자들은 다음과 같이 말하면서(아래 인용문은 고든이 한 말임) 자신이 만든 프로그램을 아주 자랑스럽게 생각하고 있다.
일부 컴퓨터 사용자들은 운영체제와 커널을 함께 얘기해서 "GNU/리눅스", "GNU/Hurd" 등을 사용한다고 한다. 또 어떤 사람들은 커널에 가장 큰 의미를 부여해 "리눅스 시스템"을 사용하고 있다고 하기도 한다. 개인적으로 필자는 둘 다 잘못된 표현이라고 생각한다. 가장 중요한 소프트웨어는 부트 로더이기 때문이다.

그래서 필자는 이상에서 언급한 시스템을 "LILO", "GRUB" 시스템이라고 불렀다. 그러나, 아쉽게도 아무도 나를 이해하지 못했기 때문에 이제는 GRUB 대신, "GNU"라고 하고 있다. 그러므로 누군가가 "GNU" 시스템에 대해서 이야기 하고 있다면 그 사람이 사실은 최고의 부트 로더인 GRUB을 얘기하고 있다는 사실을 기억하기 바란다!
고든의 논리대로라면 언젠가는 모든 "리눅스" 시스템, "FreeBSD" 시스템 등등이 GRUB 시스템이 될지도 모르겠다. 실제로, 레드햇, SuSE 최신 버전은 GRUB을 기본적으로 설치하거나 옵션으로 제공하고 있다.

GRUB의 장점

필자는 다음과 같은 사유로 다른 부트 로더보다 GRUB을 선호한다.
  • 부팅 할 운영 체제와 독립적으로 작동한다
  • 부팅 선택이 간단한 메뉴 인터페이스로 구성되어 있다
  • 부팅용 셸이기도 해서 임의의 부트 명령어를 입력할 수 있을 뿐만 아니라 기존 메뉴 항목을 변경할 수도 있다
  • 커널 또는 시스템 설정을 변경할 때마다 GRUB을 재설치할 필요가 없다

시스템 관리의 핵심, 개정 3판

참고 도서

시스템 관리의 핵심, 개정 3판
에일린 프리시, 홍상욱 역


GRUB 컴포넌트

GRUB은 다음과 같은 컴포넌트로 구성되어 있다.
  • 다양한 운영체제 환경을 지원하는 1차 및 2차 부트 로딩 프로그램
  • GRUB을 설치하고 설정하는데 사용할 수 있는 유닉스 유틸리티
  • 부트 과정과 관련 메뉴 항목을 정의하는데 사용되는 grub.conf 설정 파일
GRUB에서 디스크 이름

GRUB의 설정 방법을 설명하기 전에 GRUB에서 어떻게 디스크들이 지명되는지부터 이해해야 한다. GRUB에서는 운영 체제와는 무관하게 자체적으로 디스크 파티션 및 슬라이스를 지정할 수 있도록 되어 있다. 다음은 일반적인 디스크 지정 구문이다.
(hdn,p)
여기서 n은 디스크 번호(0에서 시작), p는 파티션 번호(역시 0에서 시작)를 말하는 것이다. 예를 들어 세 번째 하드 디스크의 두 번째 파티션은 다음과 같이 지정된다.
(hd2,1)
하드 디스크 파티션을 이 이상으로 분할하는 운영체제를 사용하고 있을 경우에는 세 번째 필드를 사용해서 세부 파티션을 지정할 수 있다. 예를 들어 FreeBSD의 첫번째 하드 디스크에, 첫번째 슬라이스에 있는 a 파티션은 다음과 같이 지정된다.
(hd0,0,a)
GRUB 처방 예제

이제 실제 GRUB 설정 파일 (grub.conf)을 살펴 보도록 하자. 다음은 첫 부분인 전역 설정 부분이다.
# 전역 설정
splashimage (hd0,0)/grub/splash.xpm.gz   메뉴 뒤에 표시되는 그림.
default 0                    디폴트 부트 엔트리 (0에서 시작)
timeout 30                               메뉴 선택 시간 제한 (초)
password -md5 xxxxxxx             grub-md5-crypt를 사용해서 암호를 코드화 한다.
위 설정에서는 부트 메뉴 뒤에 표시되는 이미지, 메뉴 선택 제한 시간, 부팅할 디폴트 엔트리, 부트 암호 등을 지정했다.

계속해서 이 파일에는 부트 메뉴 항목을 정의한다. 다음은 첫번째 하드 디스크에 첫번째 파티션에 설치되어 있는 리눅스 운영 체제를 부팅하는 예제다 (서로 다른 커널을 사용해서 부팅한다.)
title Linux
   root (hd0,0)
   kernel /vmlinuz ro root=/dev/hda2
   initrd /initrd.img

title Test-Linux
   root (hd0,0) 
   kernel /vmlinuz-test ro root=/dev/hda3
   initrd /initrd.img-test
title 줄은 메뉴 항목에 표시되는 텍스트를 의미한다. root 줄은 부트 로더가 있는 파티션을 지정하는데 사용된다. 이후에 나타나는 디렉토리 등은 모두 이 파티션의 루트로부터의 상대 경로이다. 그 결과, kernel 줄에서 지정한 vmlinuz 파일은 이 파티션의 루트 디렉토리에 오게 된다.

kernel 줄은 리눅스 커널 경로와 파라미터를 지정하고 있다. 이 경우에는 별도의 /boot 파티션을 사용하고 있으므로 root 파라미터를 지정했다. 여기서 후자는 시스템 루트 디렉토리의 위치를 의미한다. 따라서, 부팅된 리눅스 시스템에서 봤을 때는 커넬 이미지가 /boot/vmlinuz*에 온다는 것을 알 수 있다. initrd 줄은 initrd.mg 파일에 경로를 지정하는데 사용된다.

FreeBSD를 부팅하는 것도 아주 간단하다.
title FreeBSD
   # 디스크 1, 파티션 3에 있는 첫번째 BSD 세부파티션 사용
   root (hd0,2,a) 
   kernel /boot/loader
여기서는 부트 파티션과 FreeBSD 최종 부트 로더를 지정했다. (직접 FreeBSD 커널을 호출하기 보다는) 이렇게 부팅하는 것이 안전하다.

다음은 윈도우 파티션을 부팅하는데 사용되는 설정이다.
title Win2K
   root (hd0,2)
   makeactive
chainloader +1
부트 파티션은 보통때와 마찬가지로 지정된다. makeactive 명령어는 파티션을 활성화 시켜주고 chainloader 명령어는 부트 절차를 로컬 부트 로더(예를 들어, NTLDR)가 계속할 수 있게 해준다.

일반적으로, GURB은 임의의 디스크에 있는 운영 체제를 부팅할 수 있다. 그러나 경우에 따라서는 두 드라이브를 논리적으로 "바꿔치기(swap)" 했을 때 두 번째 하드 디스크에 있는 비유닉스 운영 체제를 부팅하는 것이 더 간편할 때도 있다. GRUB에서는 다음과 같은 엔트리를 사용해서 서로 바꿔줄 수 있다.
map (hd0) (hd1)
map (hd1) (hd0)
또한, 지난 번에 부팅된 운영 체제를 기억해서 다음 부팅시에 디폴트로 사용할 수 있는 기능도 포함하고 있다. 이 기능을 사용하고 싶다면 default 엔트리를 saved로 지정해 주고(전역 설정) 각 부팅 항목에 savedefault 지시문을 지정해주면 된다.
title Linux
   ...
   savedefault
GRUB 설치

일단 설정 파일 작성이 끝났다면 GRUB을 설치하는 일은 아주 간단하다. 패키지에 포함되어 있는 grub-install 유틸리티를 사용하면 된다. 이 툴은 다음과 같은 구문을 지닌다.
# grub-install [--root-directory=/dir] disk
여기서 disk는 부트 파티션으로서 GRUB 형식 또는 현재 사용중인 운영 체제 형식으로 얼마든지 지정할 수 있다. (예를 들어, (hd0), /dev/hda, 등등) --root-directory 옵션은 별도의 부트 파티션을 사용할 경우 디렉토리 위치를 지정하는데 사용된다. (예를 들어, 리눅스에서 /boot)

GRUB에 대해서 더 자세히 알고 싶다면 다음 문서를 참고할 것을 권장하는 바이다. 이 기사를 재미 있게 읽었고 무료 ESA3 관련자료를 받아 보고 싶다면 여기에 등록하면 된다.
아일린 프리시는 VMS, 유닉스, 맥킨토시, 윈도우 시스템 등의 다양한 시스템을 20여년간 관리해 왔다. 이 기사를 재미있게 읽어보았고 무료 ESA3 전단지를 받아 보고 싶다면 http://www.aeleen.com/esa3_news.htm에서 등록하면 된다. 또한, 최근에 출판된 System Administration Pocket Reference도 훌륭한 참고 서적이다.
TAG :
댓글 입력
자료실

최근 본 상품0