엔터프라이즈 리눅스 05

AeZan·2023년 9월 26일
0

BIOS

Basic Input/Output System

메인 보드의 ROM 에 내장된 프로그램으로, OS 중 기본적인 S/W 이자 컴퓨터의 I/O 를 처리하는 펌웨어

컴퓨터 부팅을 하기 위해 사용하는 인터페이스

  • POST = the Power-On-Self-Test 진행 -> 하드웨어 점검
  • 메인보드에 장착된 여러 부품(CPU, RAM, SSD/HDD, 키보드 마우스 등)을 제어
  • 오류 점검
  • 부팅시 읽어들일 저장장치 순서 정하기
  • 부팅 모드 선택
  • 윈도우 부팅 후 바톤 터치

부팅 모드

  • Legacy BIOS - 2TB 이상의 대용량 HDD 에서 OS 부팅 및 최신 H/W와 OS와 통합에 한계 발생
  • UEFI

UEFI

United Extensible Firmware Interface

최신 PC용 표준 펌웨어 인터페이스
기존의 BIOS 및 EFI 를 대체하는 새로운 유틸리티

  • BIOS 에서 하드웨어 진단X -> 빠른 OS 부팅
  • 2TB 이상의 고용량 HDD 제어
  • Window 64bit 에 적합
  • 보안 부팅(부팅 코드 수정 작업 모두 차단)

*Legacy BIOS -> MBR | UEFI -> GPT

Kernel: OS 안에 위치하면서 H/W 주요 기능 컨트롤

  • 메모리 관리
  • 프로세스 관리
  • 장치 드라이버
  • 시스템 호출/보안

BIOS + MBR
MBR 파티션의 첫번째 섹터 512byte 읽어 부트 로더를 찾아서 메모리에 적재 후 제어권 전달, 부트 로더는 GRUB 관련 파일 메모리에 로드

UEFI + GPT
/dev/sda1 (/boot) 에서 부트 로더, GRUB 로드

*BIOS 는 물리적 위치를 찾아 부팅하고, UEFI는 매핑된 장치 이름 또는 UUID 로 부트 로더를 찾아 부팅함

부팅 절차

init

  1. POST 로 하드웨어 점검

  2. MBR 파티션의 첫 번째 섹터에서 부트 로더 찾고 메모리 적재 후 부트 로더에게 제어권 전달

  3. /boot/grub2/grub.cfg /etc/default/grub /etc/grub.d 에 존재하는 파일들을 메모리에 적재 후 부팅 가능한 커널 목록 화면에 출력

  4. 위 화면에서 e 선택 시 /boot/grub2/grub.cfg 파일의 내용 출력되고 설정을 변경하여 커널 실행 가능

  5. 커널 선택 후 /boot 디렉터리의 vmlinuz로 시작하는 커널 파일 메모리에 적재 후 제어권을 커널에게 전달

  6. 커널이 메모리에 적재되면 /boot 에 존재하는 initramfs 압축파일 해제 -> 램 디스크 초기화, 루트 파일 시스템 /sysroot 에 임시로 마운트

  7. initramfs 파일은 /sysroot에 압축을 해제하고 필요한 파일들을 메모리에 적재 -> init 프로세스 실행 후 제어권 init 프로세스에게 전달

  8. init 프로세스에 PID 1번 할당되고 필요한 모든 프로세스 실행

  9. /etc/initab 파일에 등록된 정보로 런 레벨이 결정, /etc/rc.d/rc.sysinit 파일을 실행하여 스왑이나 네트워크 설정 초기화

  10. /etc/initab 파일에 지정된 런 레벨 실행 후 사용자에게 로그인 화면 출력


systemd

  1. init 프로세스와 1 ~ 6 까지 동일

  2. initramfs 파일은 /sysroot에 압축을 해제하고 필요한 파일들을 메모리에 적재 -> systemd 실행하여 메모리에 적재 후 제어권 systemd 에게 전달

  3. default.target 의 유닛 파일은 multi-user.target or graphical.target 으로 연결된 심볼릭 링크 파일

  4. 어떤 target 유닛으로 부팅할지 정함

    *After 조건에 의해 graphical.target 활성화 전에 multi-user.target이 먼저 활성화 되어야함

  5. After 조건에 의해 local-fs.target -> sysinit.target -> basic.target -> multi-user.target -> grapical.target 순으로 활성화되어야 함

target 유닛 설명

local-fs.target
/etc/fstab 에 등록된 마운트 정보로 파일시스템 마운트

sysinit.target
마운트, 스왑, 커널 추가 옵션 실행하는 서비스 시작

basic.target
firewalld, microcode, SELinux, 커널 메시지와 관련된 서비스를 시작하거나 모듈 로드

multi-user.target
커맨드 라인을 제공하는 다중 사용자 모드 (= runlevel 3)

grapical.target
GUI 를 지원하는 다중 사용자 모드 (= runlevel 5)



정리하고 보니, 부팅 과정은 제어권을 넘겨주는 것 이라고 봐도 될 것 같다!

0개의 댓글