본문 바로가기
개인 공부/Linux (CentOS 리눅스)

CentOS 리눅스 : 리눅스의 부팅과 종료 (8장)

by 희조당 2022. 6. 17.
728x90

■ 리눅스 시스템의 부팅

 PC의 전원이 켜지는 순간부터 로그인 프롬프트가 출력될 때 까지가 리눅스의 부팅이다.

 부팅 과정은 PC 부팅리눅스 부팅으로 나뉜다.

리눅스의 부팅 과정

 - 바이오스 단계

 PC의 전원 스위치를 키면 ROM에 저장된 바이오스가 가장 먼저 동작한다.

 이 단계에서 HW 검사 → 부팅 장치 선택 → MBR 로드 → 부트 로더 로드 의 작업을 수행한다.

 

 - 부트 로더 단계

 MBR로 인해 부트 로더가 메모리에 올라가면 부팅할 운영체제를 선택할 수 있는 메뉴를 제공하고

 리눅스 커널을 메모리에 로딩한다.

 

 - 커널 초기화 단계

 부트 로더로 로딩된 커널은 메모리, 디스크, 키보드, 마우스 등에 대해 장치 검사*를 하고

 fork를 사용하지 않고 프로세스와 스레드를 생성한다. 이후 systemd 서비스를 동작한다.

장치들이 사용 가능한 상태로 유지되는지 여부

 - systemd 서비스 단계

 본격적으로 동작하는 것으로 봐도 무방한 단계. 

 데몬을 모두 실행한뒤 그래픽 로그인 시스템(GDM)을 동작시키고 로그인 프롬프트 화면을 출력

■ systemd 서비스

 systemd란? 리눅스의 시스템과 서비스 관리자로 유닉스의 init 프로세스가 하던 작업을 수행

  1. 다양한 서비스 데몬 실행

  2. 프로세스들의 상태 유지

  3. 시스템의 상태 관리

 

 - init 프로세스와 런레벨

 init 프로세스는 더 이상 사용하지 않음. (init 프로세스 → systemd)

 런레벨이란? 시스템의 상태를 7개로 정의해 현재 상태를 나타내는 한 자리 숫자 (문자 S, s 포함)

 

 - systemd 기본 개념

 init에 비해 여러가지 장점을 가지는 systemd는 '유닛'이라는 구성 요소를 사용해 전체 시스템을 관리한다.

 관리 대상의 이름은 '서비스명.유닛 종류'의 형태로 관리한다.

 유닛  기능  예
 service  시스템 서비스 유닛. 데몬을 시작·종료·재시작·로드  atd.service
 target  유닛을 그루핑  basic.target
 automount  디렉터리 계층 구조에서 자동 마운트 포인트를 관리  proc-sys-fs-binfmt_misc.automount
 device  리눅스 장치 트리에 있는 장치 관리  sys-module-fuse.device
 mount  디렉터리 계층 구조에서 마운트 포인트를 관리  boot.mount
 path  파일 시스템의 파일이나 디렉터리 등 경로를 관리 cups.path
 scope  외부에서 생성된 프로세스를 관리  init.scope
 slice  시스템 프로세스를 계층적으로 관리  system-getty.slice
 socket  소켓 관리 유닛. 소켓 스트림과 데이터그램, 큐를 지원  dbus.socket
 swap  스왑 장치 관리  dev-mapper-fedora~.swap
 timer  타이머 관련 기능 관리  dnf-makecache.timer

 

 - systemd 관련 명령

 systemctl [옵션] [명령] [유닛명] : systemd 서비스를 제어

 -a : 상태 관계 없이 유닛 전체 출력

 -t 유닛 종류 : 지정한 유닛만 출력

 -start : 시작 / stop : 정지 / reload : 설정 파일 다시 읽어오기 / restart : 재시작 / status : 상태 출력

 -enable : 부팅 시 유닛 시작 / disable : 부팅 시 유닛 시작 X

 -is-active : 동작 여부 확인 / is-enabled : 시작 여부 확인 

 -isolate : 지정 유닛과 관련된 유닛만 시작, 나머지 정지 / kill : 시그널 전송 

 

 - systemd와 런레벨

런레벨

■ 리눅스 시스템의 종료

 - shutdown 명령

 가장 정상적으로 종료하는 방법. 시스템 종료 외에 런레벨을 바꿀 때도 사용할 수 있다.

 

 shutdown [옵션] [시간] [메시지] : 리눅스를 종료

  -k : 종료 X, 메세지 전달

  -r : 재시작

  -h : 종료 및 halt 상태로 이동

  -f : 빠른 재시작

  -c : 이전에 내린 shutdown 명령 취소

 

 - 런레벨 변경 명령

 telinit 명령으로 런레벨을 0으로 변경하면 종료, 6으로 변경하면 재시작된다.

 단, systemd 기능을 사용할 때 target을 바꿔야한다.

 

 - 기타 시스템 종료 명령

 halt, poweroff, reboot 명령은 시스템 종료 기록을 남기고 종료하거나 재시작한다.

 모두 systemctl의 심볼릭 링크로 결국 systemctl을 사용하는 것과 같다.

 런레벨이 1~5일 때 내부적으로 shutdown 명령을 호출한다.

 

■ 데몬 프로세스

 데몬이란? 백그라운드에서 동작하며 특정 서비스를 제공하는 프로세스

 

 - 데몬의 동작 방식

 스스로 동작하는 독자형, 데몬을 관리하는 슈퍼데몬에 의해 동작하는 2가지 방식이 존재.

 각각 장단점이 존재 (독자형 - 자원 낭비 가능성, 슈퍼데몬 - 효율적인 자원 관리)

 

 - 슈퍼데몬

 네트워크 서비스를 제공하는 데몬만 관리

 

 - 데몬의 조상

 대부분의 데몬을 동작시키는 조상 데몬이 있다. 바로 systemd와 커널 스레드

 

 - 주요 데몬

 매우 다양한 데몬들이 존재하고, 사용자가 필요하다면 만들 수도 있다.

리눅스의 주요 데몬

■ 부트 로더

 리눅스에는 LILO와 GRUB라는 두 가지 부트 로더가 있다. CentOS에서는 GRUB를 기본으로 지원.

 

 - GRUB의 개요

 'grand unified bootloader'의 약자. 기존의 부트 로더 LILO의 단점을 보완해 설정과 사용이 쉽고, 

 멀티 부팅 기능, 부팅 시 명령 사용 가능, 윈도우 지원의 장점이 존재한다.

 

 - GRUB2 관련 디렉터리와 파일

 /boot/grub2/grub.cfg 파일은 menu.lst 대체하는 기본 설정 파일이다. 

 직접 수정할 수 없어 /etc/default/grub 파일과 /etc/grub.d 디렉터리 아래 스크립트를 수정해야 한다.

 

 /etc/grub.d 디렉터리는 GRUB 스크립트를 가지고 있다. 

 GRUB 명령 실행 시 스크립트 내용이 순서대로 실행되어 grub.cfg 파일이 생성된다.

 

 /etc/default/grub 파일에는 GRUB 메뉴 설정 내용이 저장되어 있다.

 GRUB 스크립트가 이 파일을 읽어서 grub.cfg에 기록한다.

댓글