Trans:GentooX86Handbook1-10

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기

부트로더 설정하기

선택하기

개요

이제 커널을 설정했고 컴파일 했으며 올바르게 필요한 시스템 설정파일을 채웠습니다. 이제 여러분이 시스템을 시작할때 커널의 동작을 시작할 프로그램을 설치할 시간입니다. 이런 프로그램을 부트로더라고 합니다.

x86에 대해 젠투 리눅스는 GRUBLILO를 제공합니다.

하지만 부트로더를 설치하기 전에 프레임버퍼를 설정하는 방법(물론 여러분이 원하신다면)을 알려줄 것입니다. 프레임버퍼를 사용하면 (제한된) 그래픽 기능(예를 들어 젠투가 제공하는 멋진 부트 스플래시 이미지 같은 것을 사용)과 함께 리눅스 명령줄을 실행할 수 있습니다.

선택요소: 프레임버퍼

프레임버퍼 지원을 포함하여 커널을 컴파일 했다면(또는 기본 커널 설정으로 genkernel을 사용했다면), video 구문을 부트로더 설정 파일에 추가하여 프레임버퍼를 활성화 할 수 있습니다.

먼저 프레임버퍼 장치가 무엇인지를 알 필요가 있습니다. 여러분은 uvesafbVESA 드라이버로 사용해야 합니다.

video 구문은 프레임버퍼 표시 옵션을 제어합니다. 여러분이 사용하고 싶은 제어 구문이 뒤따라온 주어진 프레임버퍼가 필요합니다. 사용가능한 모든 요소는 /usr/src/linux/Documentation/fb/uvesafb.txt에 나열되어 있습니다. 대부분 사용하는 옵션은 다음과 같습니다.

제어 설명
ywrap 그래픽 카드가 메모리 허용 범위내에서 처리할 수 있음을 가정합니다 (마지막에 도달했을 경우 처음으로 돌아와서 계속)
mttr:n MTRR 레지스터를 설정합니다. n이 될 수 있는 값은 다음과 같습니다

0 - 비활성
1 - 캐시에 보관할 수 없음
2 - write-back
3 - write-combining
4 - write-through

mode 해상도, 색 단계수, 재생율을 설정합니다. 예를 들어 1024x768-32@85는 1024x768, 32비트 컬러, 85Hz 재생율을 의미합니다

결과는 video=uvesafb:mtrr:3,ywrap,1024x768-32@85와 같아야 합니다. 이 설정 내용을 적어 내려가세요. 잠깐동안만 필요할 것입니다.

이제 GRUB또는 LILO를 설치하는 것으로 계속 진행합니다.

기본: GRUB 사용하기

GRUB 용어 이해하기

GRUB을 이해하는데 가장 어려운 부분이 바로 GRUB이 어떻게 하드디스크 드라이브와 파티션을 참조하느냐를 편하게 받아들이는 것입니다. GRUB에서 리눅스 파티션 /dev/sda1은 (hd0,0)과 같이 불립니다. 괄호로 둘러쌓인 hd0,0을 주목하시기 바랍니다. 이 요소들이 필요합니다.

하드디스크 드라이브는 "a"보다는 (보통) 0부터 세며, 파티션은 1보다는 0부터 셉니다. CD-ROM 재생기나 CD 라이터 같은 atapi-ide 장치가 아닌 하드디스크 드라이브를 셀 때만 사용하는 hd 장치에서도 마찬가지임을 알아두시기 바랍니다. 또한 같은 구성 방식을 SCSI 드라이브에도 사용합니다 (보통 SCSI 드라이브에서 시동하도록 BIOS를 시동했을때 IDE 드라이브를 제외하기보단 더 많은 수를 붙입니다) BIOS에게 다른 하드디스크(예를 들어 프라이머리 슬레이브)로 시동하라고 요청했을 경우, 해당 하드디스크를 hd0으로 봅니다.

