본문 바로가기
OS/Linux Server

[Linux] 01. 운영체제의 구조와 특징

by Haengsin 2022. 5. 23.
운영체제 또는 오퍼레이팅 시스템(OS)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시슽메 서비스를 제공하는 시스템 소프트웨어.

- 프로세스 관리.

- 사용자에게 멀티테스킹 환경 제공.

 

 

1. 운영체제의 부팅 과정

(1) BIOS

- Health Check

- 시스템에 전원이 공급되면 가장 먼저 메인보드의 ROM-BIOS에서 BIOS 프로그램을 자동 실행하여 시스템 제어권을 가지고 장착된 H/W에 대한 기본적인 점검과 인식을 한다. 이 과정이 모두 끝나고 나면 ROB-BIOS는 하드디스크의 첫 번째 부트섹트인 MBR에 있는 부트로더에게 그 제어권을 넘겨준다.

- POST(Power On Self Test)

  > CPU, Memory, Graphic Card, Key-board, Mouse 등 각종 장치의 이상 유무를 검사하고 하드웨어들을 초기화.

 

(2) MBR

- 소프트웨어 부팅 과정 실행

- 부팅할 디바이스 선택.

 

(3) GRUB or GRUB2

- Bootloader 라는 부분의 별도 소프트웨어를 읽어서 어느 영역으로 부팅을 해줄 것인지를 선택. (멀티 스테이지 부트)

- GRUB(or GRUB2)은 커널 이미지(vmlinuz kernel image)를 로드하고 initrd(Ram Disk Init) 이미지를 실행시키며 시스템 제어권을 kernel에게 넘겨준다.

 

(4) Kernel

- 각종 H/W 디바이스들을 초기화

- 운영체제가 시작.

- grub.cfg 에서 "root=" 로 표기된 루트 파일 시스템을 마운트하고, /sbin/init 프로그램(혹은 systemd)을 실행한다.

- /sbin/init 프로그램(혹은 systemd)은 리눅스가 부팅된 후 최초로 실행되는 프로세스로써 PID가 자동으로 1번이 지정된다.

- 이는, 리눅스를 시작하고 종료시키는 모든 과정을 통제한다.

 

(5) Init / Systemd

- 운영체제의 핵심 기능이 메모리에 올라가게되면, 그 다음에 시스템에 필요한 여러가지 응용 소프트웨어가 Init이라는 프로세스로부터 시작.

- 시스템 초기화 및 관리 설정 파일들을 실행한다.

- /etc/inittab 파일을 참조하여 설정된 Runlevel을 확인할 수 있다.

   (runlevel 목록)

   0 - 시스템 종료

   1 - 싱글 유저 모드 (안전모드)

   싱글 유저 모드 부팅 실패 시, 로그인 분실 시 사용

   2 - 네트워크 기능이 없는 다중 사용자 모드

   3 - 네트워크 기능이 있는 다중 사용자 모드

   4 - 사용하지 않음 (Unused)

   5 - GUI환경으로 부팅 ( X-Windows )

   6 - 시스템 재부팅

 

 

 

※ 리눅스 배포판과 무관하게 모든 리눅스 계열 공통 부팅 과정이다.

 

 

2. CentOS 부트로더(BootLoader) // GRUB(GRand Unified Bootloader)

부트로더란 리눅스가 부팅되기까지 부팅의 전과정을 진행하는 부팅 전문프로그램을 의미한다.

 

Debian GNU/Linux
CentOS GRUB

- GRUB 초기화면에서 "c" 입력 -> GRUB(Command-line) 모드로 진입

  > bash쉘에서 사용했던 명령어와 거의 유사 형태의 명령어들을 사용 가능.

- GRUB 초기화면에서 "e" 입력 -> 부팅메뉴 편집 모드로 진입

  > 리눅스 시스템의 root 패스워드를 잃어버리는 등 정상적인 부팅이 되지 않아 불가피하게 싱글모드로 부팅을 해야하    는 경우가 종종 있다. 

 

(grub 버전 확인)

$ rpm -qa | grep grub

 

/boot/grub

- grub.cfg <- /etc/grub.d/* 내용들과 /etc/default/grub 을 통해 생성.

  > grub.cfg가 생성될 때 GRUB 메뉴 설정 세팅들이 /etc/default/grub 로부터 불러들여진다.

- 대부분 운영 체제의 커널을 불러올 수 있으며, 인자를 넘겨줄 수도 있다.

- 사용자 정의 부팅 기능.

- 파일 시스템 직접 접근 기능.

 

GRUB 패키지를 설치한 다음에는 grub-install 이라는 명령어로 GRUB 관련 파일을 설치할 수 있다.

grub-intsall 명령어는 /boot/grub/menu.lst 파일의 설정 내용을 부트디바이스의 MBR에 GRUB를 설치하는 명령어.

 

 

3. 운영체제의 부팅 프로세스 - 파일시스템 마운트

/etc/fstab

- 리눅스 운영체제가 부팅 과정을 거치면서 파일시스템 마운트 정보들이 담긴 파일의 위치.

 

 

4. Init vs Systemd

 

Ubuntu, init 와 systemd 비교

 

 

5. 운영체제의 부팅 프로세스

CentOS

※ 같은 역할을 하는 스크립트의 경우 init 명령어 보다는 systemd 명령어를 사용하는 것을 권장(systemctl).

※ CentOS7 버전에서는 init 프로세스가 사라지고, systemd가 모든 프로세스를 관리한다.

 

 

6. 파일시스템 및 디렉토리 구조