[1. 리눅스 일반] 02 리눅스의 설치 (3) - 부트 매니저
System/Linux Master

[1. 리눅스 일반] 02 리눅스의 설치 (3) - 부트 매니저



1. 부트로더 : Bootstrap Loader의 준말로, 컴퓨터를 사용자가 사용할 수 있도록 디그크나 플래시에 저장된 OS를 읽어 주기억장치에 적재해주는 프로그램


가. 부트로더 기능

1) OS 실행 전 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 OS를 시동시키기 위한 프로그램

+) 임베디드 시스템(Embedded system) 부트로더 : PC의 BIOS와 OS Loader기능 수행

2) OS 실행에 필요한 환경 설정, OS 이미지 메모리에 복사

3) 크기는 512byte. 하드디스크의 첫 번째 섹터(MBR[각주:1])에 위치

4) 주 파티션마다 부트 섹터[각주:2]가 할당된다.

5) 분할된 주 파티션들은 자신의 부트 레코드를 MBR에 기록하여 실행된다.

6) 한 컴퓨터에 여러 개의 OS가 설치되어 있을 경우 작업 OS를 선택하여 부팅할 수 있게 한다.

7) x86 아키텍처에서 많이 사용되는 부트로더는 LILO(LInux LOader)와 GRUB(GRand Unified Bootloader)이다.

· LILO는 Linux OS 한정, GRUB은 타 OS에서도 사용 가능

· LILO, GRUB 모두 System 전원 공급 시 가장 먼저 ROM-BIOS에서 시스템 제어권을 가지고 장착된 하드웨어에 대한 기본적인 점검과 인식을 한다.

· ROM-BIOS는 MBR에 있는 부트로더에게 제어권을 넘긴다.


나. GRUB(GRand Unified Bootloader)

· 에릭 스테판 볼레니(Erich Stefan Boleny)에 의해 개발

1) 리눅스의 전통적인 부트로더로 사용되어 왔던 LILO의 단점을 보완한 것 → LILO에 비해 설정 및 사용 용이

2) 부트 정보를 사용자가 임의 변경 가능, 부트 정보가 올바르지 않더라도 부팅 시 바로 수정 가능

3) 여러 타 OS와 멀티부팅 가능

4) 대화형 설정 → 커널 경로 + 파일 이름만 알면 부팅 가능

5) 메뉴 인터페이스 환경 지원, 대화형 모드로 부트 정보 설정

6) 파일 시스템과 커널 실행 포맷 인식, 하드디스크 상에서 커널의 물리적 위치를 기록하지 않아도 커널 위치와 커널 이미지 파일명만 알고 있으면 부팅이 가능하다.

7) 환경 설정 파일 : /boot/grub/grub.conf, 또는 /etc/grub.conf


root(hd0,0)

 · root 파티션의 위치를 저장

 · (hd0,0) primary master의 첫 번째 파티션을 의미

kernel/boot/vmlinuz

 · 부팅하면서 메모리에 위치하는 리눅스 커널에 전달할 인수를 지정하는 옵션

 · /boot 파티션을 별도로 사용하고 있으면 커널 위치는 /kernel/boot/vm

initrd/boot/initrd

 · 이미지 파일의 경로 지정 옵션



8) 장치명

· GRUB에서는 ROM-BIOS에서 사용하는 정보를 사용한다.

- IDE, SCSI 장치명을 별도로 구분짓지 않는다.

· IDE와 SCSI의 구분 없이 시스템에 정착된 순서대로 hd0, hd1…로 표기한다.

· 디스크 번호, 파티션 번호는 0부터 시작한다.

· (디스크장치명,파티션명) 형식으로 표기


구분

DISK

Partition

1

hd0

(hd0,0), (hd0,1), (hd0,2) …

2

hd1

(hd1,0), (hd1,1), (hd1,2) …

3

hd2

(hd2,0), (hd2,1), (hd2,2) …



9) GRUB 작업 모드

· GRUB 명령 모드 : 초기 화면에서 'c' 키

· GRUB 편집 모드 : 초기 화면에서 'e' 키


※ GRUB 편집모드 키와 기능 ※