여러분의 하드디스크 드라이브가 /dev/sda에 있고 /dev/sdb, /dev/sdc가 더 있을 경우 /dev/sdb7은 (hd1,6) 으로 변환됩니다. 이게 사실 보면 엄청 어려운 얘기인 것 같지만, 여러분이 앞으로 보실 것과 같이, GRUB은 수많은 하드디스크 드라이브와 파티션을 가진 여러분과 GRUB 번호 매김 방식을 까먹은 분들을 위해 간편한 수단이 될 수 있는 탭 완성 기능을 제공합니다.

이제 감을 잡으셨으니 GRUB을 설치하실 차례입니다.

GRUB 설치하기

GRUB을 설치하기 위해, 먼저 이머지를 하도록 합시다


코드 예제 2.1: GRUB 설치하기
# emerge grub


GRUB을 설치했지만 설정 파일을 작성하고 GRUB을 MBR에 올려서 GRUB을 통해 여러분께서 새로 만드신 커널을 자동으로 시동할 수 있게 할 일이 아직 남았습니다. /boot/grub/grub.conf를 nano (또는 여러분의 취향에 따라 다른 편집기)로 만듭니다.


코드 예제 2.2: /boot/grub/grub.conf 만들기
# nano /boot/grub/grub.conf


이제 grub.conf를 작성하겠습니다. 여러분의 커널 이미지 파일 이름과 적절한 경우 여러분의 initrd 이미지 파일 이름을 확인하시기 바랍니다.


참고: GRUB은 BIOS로부터 장치 설계 내용을 할당 받습니다. BIOS 설정을 바꾸면 여러분의 장치 문자와 번호 역시 바뀔 것입니다. 예를 들어 여러분의 장치 시동 순서를 바꾸었다면 GRUB 설정도 바꾸어야 할 필요가 있습니다



참고: 루트 파일 시스템을 JFS로 사용한다면, 이 파일시스템에 읽기쓰기 마운트를 허용하기 전에 다음 로깅 위치를 바로 잡기(replay) 위해 kernel 줄 에 " ro"를 추가해야 합니다



코드 예제 2.3: grub.conf 예제
# 기본적으로 시동할 목록 중 하나 입니다. 0은 첫번째, 1은 두번째 등입니다.

default 0
# 기본적으로 항목에 대해 시동할때 대기할 초 단위 시간입니다.
timeout 30
# 좋습니다! 양념을 팍팍 쳐 줄 큰 스플래시 그림입니다. :)
# 그래픽 카드를 설치하지 않았을 경우 주석처리합니다
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.34-r1
# 커널 이미지(또는 운영체제)가 위치하고 있는 파티션입니다.
root (hd0,0)
kernel /boot/kernel-2.6.34-gentoo-r1 root=/dev/sda3

title Gentoo Linux 2.6.34-r1 (rescue)
# 커널 이미지(또는 운영체제)가 위치하고 있는 파티션입니다.
root (hd0,0)
kernel /boot/kernel-2.6.34-gentoo-r1 root=/dev/sda3 init=/bin/bb

# 다음 네줄은 윈도우즈 시스템으로 듀얼부트 할 때만 사용합니다.
# 이 경우 윈도우즈는 /dev/sda6에 저장되어 있습니다.
title Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1


커널을 빌드하는 중이라면 커널에서 시동하려는 initramfs를 포함하도록 선택할 것입니다. 이렇다면 initramfs파일을 참조하여 설정을 변경하고 실제 루트 장치가 어디에 있는지 initramfs에 알려야 할 필요가 있습니다.


코드 예제 2.4: initramfs를 활성화한 커널 빌드에 대한 GRUB 설정 내용 일부
title Gentoo Linux 2.6.34-r1

root (hd0,0)
kernel /boot/2.6.34-r1 real_root=/dev/sda3
initrd /boot/initramfs-genkernel-x86-2.6.34-gentoo-r1


다른 구역 분할 모양새나 혹은 커널 이미지를 사용하였다면 그에 따라 조정하도록 합니다. 그러나 GRUB 장치(예를 들어 (hd0,0))를 따르는 요소들이 루트가 아닌 마운트 지점에 관계되어 있는지 확인해보시기 바랍니다. 다시 말해 (hd0,0)이 /boot 일 때, (hd0,0)/grub/splash.xpm.gz 는 실제로 /boot/grub/splash.xmp.gz입니다.

