리눅스프로그래밍

우분투 리눅스 - 부팅

헬로월드! 2020. 6. 4. 11:29

리눅스 시스템의 부팅

리눅스의 부팅은 PC전원을 켜는 순간 ~ 로그인 프롬프트가 출력될 때 까지를 말한다. 

 

전원 ON → 바이오스 단계 부트 로더 단계 커널 초기화 단계 systemd 서비스 단계 로그인 프롬프트 출력

---------pc 부팅-------------   ----------------------------------------리눅스 부팅----------------------------------------

  우분투는 15.x 버전부터 기존의 1번 프로세스인 init 를 대체한 systemd 서비스를 도입했다. 

 

1) 바이오스 단계 (BIOS : Basic Input / Output System)

  • 바이오스는 보통 ROM 에 저장되어 있어 ROM-BIOS 라고 부른다. 
  • PC 에 장착된 기본적인 하드웨어 (키보드, 디스크 등)의 상태를 확인한 후 부팅 장치를 선택하여 부팅 디스크의 첫 섹터에서 512B 를 로딩한다. (512B 를 마스터 부트 레코드 (MBR) 라고 함) 디스크의 어느 파티션에 2차 부팅 프로그램 (부트 로더)이 있는지에 대한 정보가 들어있다. 메모리에 로딩된 MBR은 부트 로더를 찾아 메모리에 로딩하는 작업까지 수행한다.
  • 전원 ON -> 하드웨어 검사-> 부팅 장치 선택 -> MBR로드-> 부트 로더 로드-> 부트 로더 단계

2) 부트 로더 단계

  • 리눅스의 대표적인 부트 로더는 GRUB(우분투 사용) 과 LILO 이다.
  • 리눅스 커널을 메모리에 로딩하는 역할 (리눅스 커널은 /boot 아래 vmlinuz-버전명 의 형태로 제공된다.
  • ls /boot/vm* 명령 실행해보기!

3) 커널 초기화 단계

  • 커널은 가장 먼저 시스템에 연결된 메모리, 디스크, 키보드, 마우스 등 장치들을 검사한다.
  • 장치 검사 등 기본적인 초기화 과정이 끝나면 커널은 fork를 사용하지 않고 생성되는 프로세스와 스레드를 생성한다.
  • 이 프로세스들은 메모리 관리 같은 커널의 여러 가지 동작을 수행한다. 
  • 이들 프로세스는 일반적인 프로세스와 구분되도록 [ ] 대괄호로 표시하며, 주로 PID가 낮게 배정된다. 

4) systemd 서비스 단계

  • 우분투에서 systemd 서비스는 기존의 init 스크립트를 대체한 것으로 다양한 서비스를 동작한다.
  • 각 서비스가 시작하는 과정은 화면에 메시지로 출력된다.
  • 부팅 후 메시지 확인 ) dmesg 명령이나 more /var/log/boot.log명령을 통해 확인 가능

5) 로그인 프롬프트 출력

  • GDM (GNOME display manager) 를 동작시키고, 로그인 프롬프트 출력!