본문으로 바로가기

[리눅스] 부팅과정

category 운영체제/리눅스 2018. 11. 20. 23:24
728x90
반응형

오늘은 운영체제의 로딩 과정에 대해 알아보겠습니다.


일반적인 운영체제와 리눅스의 부팅 과정에 대해 각각 알아봅시다.


1. 일반적인 운영체제


먼저 전원버튼을 눌러 전원을 켭니다.


제일 먼저 실행되는 프로그램은 부트로더라고 부르는 프로그램입니다.


이 부트로더란 운영체제가 기동되기 전에 미리 실행되어 커널이 정상적으로 동작하기 위해 필요한 모든 작업을 마무리하고, 운영체제를 기동시키기 위한 목적을 가진 프로그램입니다.


부트로더가 먼저 하드디스크의 첫 번쨰 트랙의 첫번째 섹터에 존재하는 MBR(Master Boot Record)의 부팅 관련 프로그램을 실행하게 됩니다.


MBR에는 다음과 같은 정보들이 들어 있습니다.


-파티션의 시작과 끝을 나타내는 주소

-부팅 가능한 파티션인지 구별하기 위한 정보

-파티션타입


MBR의 프로그램은 위의 정보를 바탕으로 부팅 가능한 운영체제의 부트 섹터로 제어권을 넘깁니다.


제어권을 받은 부트 섹터는 운영체제를 메모리로 로드하기 위한 부트 프로그램을 실행 시킵니다.


 

 

 




2. 리눅스


리눅스는 일반적인 운영체제와 다르게 부팅됩니다.


쉽게 말해 조금더 복잡한 절차를 거치게 됩니다.


1) LILO ( Linux Loader ) 과정


리눅스에는 LILO로 불리는 로더가 있습니다.


로더는 프로그램으로, 커널을 메모리에 적재하는 역할을 합니다.


리눅스 부팅을 위해서는 반드시 LILO가 있어야됩니다.


전원이 켜지게되면, MBR을 읽어 로더를 실행합니다.


로더는 커널 이미지의 위치를 알고 있습니다.


커널 이미지를 찾은 후, 메모리에 적재하는 것 까지가 LILO의 역할입니다.


2) 커널 부팅


로더에 의해 메모리에 커널이 적재되면, 커널이 실행됩니다.


커널은 먼저 자신의 기능들을 점검한 후, 설치된 하드웨어를 점검합니다.


커널이미지는 대부분 압축이 되어 있고, 압축을 풀고 난 후, 실행됩니다.


커널은 그 다음, 하드웨어를 하나 하나 점검합니다.


그리고 루트 파티션을 마운트하게 됩니다. 이 때의 루트 파티션은 읽기전용으로 마운트하게 됩니다.


읽기전용으로 마운트하는 이유는 다음에 수행될 init이 디스크를 검사하는 과정이 있는데, 이것을 편집이 되지않은 상태에서 검사하려고 하기 때문입니다.


검사를 마친 후, 읽기전용이 아닌 읽기/쓰기 가능한 상태로 리마운트를 하게됩니다.


 

 

 



3) init 과정


init은 커널이 제일 먼저 실행하는 프로세스입니다.


PID는 무조건 1번이 됩니다. 즉, 모든 프로세스의 최상위 프로세스입니다.


커널은 init을 실행하고, 모든 제어권을 init에게 넘깁니다.


4) run level


init이 실행되면 가장 먼저 /etc/inittab라는 설정 파일을 읽게 됩니다.


이 파일에는 init에 관련된 정보들이 있으며, 기본적인 run level이 설정되어 있습니다.


run level의 종류는 아래와 같습니다.


run level

설명 

 0

 시스템 종료

 1

 싱글 유저 모드

 2

 NFS를 지원하지 않는 다중 사용자 모드

 3

 모든 네트워크 기능을 지원하는 다중 사용자 모드

 4

 사용자 정의 run level

 5

x 윈도우 모드

 6

 시스템 재부팅


위의 run level 중, 필요한 run level로 설정을 하여 사용하면 됩니다.


부팅 과정은 이와 같습니다.

728x90
반응형