이에 반해 다른 구역 분할 모양새를 선택했고 분할한 파티션에 /boot를 놓지 않았다면, 위의 코드 예제에서 /boot를 앞에 붙여서 사용하는 것은 정말로 필요합니다. 저희들이 제안한 구역분할 계획을 따랐다면, /boot를 앞에 붙이는 것은 필요치 않지만, boot 심볼릭 링크는 동작할 것입니다. 간단히 말해서 위의 예제는 여러분이 /boot 파티션을 나누었느냐 아니냐의 여부에는 상관 없이 동작한다는 이야기입니다.

커널에 추가적인 옵션을 전달할 필요가 있다면, 간단하게 커널 명령 마지막에 추가하면 됩니다. 이미 옵션(root=/dev/sda3 또는 real_root=/dev/sda3)을 전달했지만 이와 마찬가지로 앞에서 말씀드렸던 프레임버퍼에 대한 video구문과 같은 다른 옵션을 전달할 수 있습니다.

부트로더 설정 파일에는 real_root를 포함하고 있고, 루트 파일시스템 마운트 옵션을 설정하기 위해 real_rootflags 인자를 사용합니다.

2.6.7 이상의 커널을 사용하고 있고 BIOS가 큰 용량의 하드디스크 드라이브를 다루지 못해 하드디스크 드라이브의 점퍼를 설정했다면, sda=stroke를 붙일 필요가 있습니다. sda를 이 옵션이 필요한 장치 이름으로 바꾸십시오.

genkernel 사용자들은 커널에서 설치 CD에서 사용하는 그대로의 동일한 시동 옵션을 사용함을 알아야 합니다. 예를 들어 SCSI 장치가 있다면 커널 옵션에 doscsi를 붙여야 합니다.

이제 grub.conf 파일을 저장하고 빠져나갑니다. 아직 여전히 MBR(주 시동 레코드)에 GRUB을 설치해서 여러분이 시스템을 시동할때 자동으로 GRUB을 시작할 수 있게 하는 일이 남았습니다.

GRUB 개발자들은 grub-install 사용을 권장합니다만, 어떤 이유로 인해 grub-install를 올바르게 동작하게 하는 것을 실패했다 하더라도 여러분에겐 GRUB을 직접 설치하는 선택의 여지가 남아있습니다.

기본: grub-install을 사용하여 GRUB 설정하기또는 대안:수동 과정을 따라 GRUB 설정하기로 계속 진행합니다.

기본: 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에 대한 더 많은 의문점이 있다면, GRUB 자주 묻는 질문, GRUB 위키, 을 참조하시거나 터미널에서 info grub을 읽어보시기 바랍니다.

시스템 재시동하기로 계속 진행합니다.

대안: 수동 과정을 따라 GRUB 설정하기

GRUB 설정을 시작하려면 grub을 입력합니다. GRUB 명령 줄 프롬프트 grub> 이 뜬 것을 보실 것입니다. 이제 여러분의 하드디스크 드라이브에 GRUB 시동 레코드를 설치하기 위해 올바른 명령을 입력해야 합니다.


코드 예제 2.7: GRUB 쉘 시작하기
# grub --no-floppy



참고: 시스템에 플로피 디스크 드라이브가 없다면 GRUB이 (존재하지 않는) 플로피 디스크 드라이브를 확인하지 않게 막기 위해 위 명령 처럼 (역자 주: 본문에 오류 있습니다) --no-floppy 옵션을 추가합니다.


예제 설정을 통해 우리는 GRUB을 설치해서 시동 파티션 /dev/sda1에서 정보를 읽어올 것이며, GRUB 시동 레코드를 하드디스크 드라이브의 MBR(주 시동 레코드)에 설치하여 처음 컴퓨터를 켰을 때 먼저 GRUB 프롬프트가 뜨게 할 것입니다. 물론 설치하는 동안 다음 예제 설정을 따라가지 않았다면 알맞게 명령을 바꾸도록 합니다.

