2024.06.10 - [Computer Science/OS, System] - [System] Linux 시스템 부팅 과정 - 1

 

[System] Linux 시스템 부팅 과정 - 1

시스템 보안을 알아보던 중, Linux 시스템의 부팅과정이 어떻게 이루어지는지 알 필요가 있고 자주 망각하기 때문에 정리하려고 글을 쓰려한다.Desktop에 Ubuntu를 설치해놨으니 부팅과정이 어떻게

developepe.tistory.com

 

이전에 진행했던 글을 이어서 작성하겠습니다.

Linux Booting Process

Kernel

커널은 하드웨어 자원을 관리하고, 하드웨어와 소프트웨어 간 상호작용을 제어하는 운영체제의 핵심 컴포넌트

(말을 어렵게 설명하게 되었는데, 쉽게말하면 HW와 SW간 출입국 사무소 라고 보면 될 것 같다.)

 

Initrd 이미지가 작업을 완료한 후, 커널이 제어권을 인계받는다. 그리고 시스템 하드웨어를 초기화 하고, RootFS를 마운트 하며, 사용자 공간 초기화 과정을 시작한다.

(커널은 initrd가 제공하는 정보를 사용하여 부팅 매개변수에 지정된 실제 RootFS을 마운트 한다.)

 

RootFS

Root File System은 파일 시스템의 최상위 디렉토리 계층이며, 필수 시스템 파일 및 디렉터리를 포함하고 있다. 

(터미널에서 cd / 를 치면 나오는 디렉토리가 최상위 계층이다. 필수 시스템 파일은 /bin, /etc, /sbin, /lib 등의 중요한 디렉토리인데, 왠만하면 삭제하지 않는 것이 좋다.. Windows에서 System32 파일을 삭제하는 것과 비슷하다고 보면된다..)

 

RootFS는 전체 파일 시스템 계층 구조의 시작점이다. 부팅 과정에서 커널에 의해 마운트되며, 모든 다른 파일 시스템은 루트 파일 시스템의 하위 디렉터리로 마운트 된다. 

 

루트 파일 시스템은 여러가지 유형이 있는데 ext4, XFS 또는 여러가지 파일 시스템이 존재한다. 어떤 것을 선택할지는 시스템 관리자의 선호도에 따라 다르다.

 

특히 RAID 또는 LVM 구성과 같은 복잡한 스토리지 시나리오에서는 초기 RAM 디스크(initramfs)가 사용될 수 있다. Initramfs는 커널이 루트 파일 시스템을 초기화 하고 마운트하는데 필요한 모듈과 제공한다.

 

InitProcess

커널이 로드되고 초기화된 후, 커널은 제어권을 init 프로세스에 넘긴다.

InitProcess는 시스템을 초기화하고 다양한 시스템 서비스 및 사용자 공간 프로세스를 시작한다.

(쉽게 말하면 커널이 로드되고 필수 프로세스를 로드하는 프로세스. 내가 알기론 모든 Linux 프로세스의 부모 프로세스로 알고 있다.)

 

InitProcess를 통해 시스템 서비스와 Daemon을 시작하는 역할을 한다. 이러한 서비스는 네트워킹, 로깅, 하드웨어 관련 서비스 등 운영체제에 필수적인 기능을 제공한다.

 

 

System Daemon

시스템 데몬은 백그라운 프로세스 또는 서비스라고 불리며, 유닉스 계열 운영체제의 부팅 과정 및 지속적인 운영에서 중요한 역할을 한다.

 

데몬은 백그라운드에서 실행되며 시스템과 사용자에게 필수적인 서비스를 제공하는 프로그램이다.

(우리가 UI를 통해 상호작용하는 과정은 눈에 보이지않는 프로세스가 열심히 일해서 가능한 일..)

 

데몬은 사용자 상호작용과 독립적으로 실행되는 백그라운드 프로세스이다. 데몬은 하드웨어 관리, 시스템 이벤트처리, 네트워크 서비스 제공 등 특정 작업을 수행한다.

(화면에 보이는 UI도 사실 데몬이 수행하는 것이다!)

 

부팅 과정동안, init 도는 systemd 프로세스는 시스템 데몬을 시작하는 책임이 있다.

init의 경우 특정 런타임 레벨에서, systemd 유닛 파일에 정의된 대로 자동으로 시작되도록 구성된다.

 

데몬은 일반적으로 시스템 시작의 일부로 init 또는 systemd 프로세스에 의해 초기화된다. 초기화 과정에는 구성 파일읽기, 통신 채널설정 및 리소스 할당등이 포함된다.

 

시스템 데몬이 초기화 된 후, 시스템은 사용자와 상호작용을 할 준비가 된다. 이 상태가 우리가 마우스로 폴더든, 디렉토리든, 아이콘을 클릭해도 되는 상태이다..!

 

 

요즘 좋은 컴퓨터의 전원을 켜면 거의 4~5초 안에 컴퓨터가 "팟!" 하고 켜지는데, 4~5초의 시간동안 몇 십만줄의 코드가 실행되고 상호작용이 일어나는 걸 보니, 감회가 새롭기도 한 것 같다..ㅋㅋ

 

참고 자료: https://www.freecodecamp.org/news/linux-boot-process-in-rhel/