4장. CentOS 리눅스 시작과 종료
4.1 리눅스 부팅 과정
4.2 리눅스 로그인
4.3 시스템 종료와 재부팅
4.1 리눅스 부팅 과정
1단계 : 메인보드의 ROM-BIOS 실행
- BIOS프로그램은 전원이 들어오는 즉시 메모리 특정번지로 load 후 적재. CPU는 시스템 전원공급 즉시 메모리 특정주소의 BIOS 명령어를 실행.
* BIOS : 컴퓨터에서 전원을 켜면 맨 처음 컴퓨터의 제어를 맡는 프로그램.
( 하드웨어와 소프트웨어 사이의 연결과 번역 기능을 담당하는 인터페이스 )
바이오스를 구성하는 루틴으로는 스타트업(start-up) 루틴과 서비스 처리 루틴, 하드웨어 인터럽트 처리 부분이 대표적.
2단계. 부트로더 실행
- 부팅가능한 GRUB(LILO)중 선택된 Kernel 이미지를 메모리로 로딩. ( 압축된 커널이미지는 메모리에 올라간 다음 압축 해제 )
- Root 파티션을 마운트. ( read-only )
* Bootloader : 부트로더는 OS의 커널을 로드하고 몇몇 커널 파라메터를 커널에 넘겨주는 일을 한다.
* LILO(LInux LOader), GRUB : 3장 참고
3단계. Swapper 프로세스 실행
- PID가 0번인 스와퍼는 각 장치 드라이브 초기화 장치 드라이브가 초기화 되면 PID 1번인 init 실행.
- 디스크 검사(init)후, 검사가 끝나면 다시 read-write 모드로 remount. 그 후, /sbin/init 프로그램을 실행.
4단계. init 프로세스 실행
- /etc/inittab 파일중 가장 먼저 실행되는것은 /etc/rc.d/rc.sysinit 스크립트
(시스템초기화 : /etc/inittab에 사용자가 설정한 실행 내용에 따라 달라짐)
- /etc/rc.d/rcN.d(실행 레벨 설정된 프로세스) 실행.
- K는 해당 스크립트 종료. S는 스크립트 실행.
- /etc/rc.d/rc.local 각 사용자들이 부팅시 자동으로 실행하고자하는 프로그램을 설정하거나 스크립트 설정파일.
표 1. /etc/rc.d/rc.local 스크립트 파일
/etc/inittab init의 설정파일
/etc/rc.d/rc.sysconfig init스크립트에서 제일 먼저 실행되는 것
/etc/rc.d/rc.local init스크립트에서 제일 마지막에 실행되는 것
/etc/rc.d/init.d/* 데몬을 실행시키기 위한 스크립트들
/etc/rc.d/rc[0-6].d/* 각 런레벨에 정의된 데몬들을 실행시키기 위한 것 실제 내용은 /etc/rc.d/init.d의 스크립트로의 링크
/etc/rc.d/rc 각 런레벨에 해당되는 스크립트를 실행시키는 스크립트
/var/lock/subsys/* 현재 실행되고 있는 데몬들의 lock파일들
/var/run/*.pid 현재 실행되고 있는 데몬들의 PID가 적힌 파일들
5단계. 계정 프로세스 실행
- login을 위해 /sbin/mingetty 실행(Console Login 실행)
* Runlevel : init는 /etc/inittab이란 파일을 읽는다.
표2. /sbin/inittab
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author:Miquel van Smoorenburg,
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# : 시스템종료
# 1 - Single user mode
# : 싱글유저모드 (root계정만 존재)
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# : 다중 사용자 모드. NFS를 지원하지 않음.
# 3 - Full multiuser mode
# : 완전한 다중 사용자 모드. 모든 네트워크 지원.
# 4 - unused
# : 특별히 정해진 의미없음.
# 5 - X11
# : X-Window에서 로그인 가능.
# 6 - reboot (Do NOT set initdefault to this)
# : 재부팅.
#
id:3:initdefault:
# : 이 줄에서 기본 런레벨을 지정함.
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
# : init은 제일 먼저/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
:
:
# : runlevel 3번에 해당하는 스크립트들을 실행.
# 이 스크립트들은 /etc/rc.d/rc3.d 디렉토리에 위치.
# 주로 데몬 프로세스를 시작하거나 종료시키는(죽이는, kill)역할.
# 순서에 따라서 마지막에 S99local이 실행. (/etc/rc.d/rc.local 에 링크.)
# 일반적으로 부팅과정에 어떤 작업을 추가시키려면 이 파일에 추가.
요약
전원 스위치를 켜면 BIOS프로그램들의 실행내용들이 실행이되고 부트로더(GRUB)의 실행이 되고, 커널의 로딩이 된후 init프로세스의 실행이 된다. init에서 부팅모드를 정할 수 있고, 필요에 따라 사용자가 선정할 수 있다. 리눅스 부팅 과정을 다 알지는 못하였지만 전반적인 부트로더의 흐름을 간략하게 알 수 있었던것 같다.
'리눅스 초급' 카테고리의 다른 글
6장 CentOS 리눅스 디렉토리 관리 (0) | 2016.05.08 |
---|---|
5장. CentOS 리눅스 사용자 관리 (0) | 2016.05.08 |
3장. CentOS 리눅스 부트로더 GRUB (1) | 2016.05.08 |
제1부. CentOS 리눅스 소개와 설치 (0) | 2016.05.08 |