GRUB의 탭 완성 기능은 GRUB안에서 사용할 수 있습니다. 예를 들어 "root ("를 친 다음 TAB키를 눌렀다면, 여러분은 장치의 목록(hd0 같은 것)을 보게 될 것입니다. "틀:Root (hd0,"까지 입력하고 TAB키를 눌렀다면, 선택할 (hd0,0과 같은)파티션의 목록을 보게 될 것입니다.

탭 완성을 사용하면 GRUB을 서정하는 것은 어렵지 않을 것입니다. 이제 GRUB을 설정 해불까요? :-)


코드 예제 2.8: 주 시동 레코드에 GRUB 설치하기
grub> root (hd0,0) (/boot 파티션이 있는 곳을 지정합니다)

grub> setup (hd0) (주 시동 레코드(MBR)에 GRUB을 설치합니다)
grub> quit (GRUB 쉘을 빠져 나갑니다)



참고: MBR대신에 각각의 파티션에 GRUB을 설치하고 싶다면 setup 명령을 바꿔서 올바른 파티션을 가리키도록 해야 합니다. 예를 들어 GRUB을 /dev/sda3에 설치하고 싶다면 setup (hd0,2) 명령이 따라옵니다. 어쨌거나 일부 사용자가 이렇게 하고 싶어합니다.


GRUB에 대한 더 많은 의문점이 있다면, GRUB 자주 묻는 질문, GRUB 위키, 을 참조하시거나 터미널에서 info grub을 읽어보시기 바랍니다.

시스템 재시동하기로 계속 진행합니다.

대안: LILO 사용하기

LILO 설치하기

LILO, 리눅스 로더는 믿을만한 리눅스 부트 로더중의 역군입니다. 그러나 GRUB이 가진 일부 기능(그래서 최근 GRUB이 더 인기가 있습니다)이 빠져있습니다. LILO가 아직도 사용중인 이유는 일부 시스템에서 GRUB이 동작하지 않고 LILO가 동작하기 때문입니다. 물론 LILO를 알고 있는 사람들이 아직도 LILO 사용을 고수하고 있기 때문이기도 합니다. 어쨌든 젠투는 GRUB과 LILO 둘 다 지원하며 (이 절을 읽는) 여러분은 확실히 LILO를 사용하기로 하셨습니다.

LILO를 설치하는건 누워서 떡 먹기 입니다. 그냥 emerge를 사용하세요 =3


코드 예제 3.1: LILO 설치하기
# emerge lilo


LILO 설정하기

LILO를 설정하려면 /etc/lilo.conf를 만들어야 합니다. 여러분 취향의 편집기를 실행하고(이 핸드북에서는 일관성을 위해 nano를 사용합니다) 파일을 만듭니다.


코드 예제 3.2: /etc/lilo.conf 만들기
# nano -w /etc/lilo.conf


일부 절 이전에 여러분이 만든 커널 이미지의 이름을 기억하라고 했습니다. 다음 예제의 lilo.conf에 구역 분할 모양새 예제를 사용할 것입니다.

커널 이미지의 파일 이름과 적절한 경우 initrd 이미지 파일 이름을 확인하도록 합니다.


참고: 루트 파일 시스템을 JFS로 사용한다면, 이 파일시스템에 읽기쓰기 마운트를 허용하기 전에 다음 로깅 위치를 바로 잡기(replay) 위해 "append=ro"를 추가해야 합니다



코드 예제 3.3: /etc/lilo.conf 예제
boot=/dev/sda # 주 부트 레코드에 LILO를 설치합니다

prompt # 사용자에게 다른 항목을 선택할 수 있게 기회를 줍니다
timeout=50 # 기본 항목 시동에 대해 5초간 대기합니다
default=gentoo # 시간이 지나면 "gentoo" 항목으로 시동합니다

