· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
GentooX86 Handbook_Ko_1-10


1. 부트로더 설정

1.1. 선택 하기

1.1.1. 소개

이제 커널이 설정되었고 필요한 시스템 환경설정 파일들이 올바르게 채워졌으며, 시스템 시작시 커널을 구동할 프로그램을 설치할 때입니다. 이런 프로그램들을 부트로더라고 합니다.

x86에서, 젠투리눅스는 GRUB 과 LILO를 제공합니다.

그러나 부트로더를 설정하기 위해 어떻게 프레임 버퍼를 설정할지에 대해 알려줄 것입니다(또한 이걸 원할 것이고요). 프레임버퍼를 통해 리눅스 명령줄 환경을 (제한된) 그래피컬한 특징요소와 함께 실행할 수 있습니다 (젠투가 제공하는 멋진 부트 스플래쉬 이미지 같은것들을요).

1.1.2. 선택사항: 프레임버퍼

프레임버퍼 지원사항이 커널에 포함되었을 경우(또는 genkernel 기본 설정을 사용했을경우), vgavideo구문을 부트로더 환경설정 파일에 추가하여 활성화 할 수 있습니다.

무엇보다도 먼저, 프레임버퍼 장치를 어떤것을 쓰는지의 유형을 알아야 할 필요가 있습니다. 만약 젠투 패치된 커널 트리를 사용하는 경우(gentoo-kernel), VESA 드라이버로서 uvesafb를 선택할 가능성을 지니게 될 것입니다. 이런 경우 uvesafb 를 사용하고 vga구문을 설정할 필요가 없습니다. 이런 경우가 아니라면 vesafb드라이버를 사용하고 vga구문을 설정할 필요가 있습니다.

vga구문은 vesafb를 위해 프레임버퍼 화면의 색상 수와 해상도를 제어합니다. /usr/src/linux/Documentation/fb/vesafb.txt 에 따라(커널 소스 패키지를 설치하면 설치됩니다), 요구된 해상도와 색생 수에 대응하는 VESA 번호를 넘길 필요가 있습니다.

다음 테이블 목록은 사용가능한 색상 수와 해상도 값에 일치하는 값을 vga구문에 넘기기 위한 것들입니다.

640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B

video 구문은 프레임버퍼 출력 선택사항을 제어합니다. 이는 가능하게 하기 원하는 제어 구문에 따라 주어진 프레임버퍼 드라이버를 필요로 합니다. 모든 변수들은 /usr/src/linux/Documentation/fb/vesafb.txt에 있습니다. 잘 사용되는 선택사항요소는 다음과 같습니다.

Control Description
ywrap Assume that the graphical card can wrap around its memory (i.e. continue at the beginning when it has approached the end)
mtrr:n Setup MTRR registers. n can be:
0 - disabled
1 - uncachable
2 - write-back
3 - write-combining
4 - write-through
mode (uvesafb only)
Set up the resolution, color depth and refresh rate. For instance, 1024x768-32@85 for a resolution of 1024x768, 32 bit color depth and a refresh rate of 85 Hz.

두 구문의 결과로서 vga=0x318 video=vesafb:mtrr:3,ywrap나, video=uvesafb:mtrr:3,ywrap,1024x768-32@85 가 될 수 있습니다. 이 설정을 적어두십시오. 잠깐 필요하게 될 것입니다.

이제 GRUB이나 LILO를 설치하는 것으로 넘어가시지요.

1.2. 기본: GRUB 사용하기

1.2.1. GRUB의 용어 이해

GRUB을 이해하는데 있어 중요한 부분이 바로 GRUB에서 하드드라이브와 파티션을 어떻게 참조하여 GRUB을 좀 더 다루기 쉬워지게 하느냐입니다. 리눅스 파티션 /dev/sda1 은 GRUB에선 (hd0,0)과 같이 불리울 것입니다. 자 여기를 잘 보시면 hd0,0 주위에 소괄호가 둘러쳐진것을 보실 수 있는데 이것들은 필수요소입니다.

