반응형

1. power

전원이 들어오면 CPU  ROM(Read Only Memory)  저장된 Bios (Bios Input Output System) 실행한다.

BIOS 프로그램은 전원공급과 함께 메모리의 특정번지에 자동 로드된다.

CPU 정원공급과 함께 특정번지의 BIOS프로그램을 자동 실행한다.

 

 

2. ROM BIOS에서 지정된 부트 드라이브로 부팅 시작

- 자체진단기능(POST) => Power On Self Test

 

- POST 과정

◇CPU TEST

기본 컨트롤러들의 초기화

키보드 초기화

◇ROM BIOS 테스트

◇CMOS RAM 테스트

메모리 테스트

캐시 초기화

◇INTERRUPT VECTOR TABLE(IVT) 초기화와 설치

◇CMOS RAM CHECKSUM 테스트

 

 CHECKSUM => 중복 검사의  형태, 오류 정정을 통해 공간이나 시간속에서 송신된 자료의 무결성을 보호하는 방법

키보드 테스트와 초기화

 

■ POST 과정이 이상 없이 진행 완료하면 검색된 부팅매체((하드디스크, CD_ROM, 플로피 디스크 )에서 부트로더(GRUB) 불러들인다.

 

■ BIOS  POST(Power On Self Test /자체진단기능)  수행하여 하드웨어 장치들을 인식하며 이상 유무를 확인

 

 하드디스크를 인식하며 첫번째 섹터에서 MBR(Master Boot Record) 읽어 들여 부트로더를 실행

 

■ MBR – 파티션  기억 장치의  번째 섹터에 위치하는 512 Byte 시동 섹터

 

■ Boot Code

=> 부팅 가능한 파티션을 찾아 해당 파티션의 부트 섹터를 호출해주는 역할

=> 부트코드가  생성되어있지 않거나 부팅이 가능한 파티션이 없으면 에러메세지 출력

 

■ Partition Table

=> 파티션의 정보가 포함된 부분

=> 16byte 나뉘어져서 4개의 파티션을 갖음

=> MBR 4개의 파티션을 가짐

=> MBR 앞의 파티션 세개는  파티션 이라 부르며 마지막 파티션은 확장 파티션이라 부름

 

■ Signature

=> 해당 섹터의 오류 유무를 확인하기 위한 

부트로더가 메모리에 적재되면 BIOS 종료되고, 시스템 제어권은 부트로더가 갖게 된다.

 

 

3. 부트로더(GRUB) 단계

운영체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영체제를 시동시키기 위한 목적을 가진 프로그램을 말한다.

 

 리눅스에서 사용하는 부트로더는 LILO(Linux Loader) GRUB 있다.

GRUB 커널 이미지를 불러들이고 시스템 제어권을 커널에 넘겨준다.

 

※ 커널 이미지  커널이 하나의 파일로 디스크에 저장되어 있는 

 

■ GRUB(GRand Unified Bootloader)

환경 설정 파일 : /boot/grub/grub.conf(/etc/grub.conf)

실행 파일 : /sbin/grub

설정 옵션 : /boot/grub/grub.conf

 

default=0 =>기본 부팅 레이블

timeout=5 => 부팅시 타임아웃 설정

splashimage=(hd0,0)/grub/splash.xpm.gz => splashimage 위치

hiddenmeny => GRUB 메뉴 숨김

root (hd0,0)=>root 파티션 위치

=> 설정  grub2-mkconfig -o /boot/grub2/grub.cfg 명령어로 적용

 

 

 

4. 커널 단계

커널

=> 시스템에 존재하는 자원을 효율적으로 관리하는 자원 관리자

=> 프로세서와 메모리에 상주하면서 디바이스나 메모리 같은 하드웨어 자원을 관리하고 프로세스의 스케줄을 관리하여 다중 프로세스 구현

=> 시스템에 연결된 입출력을 처리하는 운영체제의 핵심 역할 수행

 

- /etc/grub/grub.conf 파일에 의해서 커널이 메모리상에서 실행되면, 하드웨어를 점검하고 /var/log/dmesg 파일에 기록

- 루트 파일시스템(/) 읽기 전용으로 마운트 한다(만약 마운트 실패시 "커널 패닉" 메세지를 출력)

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

- swapper 커널이 사용할  장치드라이브들은 초기화하고 init 프로세스(PID 1) 실행하게 

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

 

 

5. 부팅  파일 시스템 마운트

리눅스가 부팅과정  Init 프로세스 단계 /etc/inittab 파일에 정의된 순서에 따라서 시스템 초기화에서 /etc/fstab 파일에 정의된 모든 파일 시스템을 마운트 

[파일시스템장치명][마운트포인트][파일시스템종류][옵션][dump관련설정]
[파일점검옵션]

 

 

 

6. 시스템 초기화 프로그램(init) 작동

/etc/inittab 설정 파일에서 시스템 부팅레벨을 확인하여 부팅

 

name : [level-number]:[options]:[process -option]
name -  항목() 이름들(id, si, pr, pf, ca)
level-number - 해당행의 설정내용을 어떤 부팅레벨에서 실행할 것인가를 설정

=> 0 : 시스템 중지
=> 1 : 단일 사용자 모드, single 모드로 쉘로 바로 부팅
=> 2 : NFS 기능을 제외한 다중 사용자 모드
=> 3 : 모든 기능을 포함한 다중 사용자 모드
=> 4 : 사용하지 않음
=> 5 : X-Window 부팅
=> 6 : 시스템 리부팅(reboot)

시스템이 부팅되면 init 프로세스는 /etc/rc.d/rc.sysinit 스크립트를 실행시켜 네트워크 설정, 호스트 이름설정, 하드디스크 최적화 등의 작업을 수행하고 /etc/inittab 설정된 런레벨에 따라 해당하는 /etc/rc.d/rc[0-6].d 스크립트를 실행함

)/etc/rc.d/rc.3d

=> S08iptables 8번째 작업으로 /init.d/iptables 프로세스를 시작시킴

 

서버 부팅 시 마다 자동 스크립트 실행 => /etc/rc.d/rc.local 파일에 저장

/rc.local 99번째(마지막)이므로 부팅시 가장 나중에 적용

 

 

7. 로그인

부팅 과정의  부분으로 init 많은 텍스트모드 로그인 프롬프트를 실행함

유저네임과 패스워드를 입력하여 쉘로 들어감

 

 

 

반응형

+ Recent posts