제공 :
한빛 네트워크
저자 : Andrea O. K. Wright
역자 : 남현우
원문 :
LILO and GRUB: Boot Loaders Made Simple
LILO(Linux Loader)와 GRUB(GRand Unified Bootloader)는 주 부트로더(MBR에 설치됨)로 사용하거나 2차 부트로더(부팅 가능한 파티션에 설치됨)로 사용할 수 있다. Linux, FreeBSD, NetBSD, OpenBSD는 LILO와 GRUB을 모두 지원하며, 설정 파일을 통해서 윈도우 XP에서도 사용할 수 있다. 두 가지 모두 루트 사용자의 싱글유저모드로 부팅하는 기능을 제공한다.
LILO
LILO는 모든 리눅스 배포판에 표준으로 자리잡았다. LILO를 사용하기 위해서는 관리자가 /etc/lilo.conf 파일을 수정하여 부팅할 기본 파티션, 타임아웃 값(메뉴에서 항목을 고르는 시간을 조절), 커널 인자 (어떤 파티션이 루트 파티션인가를 나타냄), 램디스크 로드여부, LILO가 어디에 설치되어야 하는지 등등을 설정해야 한다.
MBR Vs. Root 파티션
LILO는 설정파일의 기본값을 읽어들인다. 설정파일은 부트로더를 어디에 위치시켜야 하는지 LILO에게 알리는 역할을 한다. 일반적으로는 첫번째 물리디스크(/dev/hda)의 마스터 부트 레코드(MBR)나 리눅스가 설치된 루트 파티션(/dev/hda1 혹은 /dev/hda2)을 선택한다. 화면에 LILO라는 단어가 표시되면 LILO의 첫 단계가 통과된 것이다. 즉, L-I-L-O라는 글씨가 보이면 두 번째 단계로 넘어간 것이다.
만약 MBR에 윈도우 XP를 설치했다면, LILO를 MBR에 설치하지 말고 루트 파티션에 설치해야 한다. 만약 리눅스로 부팅하고 싶다면, LILO파티션에 부팅가능(bootable) 플래그를 반드시 설정해야 한다. 마스터 부트 섹터를 덮어쓰지 않았다면 리눅스와 LILO를 제거하기도 수월하다.
위의 경우가 아니라면, 설정파일을 수정하면 된다. 이미 리눅스가 설치된 상황에서 LILO를 사용하려는 경우라면, 우선 최신 버전의
LILO를 받아 설치한다. 그 전에 혹시 발생할 지 모르는 부팅실패상황에 대비해서 리눅스용 부팅 디스크를 작성해 두는 것이 좋다.
LILO를 설치했으면, LILO가 MBR에 사용되도록 설정하자. 루트권한으로 다음을 실행한다.
# /sbin/lilo -v -v
LILO 설정 파일
다음은 /etc/lilo.conf의 샘플이다. 가급적이면 kernel 2.6.23-13같은 명명 규칙을 따르는 것이 좋다. /boot아래에 있는 여러 개의 커널 이미지를 선택하도록 할 수 있으니, 최신 버전의 리눅스 커널을(
Linux kernel versions) 설치하고 추가하도록 하자.
기타 인자들은 매뉴얼을 참고하라. (man lilo.conf)
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
compact
default=Linux
image=/boot/vmlinuz-2.6.23-13
label=Linux
read-only
root=/dev/hdb3
password=Linux
image=/boot/vmlinuz-2.4.18-14
label=ker2418
read-only
root=/dev/hdb3
other = /dev/hda
label = WindowsXP
Boot = 옵션은 LILO가 주 하드의 MBR에 부트로더를 설치하게 한다. map=옵션과 install=옵션은 LILO가 내부적으로 부팅에 사용하는 파일을 가리킨다. 이것들은 수정하지 말자.
부팅을 할 때 부트로더는 Shift키를 누를 수 있는 시간을 5초 동안 기다린다. 가만히 기다리고 있는다면 첫 번째로 선택된 리눅스가 부팅될 것이다. 키를 누르면 어떤 이미지로 부팅할 것인지를 물어본다. 어떠한 이미지가 있었는지 기억이 잘 나지 않는다면 TAB키를 누르면 메뉴와 함께 표시될 것이다. 이제 Linux, ker2418, WindowsXP중에 하나를 고르면 된다. Compact 옵션은 부팅속도를 높여준다. 리눅스를 선택하면 이미지의 암호를 물어본다. 이미지에는 fallback=
옵션을 추가할 수도 있다. The option specifies that is stored as the default command line if the current image is booted. fallback옵션을 사용하면 다음 부팅때는 다른 커널을 사용해서 부팅하게 된다.
Lilo.conf는 부팅시에 읽히는 것이 아니기 때문에 변경한 뒤에는 MBR을 “refresh” 해야한다. 이런때는 LILO를 MBR에 심었던 것처럼 다음을 입력한다.
$ /sbin/lilo -v -v
문제해결
리눅스가 설치된 머신에 윈도우를 설치하면, 윈도우는 리눅스 부트 매니저를 덮어 써 버리거나 비활성화 시킨다. 따라서 리눅스로 부팅이 되지 않는다.
만약 LILO가 MBR에 설치되어있었다면 리눅스 부팅디스크로 시스템을 재시작하고 LILOCONF 프로그램을 실행시킨다. 만약 LILO가 수퍼블록에 설치되어 있다면 FDISK로 리눅스 파티션을 다시 활성화 시켜주면 된다.
다른 방법으로는 윈도우 시스템에서 리눅스 파티션을 지우고 재시작 한 뒤, 파티션 매직을 통해 리눅스 파티션을 만들 수 있다. 이 유틸리티에 딸려있는 부트매직이라는 프로그램은 운영체제를 스위칭해주는 프로그램이다.
리눅스 시스템을 고칠 수 있게 하려면, 부팅시 프롬프트에 rescue를 입력해서 싱글유저모드로 부팅해야 한다. 이와 비슷하게 single을 입력하면 하드디스크로 부팅이 된다. CD-ROM으로 부팅하려면 root=로도 가능하다.
GRUB
GRUB은 인스톨 명령 하나로 설치가 끝나고 MD5암호화된 패스워드를 사용할 수 있다. 설정파일이 잘못되었을 경우 시스템은 명령행 프롬프트로 부팅하게 된다.
MBR Vs. 부트 파티션
만약 WINXP를 통해 MBR을 설치했따면 GRUB을 MBR에 설치하지 말고 루트 파티션에 설치해라. 더 나은 방법은 윈도우용 GRUB설치 프로그램인 grubinstall.exe을 사용하는 것이다. 이 프로그램은 윈도우 NT/2K/XP의 NTFS나 FAT파티션 안에 GRUB을 설치할 수 있도록 해주어 기본 부트로더인 NTLDR를 사용할 수 있다. 따라서 MBR을 건드리지 않아 어떠한 위험부담 없이 안전하게 부트로더를 설치하고 제거할 수 있다.
기존에 리눅스를 사용하던 상황에서 GRUB을 설치하려면 우선 최신버전을 다운로드하자. GRUB을 설치하기 전에 혹시 발생할 지 모르는 부팅실패상황에 대비해서 리눅스용 부팅 디스크를 작성해 두는 것이 좋다. GRUB을 설치했으면, GRUB이 MBR에 사용되도록 설정하자. 루트권한으로 다음을 실행한다.
# /boot/grub/grub
이제 GRUB 명령를 사용할 수 있다.
grub> install (hd1,2)/boot/grub/stage1 (hd1) (hd1,2)/boot/grub/stage2 p
(hd1,2)/boot/grub/menu.conf..
처음에는 읽기에 어려울지 모르지만, 사실 LILO보다 효율적이다. 두 단계에 걸친 설치과정과 설정이 한 인스톨 명령에 합쳐진 꼴이다. 이제 인스톨 명령의 첫 번째 단계를 살펴보자.
install (hd1,2)/boot/grub/stage1 (hd1)
이것은 GRUB이 첫 단계의 이미지를 두 번째 리눅스 디스크의 세번째 파티션에 설치된다는 뜻이다. 이는 LILO에서 hdb3을 하는 것과 같다. 이 명령은 MBR을 같은 디스크에 설치한다.
다음은 두번째 단계의 이미지를 설치하는 명령이다.
(hd1,2)/boot/grub/stage2
마지막으로 설정파일의 위치를 (선택적으로)지정해 주면 설치과정이 끝난다.
p (hd1,2)/boot/grub/menu.conf
GRUB 설정 파일
다음은 /boot/grub/grub.conf 샘플 파일이다.
default=0
timeout=10
splashimage=(hd1,2)/grub/splash.xpm.gz
password --md5 [encrypted password]
title Linux
password --md5 [encrypted password]
root (hd1,2)
kernel /vmlinuz-2.6.23-13 ro root=LABEL=/
initrd /initrd-2.6.23-13.img
title Windows XP
password --md5 [encrypted password]
rootnoverify (hd0,0)
chainloader +1
default= 옵션은 GRUB이 대기시간이 초과되면 기본적으로 어떤 이미지로 부팅할 것인지를 가리킨다. splashimage 옵션은 GRUB GUI의 배경으로 사용될 이미지의 위치를 가리킨다. password옵션은 대화형 부팅 옵션을 사용하기 위해 필요한 MD-5암호를 가리킨다. md5암호를 만들기 위해서는 루트 권한으로 grub-md5-crybt 프로그램을 실행시키고 이 결과를 password --md5 옵션에 기록하면 된다. 또 각각의 엔트리마다 다른 암호를 지정할 수도 있다. initrd옵션은 부팅시에 초기 RAM디스크로 로드될 파일을 가리킨다.
rootnoverify 옵션은 GRUB이 운영체제의 root를 바꾸지 못하도록 한다. 옵션 chainloader+1은 GRUB이 체인 로더를 사용하여 첫 번째 디스크의 첫 번째 파티션에 있는 윈도우를 로드하도록 한다. 이 옵션은 블럭리스트 표기법을 사용하여 현재 파티션의 첫 섹터 "+1"을 가져온다.
기타 인자들에 대해서 알아보려면 grub man pages를 참고하라.
부팅 실패 대응 시스템
GRUB은 기본 항목으로의 부팅이 실패했을 경우에 다른 항목으로 부팅해 주는 대비책을 갖추고 있다.
예를들어 "A", "B", "C" 세 시스템이 있다고 하자. 당신은 기본적으로 "A"로 부팅되기를 원한다. "B"는 백업 시스템으로서,
안전하게 부팅할 경우에 사용된다. "C"는 또 다른 백업 시스템으로 "B"가 올바르게 동작하지 않을 경우 사용된다.
위의 경우처럼 항목 "A", "B", "C"가 있을 때, GRUB을 사용하려면 다음처럼 설정하면 된다.
default saved
timeout 10
fallback 1 2
title A
root (hd0,0)
kernel /kernel
savedefault fallback
title B
root (hd1,0)
kernel /kernel
savedefault fallback
title C
root (hd2,0)
kernel /kernel
savedefault
GRUB은 기본으로 지정된 항목으로 부팅할 것이고 다음 항목을 예비로 사용할 것이다. GRUB이 "A"로 부팅을 시도할 때, "1"을 다음 부팅 항목으로 저장해 놓는데, 이는 fallback명령이 "1"을 첫 복구 항목으로 인식한다는 뜻이다. 여기서 "1"은 "B"이기 때문에 GRUB은 "A"가 실패할 경우 "B"로 부팅될 것이다. 이와 비슷하게, GRUB은 "B"를 시도할 때 다음 부팅 항목에 "2"를 저장해 놓음으로써 "2"를 그 다음 복구 항목으로 사용한다. 결과적으로 "B"이후엔 "C"가 부팅될 것이다.
"A"가 올바로 동작하거나 그렇지 않아서 "A"를 수정했을 경우에는 grub-set-default 명령을 수행해야한다. GRUB이 항상 다음 항목을 설정하기 때문이다. 부팅시 자동실행되는 rc.loacl등의 스크립트를 편집하여 "A"가 기본적으로 사용될 수 있도록 하는 것을 권한다.
# grub-set-default 0
"0"은 부팅 항목의 숫자, 즉 "A"를 가리킨다.
문제해결
윈도우 XP가 설치된 머신에서 GRUB같은 서드파티 부트관리 프로그램을 설치했다고 예를 들자. 컴퓨터를 윈도우 비스타로 성공적으로 업그레이드하지 못한 상태에서 부팅을 시도하면 실패하게 된다. 그리고 검은 화면에 밑줄만 깜빡이는 상황이 될 것이다. 비스타의 설치 프로그램은 GRUB을 복구시키지 않는다.
이 문제를 해결하려면, 윈도우 XP의 복구 콘솔을 사용하여 시스템 파티션의 부트 섹터를 새로 지정해 주어야 한다. 이를 위해 다음을 수행한다.
- 시스템을 윈도우 XP 시디로 기동한다.
- 설치 환영메세지가 나타나는 화면에서 R키를 눌러 복구 항목을 선택한다.
- 윈도우 XP 설치과정중 복구를 희망한다고 알린다.
- fixboot를 입력하고 엔터를 누른다.
- y를 누르고 엔터를 눌러서 시스템 파티션에 새 부트 섹터를 기록하는 것을 확인하자. 이 과정에서 다음 지시사항이 나타난다.
The new bootsector was successfully written.
- exit을 타이핑해서 복구 콘솔을 빠져나온다.
- 시스템을 재시작하고 윈도우 비스타의 설치를 끝낸다.
- GRUB을 재설치한다.
GRUB과 LILO, 어떤 것이 더 좋을까?
LILO는 오래됬고 덜 강력하다. 원래 LILO는 GUI 메뉴 선택이 없고 텍스트 인터페이스만 있다. LILO를 사용하려면 관리자가 설정 파일을 수정하는 것 외에도 많은 일을 해줘야 한다.
이에비해 GRUB은 관리가 편한데, GRUB 로더가 부팅시에 /boot/grub/grub.conf를 알아서 처리해주기 때문이다. 관리자는 "grub-install" 유틸리티로 GRUB을 한번 설치해 주기만 하면 도니다. 변경된 grub.conf는 자동적으로 다음 부팅시에 적용된다. 반면 lilo.conf는 다음 부팅때 적용되지 않으며, MBR을 "새로고침" 해 주어야 한다.
GRUB과 마찬가지로 LILO는 상호작용적인 명령행 인터페이스를 제공하지 않으며 네트워크 부팅도 지원하지 않는다. 만약 LILO MBR이 올바로 설정되지 않는다면, LILO 시스템으로는 부팅할 수 없다. 만약 GRUB 설정파일이 올바르지 않다면 GRUB 명령행 인터페이스가 실행되며 시스템이 부팅되지 않는 상황을 피할 수 있다.
LILO와 GRUB 모두 싱글유저 모드로 부팅 가능하다(root일 경우). LILO와 GRUB 모두 암호 설정 기능이 있으나 약간 차이가 있다. GRUB은 MD5를 암호 부호화에 사용하지만 LILO는 단지 평문 암호를 사용하기 때문에 누구나 "cat /etc/lilo.conf"명령을 통해 lilo.conf파일을 읽을 수 있다.
초심자라면 LILO로 시작해서 GRUB으로 옮겨보기를 권한다.
저자 Judith Myerson은 시스템 아키텍트이자 엔지니어다. 그녀가 좋아하는 분야는 엔터프라이즈 시스템, 데이타베이스, 네트웍 & 시스템 관리, 보안, 운영체제, 프로그래밍, 데스크톱 환경, 소프트웨어 공학, 웹 개발, 그리고 프로젝트 관리이다. 연락처 : jmyerson@c2040.com