졍
지영이 블로그
졍
전체 방문자
오늘
어제
  • 분류 전체보기 (95)
    • 네트워크 (12)
    • 시스템설계 (6)
    • AWS (7)
    • Elasticsearch (3)
    • Python (5)
    • 자료구조, 알고리즘 (9)
    • 코딩테스트 (29)
    • NCP (8)
    • 운영체제 (7)
    • 개인 프로젝트 (8)
    • Github (1)
    • 여행 (0)
      • 2024동유럽 (0)
    • 대학원 (0)
      • 논문정리 (0)

최근 글

최근 댓글

hELLO · Designed By 정상우.
졍

지영이 블로그

[Linux] 리눅스 부팅 과정, 리눅스 런 레벨(Runlevel)
운영체제

[Linux] 리눅스 부팅 과정, 리눅스 런 레벨(Runlevel)

2022. 9. 26. 15:51

Linux 부팅 과정은 크게 5단계로 나눌 수 있다.

0단계: 시스템 전원 공급

1단계: BIOS 단계

2단계: 부트로드 단계

3단계: 커널 단계

4단계: init 프로세스 단계

다음에서 각 단계의 세부 프로세스를 정리해보려고 한다.


리눅스 부팅 과정

0단계: 시스템 전원 공급

- 먼저 시스템에 전원을 켠다.

- 시스템 전원 공급과 함께 BIOS(Basic Input Output System) 프로그램이 메모리의 특정 번지에 자동으로 로드된다.

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

 

1단계: BIOS 단계

*BIOS: 운영체제 중 가장 기본적인 소프트웨어. 컴퓨터의 입출력을 처리하는 펌웨어

- POST(Power On Self Test; 자체진단기능)를 통해 하드웨어(cpu, ram, 제어장치, 주변장치 등)이 잘 동작하는지 확인한다.

- 부팅 디바이스(=부팅 장치;하드디스크, usb, 원격지 등)를 찾고, 해당 디바이스의 파티션 테이블을 검색하여(항상 MBR;Master Boot Record(디바이스의 가장 앞부분)에 존재) 부트로더를 읽어들인다.

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

+) BIOS는 하드웨어, cpu관련 설정, 부팅장치 검색순서 등을 정할 수 있다. -> BIOS 설정 단계에서 pxe 부팅이 가능하다.

 

2단계: 부트로드 단계

*부트로더: OS가 시동되기 전에 커널이 올바르게 시동되기 위한 준비작업을 하는 프로그램

- 부트로더를 실행한다(주로 GRUB(GRand Unified Bootloater나 LILO(Linux Loader)).

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

- GRUB 환경설정 파일에서 어떤 부팅 커널로 부팅할 것인지 결정한다.

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

GRUB 실행 파일: /sbin/grub

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

CentOS 7이상: /etc/default/grub

+) 파일 수정 이후 # grub2-mkconfig -o /boot/grub2/grub.cfg 명령어로 설정을 적용한다.

 

3단계: 커널 단계

- 커널이 메모리로 로드되면 /var/log/dmesg 파일에 기록된다.

- 루트 파일시스템(/)을 읽기 전용으로 마운트한다. 이때 마운트에 실패하면 "커널 패닉" 메세지를 출력한다.

- PID 0번(swapper 프로세스)를 호출하여 커널이 사용할 각 장치의 드라이브를 초기화 한다.

- PID 1번을 실행한다. (init 프로세스) -> 최근엔 systemd를 더 많이 쓴다고 한다.

   +) 부트로드 단계에서 init ram disk(initrd)를 통해 RAM디스크를 루트파일 시스템(/)으로 마운트 할 수 있다.

 

4단계: init 프로세스 단계

- init 프로세스 진행

- 기타 필수 프로그램들을 실행

- 부팅 완료

 

+) 부팅하는 동안 출력되는 메세지는 /var/log/boot.log에서 확인할 수 있다.

+) 부팅 과정에서의 에러들은 주로 커널패닉, 부트로더 에러가 대부분이다.


런 레벨(Runlevel)

리눅스가 부팅할 때, 시스템의 상태를 나타내는 값

Runlevel 0: 시스템 종료

Runlevel 1: single user mode. 관리자만 접속가능한 모드이다. 시스템 점검 등의 경우에 사용.

Runlevel 2: multi user mode. 네트워크는 제공하지 않는 모드이다.

Runlevel 3: full multi user mode. 거의 모든 자원 사용가능하지만 텍스트 유저모드만 지원한다. (콘솔창 하나만 띄우는 형식)

Runlevel 4: 사용하지 않는 런 레벨

Runlevel 5: full multi user mode. 런레벨 3과 비슷한데, 그래픽 유저모드도 지원한다.

Runlevel 6: reboot. 시스템 재부팅

 

+) 현재 런 레벨 확인하는 명령어: who -r

현재 런 레벨 3인 것을 확인할 수 있다.

 

+) 런 레벨 변경 명령어: init "런 레벨 숫자" 

    ex) init 3

 

'운영체제' 카테고리의 다른 글

프로세스(Process)와 스레드(Thread)  (0) 2022.10.13
5-1 CPU Scheduling (Concepts)  (0) 2021.04.09
4 Thread  (0) 2021.04.09
3-3 IPC  (0) 2021.04.09
3-2 Process Scheduling  (0) 2021.04.05
    졍
    졍

    티스토리툴바