하드드라이브는 "a"보다는 0으로부터 시작하고, 파티션은 1보다는 0으로부터 시작합니다. 이를 통해 오직 하드드라이브에 대해서만 hd 장치로 인식하고, CD-ROM 재생기나 기록기와 같은 atapi-ide 장치에 대해서는 인식하지 않습니다. 또한 이런 구성개념은 SCSI 드라이브에도 사용됩니다 (일반적으로 BIOS에서 SCSI 장치로부터 부팅하도록 설정했을때 IDE 드라이브보다 더 큰 번호가 부여됩니다). BIOS에서 다른 하드디스크로부터 부팅할 것을 물을때 (예를 들어 프라이머리 슬레이브 에서...), 하드디스크는 hd0과 같이 보이게 될 것입니다.

하드드라이브가 /dev/sda에, /dev/sdb, /dev/sdc 두 장치가 더 있다고 할때 /dev/sdb7은 (hd1,6)으로 변환될 것입니다. 이는 정말 교묘하기 짝이 없는 얘기지만 우리가 앞으로 보는 바와 같이, GRUB 은 많은 하드드라이브와 파티션을 가지고 있고 GRUB 번호매김 방식에 약간 어려움을 느끼는 분들을 위해 탭 완성 매커니즘을 제공합니다.

이제 감이 잡혔다면 GRUB을 설치할 때가 온 것입니다.

1.2.2. GRUB 설치

GRUB을 설치하기 위해 emerge 하도록 합시다.

예제 2-1 : GRUB 설치
emerge grub

비록 GRUB이 설치되었지만, 아직은 GRUB 환경설정 파일을 적어야 하고, GRUB을 MBR에 위치시켜 GRUB이 새로 생성된 커널로 부팅할 필요가 있습니다. /boot/grub/grub.conf를 nano로 생성합니다 (혹은 가능하다면 다른 편집기를 사용합니다):

예제 2-2 : /boot/grub/grub.conf 생성
# nano -w /boot/grub/grub.conf

이제 grub.conf를 써내려 갈 것입니다. 아래에는 우리가 이 가이드에서 사용한 디스크 분할 예제를 위해 가능한 두가지 경우의 grub.conf를 보실 수 있을 것입니다. 우린 단지 처음 연 grub.conf에서 확장가능한 주석을 지니고 있을 뿐입니다. 독자 여러분이 사용하는 커널 이미지 파일 이름, 그리고 가능하면 initrd이미지 파일 이름을 알아냅니다.

  • 처음 grub.conf 는 커널을 빌드할때 genkernel을 사용하지 않은 분들을 위한 것입니다.
  • 두번째 grub.conf는 커널을 빌드할때 genkernel을 사용한 분들을 위한 것입니다.

유의사항: GRUB은 BIOS로부터 장치의 구성을 받습니다. BIOS 설정이 변경되었다면, 장치 문자와 번호 역시 바뀔 것입니다. 예를들어 장치 부트 순서를 변경했다면, GRUB설정 또한 바꿔야 할 것입니다.

유의사항: 루트 파일시스템이 JFS라면, JFS가 읽기쓰기 마운팅이 허가되기 전에, 파일시스템에 대한 로그를 다시 동작할 필요가 있을 때로부터 " ro"를 반드시 커널라인에 추가하여야 합니다

예제 2-3 : 젠커널 비사용자를 위한 grub.conf
# Which listing to boot as default. 0 is the first, 1 the second etc.
default 0
# How many seconds to wait before the default listing is booted.
timeout 30
# Nice, fat splash-image to spice things up :)
# Comment out if you don't have a graphics card installed
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.24-r5
# Partition where the kernel image (or operating system) is located
root (hd0,0)
kernel /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda3

title Gentoo Linux 2.6.24-r5 (rescue)
# Partition where the kernel image (or operating system) is located
root (hd0,0)
kernel /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda3 init=/bin/bb

# The next four lines are only if you dualboot with a Windows system.
# In this case, Windows is hosted on /dev/sda6.
title Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

예제 2-4 : genkernel사용자를 위한 grub.conf
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.24-r5
root (hd0,0)
kernel /boot/kernel-genkernel-x86-2.6.24-gentoo-r5 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3
initrd /boot/initramfs-genkernel-x86-2.6.24-gentoo-r5

# Only in case you want to dual-boot
title Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