image=/boot/kernel-2.6.34-gentoo-r1
label=gentoo # 이 항목에 부여할 이름입니다.
read-only # 읽기 전용 루트로 시작합니다. 바꾸지 마십시오!
root=/dev/sda3 # 루트 파일시스템의 위치입니다.

image=/boot/kernel-2.6.34-gentoo-r1
label=gentoo.rescue # 이 항목에 부여할 이름입니다.
read-only # 읽기 전용 루트로 시작합니다. 바꾸지 마십시오!
root=/dev/sda3 # 루트 파일시스템의 위치입니다
append="init=/bin/bb" # 젠투 정적 복구 쉘을 실행합니다

# 다음 두 줄은 윈도우즈 시스템으로 듀얼 시동 할 때만 사용합니다.
# 이 경우 윈도우즈는 /dev/sda6에 저장되어 있습니다.
other=/dev/sda6
label=windows



참고: 다른 구역 분할 모양새를 사용하거나 커널 이미지를 사용하였다면, 알맞게 조절하십시오.


커널을 빌드하는 중이라면 커널에서 시동하려는 initramfs를 포함하도록 선택할 것입니다. 이렇다면 initramfs파일을 참조하여 설정을 변경하고 실제 루트 장치가 어디에 있는지 initramfs에 알려야 할 필요가 있습니다.


코드 예제 3.4 initramfs를 활성화한 커널 빌드에 대한 LILO 설정 일부
image=/boot/kernel-2.6.34-gentoo-r1

label=gentoo
read-only
real_root=/dev/sda3
initrd=/boot/initramfs-genkernel-x86-2.6.34-gentoo-r1


커널에 추가 옵션을 전달하려면 항목에 append 구문을 추가하십시오. 예제에서는 프레임버퍼를 활성화 하기 위해 video구문을 추가했습니다.


코드 예제 3.5: 커널 옵션을 추가하기 위해 append 사용하기
image=/boot/kernel-2.6.34-gentoo-r1

label=gentoo
read-only
root=/dev/sda3
append="video=uvesafb:mtrr,ywrap,1024x768-32@85"


2.6.7 이상의 커널을 사용하고 있고 BIOS가 큰 용량의 하드디스크 드라이브를 다루지 못해 하드디스크 드라이브의 점퍼를 설정했다면, {{{1}}}를 붙일 필요가 있습니다. sda를 이 옵션이 필요한 장치 이름으로 바꾸십시오.

genkernel 사용자들은 커널에서 설치 CD에서 사용하는 그대로의 동일한 시동 옵션을 사용함을 알아야 합니다. 예를 들어 SCSI 장치가 있다면 커널 옵션에 doscsi를 붙여야 합니다.

이제 파일을 저장하고 빠져나갑니다. 마무리 하려면 /sbin/lilo를 실행하여 /etc/lilo.conf를 시스템에 적용(예. 디스크에 설치)할 수 있게 해야 합니다. 새 커널을 설치했을 때나 메뉴를 바꾸었을때 /sbin/lilo를 실행해야 함을 잊지 마시기 바랍니다.


코드 예제 3.6: LILO 설치 마무리
# /sbin/lilo


LILO에 대한 더 많은 질문에 대해서는 위키피디어 페이지를 참조하시기 바랍니다.

이제 시스템 재시동하기로 계속 진행할 수 있습니다.

시스템 재시동하기

루트를 바꾼 환경에서 빠져 나오고 마운트한 모든 파티션을 해제합니다. 그 다음 여러분이 아기다리고기다리던 황홀한 명령 reboot를 치세요.


코드 예제 4.1: 모든 파티션의 마운트를 해제하고 재시동하기
# exit

cdimage ~# cd
cdimage ~# umount -l /mnt/gentoo/dev{/shm,/pts,}
cdimage ~# umount -l /mnt/gentoo{/boot,/proc,}
cdimage ~# reboot


물론 부팅 가능한 CD를 빼는 것을 잊지 마시기 바랍니다. 그렇지 않으면 새로운 젠투 시스템으로가 아니라 CD로 시동합니다.

젠투 설치에서 재시동하고 나면 젠투 설치 끝내기로 마무리하도록 합니다.