본문 바로가기

기술자료/기술운영자료

리눅스 부팅과정 이해

리눅스 부팅 과정 이해

 

리눅스 부팅 과정을 통 해 시스템 장애 발생 시 장애의 원인을 분석하여 적절한 조치를 취할수 있다.

1.   시스템 부팅 과정

 

Power On

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

부트 드라이브의 첫 번째 섹터인 부트 섹터 읽어 들임

부트 섹터의 부팅 프로그램인 Boot loader 작동

커널이미지 (/boot/vmlinuz) 적재

루트 파일 시스템 (root filesystem)마운트

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

Login : 프롬프트


 

2.   시스템 부팅 단계


   1)  부팅 1단계 : ROM-BIOS

           - 컴퓨터 하드웨어, 각 장치 사용을 위한 인식및 준비를 위한 기초적인 프로그램

           - ROM-BIOS는 컴퓨터 전원이 들어오면 가장먼저 실행되는 CROM에 들어있음.

           - ROM-BIOS란 ROM에 들어있는 BIOS(Basic Input Output System)를의미

 

▶ ROM-BIOS의 역할

 

▷ POST ( Power On Self Test) (자체 진단기능)

하드웨어 자체가 스스로의 시스템에 문제가 없는지 기본적인 사항을 체크

BIOS(Basic Input / OutputSystem)에 의해 실행

▷ BootLoader

Boot loader 종류에는 LILO와 GRUB가 있음.

POST과정에서 이상이 발생하지 않으면 Boot Loader를 메모리에 로딩하여 리눅스 부팅 시작

Boot Loader는 부팅매체(HDD, CD-ROM, USB)를 하나씩 검사.

부팅매체의 0번섹터 (MBR)에서 Boot Program을 읽어 들여 메모리 로드.

Boot Program(= Boot Loader, BootSector)에 GRUB이 들어있음.

ROM-BIOS에 의해 Boot loader가 메모리에 로딩된 이후부터 ROM-BIOS는 시스템부팅

제어권을 GRUB에게넘겨주고 자신은 종료, GRUB이 시스템의 부팅과정을 주도하게 됨

▷ MBR ( Master Boot Record )

MBR은 저장매체의 첫번째 섹터 (LBA 0)에 위치하는 512바이트 크기의 영역.

OS가 부팅할 때 POST(Power On Self Test)를 하고, Disk의 첫번째섹터 호출을 시도.

 

   2)  부팅 2단계 : Boot Loader 실행과 역할

     2-1) 리눅스 커널 적재

           - GRUB실행화면에서는 어떤 커널을 로딩할 것인가를 선택 가능.

           - 리눅스 커널이 메모리에 적재되는 이 순간부터 부팅이 진행

           - GRUB은 /boot/grub/grub.conf 파일에 정의되어 있는 여러 가지 리눅스 커널 중 선택된 리눅스 커널을

             메모리에 로딩

     2-2) 스와퍼 프로세스 호출

           - 리눅스 커널 로딩이 끝난 후 수행되는 작업

   3)  부팅 3단계 : 스와퍼 프로세스

           - 스와퍼라는 프로세스의 첫번째 역할은 전에 인식했던 각 장치들의 드라이브를

           - 초기화하고 PID가 1인 init프로세스를 실행 후 그 외 몇가지 기능을 수행 부팅이 완료되면 사라짐

 

   4)  부팅 4단계 : init 프로세스의 실행

           - init프로세스는 /etc/inittab라는 설정 파일을 읽어 들여 부팅 시 화면에 뿌려주고 설정 파일대로 실행 됨.

 

   5)  부팅 5단계 : 부팅 레벨의 결정단계

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

 

그림입니다.
원본 그림의 이름: mem0000227401d1.tmp
원본 그림의 크기: 가로 446pixel, 세로 278pixel


실행레벨 (RunLevel)

0

시스템 중지(halt)

1

단일 사용자 모드, single 모드로 쉘로 바로 부팅

2

NFS 기능을 제외한 다중 사용자 모드

3

모든 기능을 포함한 다중 사용자 모드

4

사용하지 않음

5

X-Window로 부팅

6

시스템 리부팅(reboot)

  

   6)  부팅 6단계 : 부팅 레벨의 결정단계

            - 시스템 초기화 작업을 수행하는 스크립트

   7)  부팅 7단계 : /etc/rc.d/rcN.d/ 디렉토리 실행

            - 부팅레벨에 따라 'N'의 숫자가 바뀜
            - 부팅레벨에 따라 시스템 부팅시에 자동실행될 서비스들에 대한 설정
            - /etc/rc.d/init.d/ 디렉토리에 있는 파일이 원본
            - 'K'로 시작하는 것은 자동시작되지 않는 서비스
            - 'S'로 시작하는 것은 자동시작되는 서비스
            - 'K. S' 다음에 오는 숫자는 실행된 순서를 의미
            - S99local 은 /etc/rc.d/rc.local 파일을 원본으로 하는 링크파일로 2,3,4.5번 부팅레벨에서만 실행, 
            - S99local은 부팅레벨에서 가장 마지막 단꼐 실행되는 파일.
            - rc.local 파일에는 부팅시 소스로 직업컴파일하여 설치했던 apache, mysql, proftpd등 
            - 응용프로그램들을 자동실행하기 위한 설정파일