Post

[LINUX] 부팅과 종료

리눅스의 부팅

리눅스의 부트 로더 프로그램은 과거에는 LILO를 많이 사용했으나 최근에는 대부분 GNU의 GRUB2을 사용한다.

GRUB는 그래픽 인터페이스와 멀티 부팅을 지원한다.

부팅 과정

전원을 켜고 로그인 프롬프트가 나올 때까지의 과정

  1. ROM BIOS의 펌웨어가 하드웨어 검사 후 부트 로더를 적재
  2. MBR에 있는 부트 로더가 GRUB를 찾아 적재
  3. 커널 이미지와 initramfs를 로드
    • 커널 이미지: /boot/vmlinuz-<kernel-version>
    • initramfs: 부팅 과정에서 필요한 임시 파일시스템
  4. 커널이 실행됨
  5. 하드웨어를 점검하고 초기화 (디바이스 드라이버 로드)
  6. 커널이 루트(/) 파일 시스템을 마운트
  7. 커널은 /lib/systemd/systemd 프로그램을 실행시키고 systemd에게 제어권을 넘김
    • systemd 프로세스는 시스템 운영을 위한 나머지 초기화 과정을 처리
    • systemd는 부팅이 끝난 후에도 계속 수행됨

초기화 데몬

  • 전통적 init 데몬 (SystemV init 데몬)
    • 런레벨에 기초하여 순차적으로 서비스를 실행하는 방식
    • 복잡한 초기화 스크립트
    • 시간이 오래 걸림
  • Upstart init 데몬
    • 이벤트 기반으로 서비스를 실행하는 방식
    • 간단한 설정 파일
    • RHEL 7과 SUSE 및 Ubuntu 16.04에서 systemd가 Upstart init 데몬을 대체함

systemd 프로세스

  • 커널이 실행시키는 첫 번째 사용자 프로세스
  • 모든 사용자 프로세스의 최상위 조상 프로세스(PID가 1)
  • 시스템 초기화
  • 파일 시스템 마운트
  • 시스템 서비스 활성화
  • 서비스 간 의존성 해결
  • 로그인 서비스 시작
  • 시스템 상태 모니터링
  • 데몬 관리

유닛

  • systemd가 관리하는 시스템 자원이나 서비스와 같은 시스템 구성요소
  • 유닛 설정 파일에서 동작, 의존성, 실행 옵션 등을 제어

타깃과 런레벨

  • 기본 타깃(부팅 모드 또는 런레벨)을 확인 또는 변경하는 명령
  • 초기 런레벨은 0 또는 6이 되어서는 안됨

시스템 서비스의 관리

  • 과거 서비스 수행을 위한 초기화 스크립트는 서비스 유닛으로 대체됨
  • systemctl 명령을 사용하여 시스템 서비스의 상태 보기, 시작, 멈춤, 재시작, 활성화 및 비활성화 작업을 수행할 수 있음

웹 콘솔의 사용

  • 웹 브라우저를 이용해 리눅스 서버를 관리하고 모니터링하기 위한 도구
  • cockpit 패키지 설치 후, 서비스를 활성화/시작시키고, 방화벽 설정을 확인
  • 브라우저로 http://localhost:9090에 접속하고 root 사용자로 로그인

시스템 종료

  • systemctl 유틸리티가 이전 버전에서 사용된 여러 전원 관리 명령을 대체함
  • 이전 버전의 명령도 계속 사용할 수 있지만, 가급적 systemctl 명령을 사용하는 것이 좋다.
새로운 명령과거 명령설명
systemctl halfhalf시스템을 종료함
systemctl poweroffpoweroff시스템을 종료하고 전원을 끔
systemctl rebootreboot시스템을 재부팅함
systemctl suspendpm-suspend시스템을 일시 중단함
systemctl hibernatepm-hibernate시스템을 최대 절전 모드로 전환함

shutdown 명령

  • 시간을 정해 시스템을 안전하게 종료하는 명령
  • shutdown [options] time [message]
    • time 인수: 종료 시간으로 23:15는 절대 시간 형식, +10은 10분 후 종료를 의미
    • now 인수를 붙이면 즉시 종료한다.
  • shutdown 명령을 실행하면 systemd 프로세스를 통해 셧다운이 처리됨
옵션설명
-r시스템을 종료한 후 재부팅한다.
-c예약된 셧다운 명령을 취소한다.
-k실제로 종료하지는 않으며 경고 메시지만 보낸다.

시스템 종료 절차

  • systemd 프로세스는 모든 프로세스에게 종료를 알림
  • 각 프로세스가 스스로 종료하도록 TERM 시그널을 보냄
  • 종료하지 않은 프로세스에게 강제 종료를 위한 KILL 시그널을 보냄
  • 파일 시스템을 잠그고 루트 파일 시스템을 제외한 모든 파일 시스템을 언마운트함
  • 시스템 호출을 통해 커널에 재부팅 또는 종료를 요청함

데스크톱

  • GUI를 제공하는 사용자 환경
  • 대부분의 데스크톱은 X 윈도우 시스템에 기반을 둠
  • 시각적으로 다양한 스타일의 데스크톱이 존재함

GNOME

  • Red Hat 계열 리눅스의 기본 데스크톱
  • 단순함, 편의성, 안정성에 초점을 맞춤
  • 미니멀한 사용자 인터페이스가 특징

KDE

  • ‘K 데스크톱’이라고도 하며 MS 윈도우 환경과 유사
  • 다양한 프로그램을 통합적인 모습으로 보여줌
This post is licensed under CC BY 4.0 by the author.