728x90

리눅스의 전통적인 부팅 과정

부팅 메뉴 파일

  • /boot/grub2/grub.cfg

커널 이미지 파일

  • vmlinuz

부팅할 때 나오는 메시지

  • /var/log/boot.log

런레벨

시스템의 상태를 나타내는 값

0 halt(시스템 종료)::Run-level 을 0으로 변경하면 시스템 종료
1 Single User Mode::시스템 복원 모드::기본적으로 “관리자 권한”을 획득(주로 파일 시스템 점검, 패스워드 분실 했을 때 또는 복구 할 때 사용)
2 Multi User Mode without NFS(Network File System :: 공우 파일)(네트워크를 사용하지 않는 텍스트 유저 모드)
3 Full Multi User Mode(거의 모든 자원 사용 가능한 텍스트 유저 모드)
4 Unused(사용 X)
5 level 3와 비슷하나 x윈도우가 실행된 그래픽 유저 모드
6 Reboot(시스템 재부팅) :: Run-level을 6으로 변경하면 시스템 재부팅
  • 런 레벨은 숫자 또는 문자로 표현된 시스템의 상태
  • 런 레벨은 서비스와 사용자가 사용할 수 있는 자원들에 대해 정의하고 있음

런레벨 관련 명령어

  • who -r : 현재 및 이전 런레벨을 확인하는 명령어
  • init [런레벨] : 런 스크립트를 실행시키는 명령어

시스템 부팅 관련 명령어

  • shutdown : rc 스크립트를 실행, init 명령어와 비슷한 기능을 수행, init과는 다르게 로그인 중인 모든 사용자에게 종료 시기를 알려준다.
  • shutdown -r : 재부팅
  • shutdown -h : 종료
  • shutdown -t : 시간 지정
  • halt, poweroff : rc0 스크립트들을 실행하지 않으므로 해당 프로세스가 있으면 문제가 발생할 수도 있다.
  • reboot : 기본적으로 시스템을 런레벨 3으로 설정하면서 시스템을 즉시 종료시킨다. rc0 스크립트들을 실행하지 않으므로 해당 프로세스가 있으면 문제가 발생할 수도 있다.

systemd

  • 리눅스를 부팅하면 커널이 가장 먼저 실행시키는 프로세스
  • 기존의 리눅스는 가장 먼저 init 프로세스를 실행하고 init 프로세스가 필요한 다른 프로세스를 실행
  • 기존의 init 프로세스는 단계적으로 런 레벨을 올려가며 해당 런 레벨의 rc스크립트를 차례대로 실행
  • 하지만 init은 아주 오래전 리눅스에서부터 사용하던 아주 오래된 프로세스였고 이에 계속해서 기능이 추가되면서 프로그램들이 복잡해지다 보니 효율 또한 떨어지게 됐다.
  • 이에 systemd는 init의 단점을 보안하며 기존 리눅스의 의존성을 해치지 않도록 개발되었다.
  • systemd는 가능한 한 병렬로 시작 프로그램들을 실행시키는 것만으로 부팅 속도를 끌어올리고, 프로그램 실행을 위한 파일로는 쉘 스크립트가 아니라 service라는 systemd 만의 unit을 통해 체계적이면서 가독성이 좋도록 계발되었다.
  • systemd는 단지 init 뿐만 아니라 다른 프로그램들의 기능마저 대체
  • 네임서버 주소를 설정하는 resolv.conf의 자리를 systemd-resolved가 대체, DHCP 서버에서 IP를 받아와서 네트워크 인터페이스에 설정하는 dhcpcd의 자리를 systemd-network가 대체
  • systemd는 전체 시스템을 시작하고 관리하는 데 유닛이라 부르는 구성 요소를 사용
  • systemd는 관리 대상의 이름을 ‘서비스 이름, 유닛 종류'의 형태로 관리
  • 유닛은 같은 이름과 종류로 구성된 설정 파일과 동일한 이름을 사용

유닛 기능 예

service 데몬의 시작, 종료, 재시작 담당 atd.service
socket 소켓을 관리하는 유닛 dbus.socket
device 리눅스의 여러 장치들을 관리 dev-sda.device
mount 마운트 포인트 관리 boot.mount
automount 자동 마운트 포인트 관리 proc-sys-fs-binfmt_misc.automount

systemd를 제어하는 명령어

systemctl [옵션] [명령] [유닛 이름]

옵션

  • -a : 상태와 관계없이 유닛 전체를 출력한다.
  • -t [유닛의 종류] : 지정한 종류의 유닛만 출력한다.

명령

  • start : 유닛을 실행한다.
  • stop : 유닛을 정지한다.
  • reload : 유닛의 설정 파일을 다시 읽어온다.
  • restart : 유닛을 재시작한다.
  • status : 유닛의 현재 상태를 확인한다.
  • enable : 부팅 시 유닛을 자동으로 시작되도록 설정한다.
  • disable : 부팅 시 유닛이 자동으로 시작되지 않도록 설정한다.
728x90

+ Recent posts