반응형
리눅스의 시스템 부팅 과정
리눅스의 시스템 부팅 과정은 컴퓨터가 켜진 후 운영 체제가 완전히 로드되어 사용자가 시스템을 사용할 수 있는 상태에 이르기까지의 일련의 단계입니다. 이 과정은 크게 다섯 단계로 나눌 수 있습니다: BIOS/UEFI, 부트로더(bootloader), 커널 로딩, 초기 램디스크(initramfs/initrd), 그리고 시스템 초기화(System Initialization)입니다. 각 단계를 자세히 설명하면 다음과 같습니다.
1. BIOS/UEFI 단계
- BIOS(Basic Input/Output System) 또는 UEFI(Unified Extensible Firmware Interface)는 시스템이 전원을 켜면 가장 먼저 실행되는 펌웨어(firmware)입니다.
- 하드웨어 초기화 및 시스템의 기본적인 하드웨어를 검사하고, 부팅 가능한 디스크를 찾습니다.
- 부트 장치(디스크, USB 등)의 첫 번째 섹터(MBR 또는 GPT)에 있는 부트로더를 메모리로 로드하고 제어를 넘깁니다.
- 현대적인 시스템에서는 BIOS보다 유연하고 강력한 UEFI가 더 널리 사용됩니다.
2. 부트로더(bootloader) 단계
- 부트로더는 운영 체제의 커널을 로드하는 작은 프로그램입니다. 가장 널리 사용되는 부트로더로는 GRUB(Grand Unified Bootloader)가 있습니다.
- GRUB는 부팅 메뉴를 제공하며, 사용자가 부팅할 커널을 선택하거나 부트 옵션을 수정할 수 있습니다.
- GRUB는 디스크에서 커널 이미지(vmlinuz)와 초기 램디스크(initramfs 또는 initrd)를 메모리로 로드합니다.
- 이후 커널에 제어를 넘깁니다.
3. 커널 로딩(Kernel Loading) 단계
- 커널이 메모리로 로드되면 시스템의 제어권을 갖게 됩니다.
- 이 단계에서 커널은 하드웨어를 초기화하고 필요한 드라이버를 로드하며, 시스템의 핵심 기능(메모리 관리, 프로세스 관리 등)을 설정합니다.
- 장치 드라이버를 로드하고, 가상 파일 시스템을 초기화하며, 루트 파일 시스템을 마운트 할 준비를 합니다.
4. 초기 램디스크(initramfs/initrd) 단계
- initramfs 또는 initrd(initial ramdisk)는 루트 파일 시스템을 마운트하기 전에 필요한 임시 파일 시스템입니다.
- 이 단계에서는 커널이 루트 파일 시스템을 마운트 할 수 있도록 필요한 모듈과 드라이버를 제공합니다.
- 예를 들어, RAID, LVM(Logical Volume Manager), 암호화된 파일 시스템 등 특수한 설정이 있는 경우에 필요합니다.
- 커널은 이 단계에서 initramfs를 마운트하고 필요한 초기화 작업을 수행한 후, 실제 루트 파일 시스템을 마운트 합니다.
5. 시스템 초기화(System Initialization) 단계
- 루트 파일 시스템이 마운트 된 후, 커널은 첫 번째 사용자 공간 프로세스를 시작합니다. 전통적으로 이는
/sbin/init
프로세스입니다. - 현대 리눅스 배포판에서는 주로 systemd, SysVinit, 또는 Upstart와 같은 초기화 시스템이 사용됩니다.
- systemd는 가장 널리 사용되는 초기화 시스템으로, 병렬로 서비스를 시작하고 시스템을 부팅하는 데 필요한 여러 가지 작업을 수행합니다.
- 이 단계에서는 다양한 서비스(네트워킹, 디스플레이 매니저, 데이터베이스 등)를 시작하고, 시스템을 사용자에게 사용할 수 있는 상태로 만듭니다.
- 부팅이 완료되면 사용자 로그인 프롬프트 또는 그래픽 로그인 화면을 표시합니다.
정리
리눅스의 부팅 과정은 시스템의 펌웨어(BIOS/UEFI)에서 시작하여 부트로더(GRUB)로 넘어가고, 커널 로딩을 거쳐 초기 램디스크(initramfs)를 로드하며, 최종적으로 시스템 초기화 단계(systemd 등)에서 필요한 서비스를 시작하는 복잡한 일련의 과정입니다. 각 단계는 시스템이 안정적으로 운영될 수 있도록 하드웨어 초기화, 커널 로딩, 파일 시스템 마운트, 서비스 시작 등의 작업을 수행합니다.
반응형
'Linuxpia > 데스크톱 리눅스' 카테고리의 다른 글
[시스템] 업데이트 중에 발생한 문제 해결 (21) | 2024.09.20 |
---|---|
[시스템] 운영체제 자동 업데이트 (11) | 2024.09.19 |
안드로이드폰에서 사용할 수 있는 웹브라우저 (26) | 2024.09.13 |
리눅스에서 사용할 수 있는 웹브라우저 (28) | 2024.09.12 |
간단한 텍스트 에디터 비교, gedit과 xed (69) | 2024.09.04 |