만약 다른 유형으로 디스크를 파티셔닝 하였거나, 또한 커널 이미지를 다른 것으로 사용하였다면 그에 따라 수정해주어야 합니다. 그러나 루트가 아닌 마운트포인트에 관계된 GRUB-장치를 따르는 것이 어떤 것인지 알아야합니다. 다시 말하자면, (hd0,0)/grub/splash.xpm.gz 은 /boot/grub/splash.xpm.gz 과 관계되며, (hd0,0) 가 /boot라는 얘깁니다.

왜냐면, 다른 유형으로 디스크를 파티셔닝 했고 /boot를 분리된 파티션에 넣지 않았다면, 위의 코드샘플에서 사용된 /boot 접두부는 정말 필요합니다. 만약 우리가 제시한대로 디스크 파티셔닝 계획을 따랐다면, /boot 접두부는 필요치 않지만, boot 심볼릭 링크로 하여금 동작하게 할 것입니다. 간단히 말해서, 위의 예제는 /boot파티션을 분리 했든지 안했든지간에 동작한다는 것입니다.

커널에 추가적인 선택사항요소를 넘길 필요가 있다면 커널 명령의 마지막에 간단하게 추가하면 됩니다. 또한 어떤 선택사항요소를 이미 전달하고 있지마는 (root=/dev/sda3 or real_root=/dev/sda3), b다른 요소들도 이처럼 전달 할 수 있습니다. 이를테면 앞서 말했던 것처럼 프레임버퍼를 위해 videovga 구문을 말입니다.

2.6.7 혹은 그 이상의 커널을 사용하고 있고, BIOS가 큰 용량의 하드 드라이브를 다루지 못해 점퍼를 설정했다면, sda=stroke를 첨가할 필요가 있을 것입니다. sda는 이 선택사항요소를 필요로 하는 장치로 대체할 수 있습니다.

genkernel 사용자들은 설치시디에서 사용되는 바와 같은 부트 선택사항요소를 사용한다는 것을 알 것입니다. 예를 들어 SCSI 장치를 지니고 있다면 doscsi를 커널 선택사항으로서 추가할 수 있습니다.

이제 grub.conf 파일을 저장하고 빠져나옵니다. 아직은 GRUB을 MBR(마스터 부트 레코드)에 설치하여 GRUB이 시스템 부트시 자동으로 실행될 수 있도록 할 필요가 있습니다.

GRUB 개발자들은 grub-install의 사용을 추천합니다. 그러나 grub-install가 제대로 동작하지 않는 어떤 이유때문에라면 수동으로 GRUB을 설치할 선택사항요소를 택합니다.

기본: grub-install을 사용하여 GRUB을 설정

하거나

대안책: 수동적 방법을 사용하여 GRUB을 설정합니다.

1.2.3. 기본: grub-install을 사용하여 GRUB 설정하기

GRUB을 설치하기 위해 grub-install명령을 실행할 필요가 있을것입니다. 그러나 grub-install는 루트가 전환된 환경에서 어떤 틀이 없이는 동작하지 않을 것입니다. 모든 마운트된 파일시스템이 나열된 /etc/mtab 을 생성할 필요가 있습니다. 다행스럽게도 이걸 해내기 위한 쉬운 방법이 있습니다. 단지 부트파티션을 분리하지 않았다면 rootfs줄을 제거하여, /proc/mounts를 /etc/mtab으로 복사하면 됩니다. 다음 줄은 언급한 두가지 경우에 모두 동작할 것입니다.

예제 2-5 : /etc/mtab 생성
# grep -v rootfs /proc/mounts > /etc/mtab

이제 grub-install을 이용하여 GRUB을 설치할 수 있습니다.

예제 2-6 : grub-install 실행
# grub-install --no-floppy /dev/sda


GRUB에 관계된 질문은, [http]GRUB FAQ 이나 [http]GRUB Manual을 읽어보시기 바랍니다.

[http]시스템 재시작 으로 계속 넘어가세요.

1.2.4. 대안책: 수동적 방법을 사용하여 GRUB 설정하기

GRUB설정을 시작하기 위해서, grub을 입력합니다. grub> GRUB 명령줄 프롬프트를 보실 것입니다. 이제 GRUB을 독자 여러분의 하드드라이브의 부트 레코드에 설치할 명령을 바로 입력할 필요가 있습니다.

예제 2-7 : GRUB 쉘 시작하기
# grub --no-floppy

