본문 바로가기
프로그래밍/Linux

[Linux] 리눅스 운영체제의 부팅 과정(systemd)

by HI_Ai 2023. 9. 1.
반응형

1. 운영체제의 부팅 과정

 

BIOS (Basic Input/Output System):

컴퓨터가 전원을 켜면 제일 먼저 실행되는 펌웨어입니다.
하드웨어를 초기화하고, 부트 가능한 장치(예: HDD, SSD, USB 드라이브 등)를 검색합니다.
설정된 부팅 순서에 따라 제일 먼저 부팅 가능한 장치를 찾아 해당 장치의 MBR로 이동합니다.

 

MBR (Master Boot Record):

하드 디스크의 첫 섹터(512 바이트)에 위치합니다.
주요 부트 로더의 위치와 파티션 테이블 정보를 포함하고 있습니다.
BIOS가 MBR을 메모리에 로드하고 실행시킵니다.
MBR은 자신에 포함된 부트 로더 코드나 다른 위치에 있는 부트 로더(GRUB 등)를 실행시킵니다.

 

GRUB (GRand Unified Bootloader)

현대의 대부분의 Linux 배포판에서 사용되는 기본 부트 로더입니다.
사용자에게 여러 운영체제나 커널 버전 중에서 부팅할 선택지를 제공할 수 있습니다.
선택된 항목에 따라 해당 운영체제의 커널을 메모리로 로드합니다.

 

Kernel

GRUB에 의해 메모리로 로드된 커널이 실행됩니다.
커널은 하드웨어를 초기화하고, 필요한 드라이버를 로드하며, 프로세스 관리, 메모리 관리 등의 핵심 시스템 기능을 수행합니다. 커널 초기화 후 init 프로세스를 실행시킵니다.

 

Init

시스템의 첫 번째 프로세스(PID 1)로, 모든 다른 프로세스의 부모입니다.
전통적인 SysV init나 더 최근의 systemd와 같은 다양한 init 시스템이 있습니다.
init는 시스템의 다른 서비스나 데몬을 시작하는 역할을 합니다.

 

Runlevel

SysV init에서 사용되는 개념으로, 시스템의 동작 모드를 나타냅니다.
각 런레벨은 다른 서비스와 프로세스들을 시작하는데 사용됩니다. 예를 들어, GUI를 시작하지 않는 런레벨, 멀티유저 모드, 싱글 유저 모드 등이 있습니다.
최근의 시스템에서는 systemd와 같은 대체 시스템이 많이 사용되어, 전통적인 런레벨 개념이 점차 희석되고 있습니다.


이러한 과정을 거쳐서 최종적으로 운영체제가 완전히 부팅되며, 사용자는 시스템을 사용할 수 있게 됩니다.

 


2. systemd

 

systemd는 Linux 운영체제에서 사용되는 초기화 시스템 및 시스템 및 서비스 매니저입니다. 전통적인 SysVinit 시스템의 대안으로 개발되었으며, 현재 많은 주요 Linux 배포판에서 기본 초기화 시스템으로 사용되고 있습니다.

 

빠른 부팅

systemd는 서비스를 병렬로 시작하여 부팅 시간을 줄일 수 있습니다.
또한, 서비스 간의 의존성을 명확히 정의하므로 필요한 순서대로 서비스가 시작됩니다.

 

systemctl

systemd의 주요 명령어 도구로, 서비스의 상태를 확인하거나 제어할 수 있습니다.
예: systemctl start [service-name], systemctl status [service-name] 등

 

Unit 파일

systemd의 설정 파일로서, 서비스, 소켓, 장치, 마운트 포인트, 타이머 등의 동작을 정의합니다.
/etc/systemd/system/ 및 /lib/systemd/system/ 디렉토리에 위치합니다.

 

타겟

systemd의 '런레벨'에 해당하는 개념으로, 특정 시스템 상태나 모드를 나타냅니다.
예: multi-user.target (멀티 유저 모드), graphical.target (그래픽 사용자 인터페이스 모드) 등

 

journald

systemd에 포함된 로깅 시스템으로, 시스템의 로그를 관리합니다. journalctl 명령어를 사용하여 로그를 조회할 수 있습니다.

 

 

systemd는 단순한 초기화 시스템을 넘어, 타이머, 소켓 활성화, cgroup 관리, 로그 관리 등 많은 기능을 포함하고 있습니다.
마지막으로, systemd는 그 특징과 기능 때문에 찬반 논란이 있는 주제 중 하나입니다. 일부 사용자와 개발자는 systemd의 통합된 접근 방식과 복잡성을 비판하며, 다른 전통적인 초기화 시스템을 선호하기도 합니다. 그러나 많은 주요 Linux 배포판에서는 효율성, 빠른 부팅 시간, 확장성 등의 이점을 인정하여 systemd를 기본 초기화 시스템으로 채택하고 있습니다.

반응형