강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스시스템 전체 부팅과정의 이해

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스시스템 전체 부팅과정의 이해

작성자 : (주)수퍼유저코리아, http://www.superuser.co.kr 서버팀

리눅스시스템 전체 부팅과정의 이해

top


1단계 : 전원스위치 ON

- 시스템 전원공급

- 메인보드의 ROM-BIOS에 있는 BIOS프로그램 자동실행.
. BIOS프로그램은 전원공급과 함께 메모리의 특정번지(예:FFFF0H)에 자동 로드됨
. CPU는 전원공급과 함께 특정번지(예:FFFF0H)의 BIOS프로그램(명령들)을 자동실행함.

2단계 : BIOS프로그램들의 실행내용들

- 자체진단기능(POST)
. CMOS검사, CPU, MEMORY, 그래픽카드, 키보드, 마우스등 각종 장치들의 이상유무를 검사하고 이들 장치(하드웨어들)을 초기화시킴

- 부팅매체검색과 부트로더 실행
. POST과정이 이상없이 진행완료되면 검색된 부팅매체(하드디스크, CD-ROM, 플로피디스크등)에서 부트로더
(예:GRUB, LILO)를 불러들임.
. 즉, 예를들어 하드디스크가 부팅매체로 선택되었다면 하드디스크의 부팅파티션에 있는 0번섹터
(대부분 MBR이라고도 함)에 있는 부트로더(Boot Loader, 즉, GRUB)을 읽어들이게 됨.
. 부트로더(GRUB)가 메모리에 적재되면 BIOS는 종료되고, 시스템제어권은 부트로더(GRUB)이 갖게됨


리눅스시스템 전체 부팅과정의 이해

top



3단계 : 부트로더(GRUB)의 실행

- GRUB은 실행과 함께 /boot/grub/grub.conf파일을 읽어서 어떤 부팅메뉴(커널)로 부팅을 할 것인가를 결정하게 됨(자동결정 또는 사용자선택) 이 화면이 GRUB이 화면(파란화면)에 나타나는 첫번째 화면임.

- GRUB은 커널(kernel)이미지를 불러들임. 그리고 시스템 제어권을 커널에게 넘겨줌.

4단계 : 커널의 로딩

- 커널은 swapper프로세스(PID 0번)를 호출함.

- swapper는 커널이 사용할 각 장치드라이브들을 초기화하고 init프로세스(PID 1번)를 실행하게 됨.

- init프로세스가 실행되면서 /etc/inittab파일을 읽어들여서 그 내용들을 차례대로 실행함.

5단계 : init프로세스의 실행

- 이후의 과정들은 모두 init프로세스의 실행내용들임. (/etc/inittab파일의 실행내용들)

- 즉, 로그인프롬프트가 나오기 까지의 부팅완료화면까지 init프로세스에 의해서 실행되는 내용들임.


리눅스시스템 전체 부팅과정의 이해

top


5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용) -상세내용 1

id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

x:5:once:/etc/X11/prefdm ?nodaemon

 

5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용) -상세설명 2

/etc/inittab 파일의 각 행의 형식과 의미

name : level-number : options : process -options

name : 각항목(행)의 이름들 (id, si, pr, pf, ca등)

level-number : 해당행의 설정내용을 어떤 부팅레벨에서 실행할 것인가를 설정

options : 다음에 오는 process를 실행할 때 적용할 프로세스 속성(옵션)
respawn, wait, once, off, initdefault, sysinit, powerfail, powerokwait, ctrlaltdel등

process ?options : 실행할 실제 내용(명령어)

예)
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용) -상세설명 3

id:3:initdefault:

○ 시스템 부팅을 어떤 부팅레벨로 부팅할 것인가를 결정하는 행.

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)

5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용) -상세설명 4

si::sysinit:/etc/rc.d/rc.sysinit

○ /etc/rc.d/rc.sysinit파일의 실행 (가능하다면 이 파일을 vi로 직접 열어서 확인하기 바람)
- 시스템초기화하는 스크립트들이 주로 들어있음.
- 약 500행이상의 행들로 구성되어 있음.
- 부팅시 화면에서 시스템 초기화관련 메시지들이 모두 이 파일의 실행과정의 메시지임.
- 이 스크립트 파일의 주된 실행내용들 (배포판종류와 시스템상황에 따라 내용이 조금씩 다름)
. default path 설정
. /etc/sysconfig/network파일의 실행
. 네트워크 설정 확인 및 적용
. swapon 명령으로 스왑작동하기
. 호스트이름, 도메인이름 설정하기
. keymap loading
. fsck실행으로 파일시스템 점검하기(이과정에서 /etc/fstab파일을 참조함)
. PNP파드웨어 점검하기
. /proc파일시스템 마운트하기
. kernel module loading
. depmod실행으로 모듈의존성 설정
. system clock설정
. system font load
. 파일청소작업
. serial port 설정작업
. /usr/sbin/netconfig 실행(필요시 수행)
. /usr/sbin/timeconfig 실행(필요시 수행)
. /usr/sbin/autoconfig 실행(필요시 수행)
. /usr/sbin/ntsysv 실행(필요시 수행)
. utmp 파일의 검사 및 생성
. wtmp파일의 검사 및 생성
. 기타 시스템 사용을 위한 초기화 작업들 수행