유의사항 : 시스템이 어떤 플로피 드라이브를 포함하고 있지 않으면, 위와 같이 --no-floppy 선택사항요소를 추가하여 GRUB이 (존재하지 않는)플로피 드라이브를 감지하지 않도록 합니다.

예제 환경설정에서 우리는 GRUB을 설치하여 /dev/sda1 부트파티션으로부터 GRUB을 읽도록 하는 것과, GRUB 부트레코드는 하드드라이브의 MBR(마스터 부트 레코드)에 설치되어 컴퓨터를 틀었을때 우리가 처음 볼 것으로 GRUB>이 뜨는 것을 원합니다. 만약 설치과정을 따라오는동안 예제 환경설정을 따라오지 않았다면, 명령을 즉시 바꿉니다.

GRUB의 탭 완성 매커니즘은 GRUB내에서 사용될 수 있습니다. 예를 들어 "root ("라고 치고 TAB을 입력하면 디바이스 목록(hd0과 같은 것)을 볼 수 있을 것입니다. "root (hd0,"까지 입력하고 TAB을 입력하면 사용가능한 파티션으로부터 나오는 목록을 받을 것입니다(hd0,0과 같이).

탭 완성 기능을 사용함으로서, GRUB 설정은 그닥 어렵지 않을 것입니다. 이제 GRUB설정을 해볼까요? :-)

예제 2-8 : MBR에 GRUB 설치하기
grub> root (hd0,0)    (Specify where your /boot partition resides)
grub> setup (hd0)     (Install GRUB in the MBR)
grub> quit            (Exit the GRUB shell)

유의사항 : MBR 대신 다른 파티션에 GRUB을 설치하려 한다면, 설치 명령을 바꿔 올바른 파티션을 가리키도록 합니다. 예를 들어 /dev/sda3에 GRUB이 설치되길 원한다면, 명령은 setup (hd0,2)이 될 것입니다. 이걸 원하는 어떤 사용자의 경우든지간에요.

GRUB에 관계된 질문은, [http]GRUB FAQ 이나 [http]GRUB Manual을 읽어보시기 바랍니다.

[http]시스템 재시작 으로 계속 넘어가세요.

1.3. 대안책: LILO 사용하기

1.3.1. LILO 설치하기

LInuxLOader(LILO)는 리눅스 부트로더로서 고생한 진정한 일말입니다. 그러나, GRUB이 가진 약간의 기능에 대해서는 부족한 감이 없지 않습니다(이게 GRUB이 현재 인기있는 이유중 하나입니다). 그래도 LILO가 여전히 사용되고 있는 이유가 있다면, 어떤 시스템에서는 GRUB은 동작 못하는데 LILO가 동작합니다. 물론 또 다른 사용되는 이유라면 어떤 어떤 사람들은 LILO에 대해 더 잘알고 집착하길 원합니다. 여하튼간에, 젠투는 둘 다 지원하고, (이 부분을 읽는)독자 여러분은 명백하게 LILO를 사용한다는걸 선택했습니다.

LILO설치는 "열라 쉬운(역자 주: 느낌을 살리기 위해 이렇게 번역했습니다. -_-v)" 일이죠. 그냥 emerge를 쓰면 됩니다.

예제 3-1 : LILO 설치
# emerge lilo

1.3.2. LILO 설정하기

LILO를 설정하기 위해 /etc/lilo.conf를 생성해야만 합니다. 원하는 편집기를 실행합니다. (이 핸드북에서 우리는 일관성을 유지하기 위해 nano를 사용하죠... ) 그리고 파일을 만듧니다.

예제 3-2 : /etc/lilo.conf 생성
# nano -w /etc/lilo.conf

몇몇 섹션 이전에 우리는 독자여러분이 만든 커널 이미지 이름을 기억해달라고 부탁했었습니다. 다음 lilo.conf 예제에서 우리는 하드디스크 파티션 계획을 반영할 것입니다. 두 가지 경우로 나눌 수 있는데요.

  • 하나는 커널을 빌드하기 위해 genkernel 을 사용하지 않을 경우
  • 다른 하나는 커널을 빌드하기 위해 genkernel을 사용한 경우

입니다. =3 독자 여러분이 사용하는 커널 이미지 파일 이름, 그리고 가능하면 initrd이미지 파일 이름을 알아냅니다.