↑, ↓

 위, 아래 이동

a

 grub, conf에서 커널과 관련된 매개변수 추가

b

 선택된 boot menu로 시스템 부팅

e

 선택된 boot menu 명령어 편집

c

 · 상호 대화식으로 직접 입력할 수 있는 모드

 · 명령어를 입력하는 환경이 bash셸과 유사

o

 새로운 행을 커서 다음 행에 삽입

O

 새로운 행을 커서 앞 행에 삽입

d

 선택된 행 삭제

ESC

 GRUB 이전 메뉴로 이동



2. 런레벨(run level) : 프로세스 init[각주:3]가 참조하는 것


런레벨

기능

0

 시스템 종료(shutdown), 명령어 halt 또는 init 0과 동일

1

 · 단일 사용자 모드(root만 로그인 가능)

 · 네트워크, 서버, 파일 공유 서비스 X

 · root 패스워드 분실, 파일 시스템 점검 및 복구, 시스템 점검 시 접근

2

 네트워크가 없는 다중 사용자 모드

3

 텍스트 모드(CUI)에 의한 다중 사용자 모드

4

 미사용

5

 그래픽 모드(GUI)에 의 한 다중 사용자 모드

6

 시스템 재시작(재부팅), 명령어 reboot 또는 init 6과 동일


※ 런레벨 관련 파일 ※

/etc/rc.d/init.d

 시스템 서비스의 시작과 중지를 시킬 수 있는 스크립트 포함

rc

 실행 레벨에 따라 지정한 서비스를 실행하는 스크립트

rc.local

 rc.sysinit에 의해 호출되는 파일

rc.sysinit

 · 부팅 시에 init에 의해 실행되는 스크립트

 · 시스템 초기화 셸 스크립트

rc0.d ~ rc6.d

 각 실행 레벨 관련 디렉터리. 초기화 스크립트에 대한 symbolic link가 만들어짐


· /etc/inittab 파일 형식 : 코드 런레벨:행동:명령어

· runlevel : 현재 실행되는 런레벨 확인 명령어


3. 로그인과 로그아웃

가. 로그인

1) 리눅스는 X 윈도우 상에서의 로그인/로그아웃과 콘솔 상에서의 로그인/로그아웃이 있다.

2) 로그인 과정 : 검색 경로 설정 → 터미널 종류 설정 및 각종 터미널 설정 → 환경변수 설정 → 로그인 시 실행 명령어 실행 → 로그인 메시지 출력


※ 로그인 관련 파일 ※

파일

특징

상태

/etc/issue

 콘솔(로컬) 접속 시 보여줄 메시지 파일

 로그인 전

/etc/issue.net

 원격 접속 시 보여줄 메시지 파일

 로그인 전

/etc/motd

 로컬접속, 원격접속 모두 해당. 로그인 성공 후 보여줄 메시지 파일

 로그인 후


3) 로그인 셸 실행

· /etc/passwd 파일 마지막 필드에 로그인 셸이 정의되어 있음

· 로그인 셸에 따라 프롬프트가 다르다.


셸 종류

저장 위치

프롬프트

sh

 본셸, /bin/sh

$

csh

 C셸, /bin/csh

%

ksh

 콘셸, /bin/ksh

$

bash 

 배쉬셸, /bin/bash

$



나. 로그아웃

1) logout, exit 명령어 또는 Ctrl + D

2) 관리자는 일정시간 동안 작업을 수행하지 않는 모든 사용자들을 강제로 로그아웃할 수 있다.

· 강제 로그아웃은 /etc/profile에 TMOUT 변수 값을 지정하여 수행할 수 있다.

  1. MBR(Master Boot Record) : 하드디스크의 첫 번째 섹터. 부트 매니저 프로그램과 파티션 정보 저장. [본문으로]
  2. 부트 섹터(Boot Sector) : 디스크의 다른 부분에 저장되는 부팅 프로그램을 담을 수 있는 하드디스크, 플로피 디스크 또는 비슷한 기억 장치의 섹터. [본문으로]
  3. init : 리눅스 부팅의 마지막 단계에서 생성되는 모든 프로세스의 부모 프로세스 [본문으로]