5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용) -상세설명 5

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

○ 결정된 부팅레벨에 따라서 조건(id:3:initdefault:)에 맞는 행을 실행함.

○ 부팅화면에서 각 서비스데몬(sshd, sendmail, xinetd, syslogd, named, httpd등)들이 실행되며,
서비스데몬들의 로딩(실행)되는 메시지들은 모두 이단계에서 실행되는 메시지들임.

○ 조건에 따른 실행되는 내용들
- 부팅레벨이 0번이면 -> /etc/rc.d/rc0.d의 파일들이 순차대로 실행됨.
- 부팅레벨이 1번이면 -> /etc/rc.d/rc1.d의 파일들이 순차대로 실행됨.
- 부팅레벨이 2번이면 -> /etc/rc.d/rc2.d의 파일들이 순차대로 실행됨.
- 부팅레벨이 3번이면 -> /etc/rc.d/rc3.d의 파일들이 순차대로 실행됨.
- 부팅레벨이 4번이면 -> /etc/rc.d/rc4.d의 파일들이 순차대로 실행됨.
- 부팅레벨이 5번이면 -> /etc/rc.d/rc5.d의 파일들이 순차대로 실행됨.
- 부팅레벨이 6번이면 -> /etc/rc.d/rc6.d의 파일들이 순차대로 실행됨.

○ 각 디렉토리들에는 S로 시작하는 파일들과 K로 시작하는 파일들이 링크파일 형태로 존재함.

○ 각 디렉토리내에 있는 링크파일들은 K와 S다음 두자리 숫자로 시작함.(실행순서를 의미함.)

○ 디렉토리들에는 링크파일들이 들어 있으며, /etc/rc.d/init.d/디렉토리의 파일들로 링크되어 있음.

○ 각 디렉토리의 마지막에는 /etc/rc.d/rc.local파일이 실행되는 링크파일이 있음.

5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용) -상세설명 6

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

○ CTRL + ALT + DEL 키를 동시에 눌렀을 때 실행될 내용을 설정한 행임(일종의 magic key)

○ 즉, 시스템 부팅이 완료되고, 시스템을 사용하고 있는 도중에 CTRL+ALT+DEL키를 동시에
눌렀을 때에 시스템 재부팅이 되는 것은 이 설정 때문임.

○ 만약 위의 내용을 다음과 같이 바꾸게 되면 CTRL+ALT+DEL키를 눌렀을 때에 종료가 됨.

ca::ctrlaltdel:/sbin/shutdown -t3 -h now

따라서, 원하는 내용(꼭 shutdown명령이 아니라도 무방함)을 설정할 수 있음.

○ 또한 다음과 같이 ?a옵션을 추가하였을 때에는 CTRL+ALT+DEL키를 사용할 수 있는 사용자를
제한할 수도 있음.

ca::ctrlaltdel:/sbin/shutdown -t3 ?r ?a now

이와 같이 설정되어 있다면 /etc/shutdown.allow파일에 설정된 사용자만 이 키 사용가능.



리눅스 시스템 전체 부팅과정의 이해

top


5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용) -상세설명 7

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

○ 시스템 전원공급(UPS전원 부족등)에 관한 설정행 임.

○ pf행은 UPS전원이 부족할 경우 2분후에 자동적으로 시스템을 shutdown시킴.

○ pr행은 다시 전원공급이 되었을 때(UPS 전원 재충전등)에 예약된 shutdown실행을 자동취소시킴.

5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용) -상세설명 8

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

○ 부팅의 마지막 단계로서 6개의 가상콘솔이 실행됨.

○ 2, 3, 4, 5번 부팅레벨에서만 해당되는 내용.

○ respawn속성(옵션)으로 인하여 로그인 후에 콘솔화면에서 작업후에 exit로 로그아웃을 하면 자동으로 로그인 창이 다시 실행되는 것임.

○ 각 행의 실행내용
- 1:2345:respawn:/sbin/mingetty tty1 은 ALT+F1을 눌렀을 때에 보여짐. (첫번째 가상콘솔)
- 2:2345:respawn:/sbin/mingetty tty2 은 ALT+F2를 눌렀을 때에 보여짐. (두번째 가상콘솔)
- 3:2345:respawn:/sbin/mingetty tty3 은 ALT+F3을 눌렀을 때에 보여짐. (세번째 가상콘솔)
- 4:2345:respawn:/sbin/mingetty tty4 는 ALT+F4를 눌렀을 때에 보여짐. (네번째 가상콘솔)
- 5:2345:respawn:/sbin/mingetty tty5 는 ALT+F5를 눌렀을 때에 보여짐. (다섯번째 가상콘솔)
- 6:2345:respawn:/sbin/mingetty tty6 은 ALT+F6을 눌렀을 때에 보여짐. (여섯번째 가상콘솔)

5단계 : init프로세스의 실행내용들 (/etc/inittab파일의 내용 : 로그인프롬프트) -상세설명 9

Fedora Core release 4 (Stentz)
Kernel 2.6.11-1.1369_FC4 on an i686
edu login :

○ 부팅의 마지막 단계로서 콘솔창이 뜬 것임.

○ 즉, 부팅완료를 의미함.


 
copyright.gif

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,805 개
  • 현재 접속자 :  153 명