유의사항: 루트 파일시스템이 JFS라면, JFS가 읽기쓰기 마운팅이 허가되기 전에, 파일시스템에 대한 로그를 다시 동작할 필요가 있을 때부터 "append=ro"를 반드시 추가하여야 합니다.

예제 3-3 : /etc/lilo.conf 예제
boot=/dev/sda             # Install LILO in the MBR
prompt                    # Give the user the chance to select another section
timeout=50                # Wait 5 (five) seconds before booting the default section
default=gentoo            # When the timeout has passed, boot the "gentoo" section

# For non-genkernel users
image=/boot/kernel-2.6.24-gentoo-r5
  label=gentoo            # Name we give to this section
  read-only               # Start with a read-only root. Do not alter!
  root=/dev/sda3          # Location of the root filesystem

image=/boot/kernel-2.6.24-gentoo-r5
  label=gentoo.rescue     # Name we give to this section
  read-only               # Start with a read-only root. Do not alter!
  root=/dev/sda3          # Location of the root filesystem
  append="init=/bin/bb"   # Launch the Gentoo static rescue shell

# For genkernel users
image=/boot/kernel-genkernel-x86-2.6.24-gentoo-r5
  label=gentoo
  read-only
  root=/dev/ram0
  append="init=/linuxrc ramdisk=8192 real_root=/dev/sda3"
  initrd=/boot/initramfs-genkernel-x86-2.6.24-gentoo-r5

# The next two lines are only if you dualboot with a Windows system.
# In this case, Windows is hosted on /dev/sda6.
other=/dev/sda6
  label=windows

유의사항 : 다른 파티셔닝 형태나 커널 이미지를 사용하는 경우 바로 수정하세요.

만약 커널에 어떤 선택사항요소를 추가하여 전달할 필요가 있다면 섹션에 구문을 첨가하면 됩니다. 예제에 따르면, 프레임버퍼를 사용가능케 하기 위해 video구문을 추가합니다.

예제 3-4 : 커널 옵션을 추가하기 위해 첨가하기
image=/boot/kernel-2.6.24-gentoo-r5
  label=gentoo
  read-only
  root=/dev/sda3
  append="video=vesafb:mtrr,ywrap,1024x768-32@85"

2.6.7 혹은 그 이상의 커널을 사용하고 있고, BIOS가 큰 용량의 하드 드라이브를 다루지 못해 점퍼를 설정했다면, sda=stroke를 첨가할 필요가 있을 것입니다. sda는 이 선택사항요소를 필요로 하는 장치로 대체할 수 있습니다.

genkernel 사용자들은 설치시디에서 사용되는 바와 같은 부트 선택사항요소를 사용한다는 것을 알 것입니다. 예를 들어 SCSI 장치를 지니고 있다면 doscsi를 커널 선택사항으로서 추가할 수 있습니다.

이제 파일을 저장하고 빠져나옵니다. 이를 마무리하기 위해서는 /sbin/lilo를 실행하여 /etc/lilo.conf을 시스템에 적용할 수 있게 해야 합니다(예를 들자면 이 과정에서 지 자신을 디스크에 설치합니다). 메뉴에 변경사항이 있거나 새로운 커널을 설치했거나 하는경우 /sbin/lilo를 항상 실행해야 한다는 것 잊지 마세요.

예제 3-5 : LILO 설치 마무리
# /sbin/lilo

LILO 관련 질문은, [http]위키피디아 페이지를 참조하세요.

[http]시스템 재시작 으로 계속 넘어가세요.

1.4. 시스템 재시작


루트 전환된 환경을 빠져나오고 마운트된 모든 파티션을 해제합니다. 그러고 나서 독자여러분이 기다리고 있던 매혹적인 명령을 쳐줍니다. reboot.

예제 4-1 : 모든 파티션 마운트 해제 및 재부팅
# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot

물론 부팅되는 CD를 제거하는걸 잊지 마세요. 그렇지 않으면 새로운 젠투 시스템이 아닌 CD로 또 부팅하게 됩니다.

젠투 설치로부터 재부팅하고, [http]젠투 설치 마무리편으로 마무리를 하도록 합니다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-02-22 21:15:11
Processing time 0.0127 sec