리눅스의 시작과 종료

  • 학습 개요
    운영체제의 부팅 절차를 이애하고 리눅스 시스템의 부팅 과정을 알아보자.
    업스타트 init 데몬의 기능과 수행 과정 및 런레벨에 따른 서비스 실행 과정을 알아보자.
    시스템의 부팅과 종료, 런레벨에 따른 서비스의 활성화 여부, 서비스 데본을 수동으로 시작하거나 종료하기 위한 관리자 명령을 알아보자.
  • 학습 목표
    1. 일반적인 운영체제의 부팅 과정을 설명할 수 있다.
    2. 초기화 데몬의 실행과 런레벨을 설명할 수 있다.
    3. 부팅 시 서비스의 활성화와 운영 중 서비스의 시작/종료 방법을 설명할 수 있다.
    4. 리눅스의 재부팅과 종료 방법을 설명할 수 있다.

운영체제의 부팅

부팅 과정

전원은 켜고 로그인 프롬프트가 나올때 까지 과정.
(BIOS 기반 X86 시스템과 MBR(Master Boot Record)방식의 컴퓨터를 가정함)

  • ROM BIOS의 펌웨어가 실행됨
    • 하드웨어 검사 후, 부트 로더를 적재
  • MBR에 있는 부트 로더가 실행 됨
    • 파티션 테이블을 조사하여 부팅 가능한 파티션을 찾음
    • 리눅스의 부트로더인 GRUB을 찾아 적재함
    • GRUB은 그래픽 인터페이스와 멀티 부팅을 지원함
  • 커널 이미지와 initramfs를 로드
    • 커널 이미지는 /boot/vnlinux-
    • initramfs는 부팅과정에서 필요한 임시 램 파일 시스템
  • 커널의 실행
    • 하드웨어를 점검하고 초기화함
      • 메모리, 프로세서, 저장장치, 주변장치 등
      • 디바이스를 찾고 디바이스 드라이버를 로드함
    • 루트 / 파일 시스템을 마운트하고 검사함
    • 커널은 /sbin/init 프로그램을 실생시키고 제어를 넘김
      • init 프로세스는(pid=1) 시스템 운영을 위한 나머지 초기화 과정을
      • init은 부팅이 끝난 후에도 계속 수행됨

(이미지로 한번 더 정리해야 할 듯 하다)

초기화 데몬

전통적 init 데몬

  • System V init 데몬이라고 함.
  • 런레벨 (runlevel)에 기초하여 순차적으로 서비스를 실행하는 방식
    • 런레벨에 따라 실행/중단 되어야 하는 서비스가 정해짐
  • 시간이 오래 걸리며, 복잡한 초기화 스크립트로 인해 새로운 하드웨어나 서비스의 등장에 효율적인 대처가 어려움
    • 안드로이드등 소형 기기에 linux를 사용하면서 불편함이 생기게 됨.

업스타트 init 데몬systemd 데몬

  • 이벤트 기반으로 서비스를 실행하는 방식
  • 복잡한 스크립트가 간단한 설정 파일들로 대체됨
  • Upstart는 Ubuntu에서 개발 되어 2006년에 포함되었고 RHEL에서 채택됨
  • systemd 데몬은 2011년 Fedora에서 채택되었음
  • RHEL7과 SUSE, Ubuntu 16에서 systemd가 Upstart를 대체함

init 프로세스

  • 업스타트는 /sbin/init 데몬으로 구현됨
  • 모든 사용자 프로세스의 최상위 조상 프로세스 (PID-1)
    • ps -e, ps ax 명령으로 확인 가능
  • 나머지 부팅 과정, 시스템 초기화 작업을 실행함
    • 사용자 환경을 준비함. 시스템 운영을 위한 서비스 프로그램의 실행 등
  • 계속 수행되며 시스템 운영을 관리하고 셧다운을 처리함
    • 사용자 프로세스의 정리, 로그아웃 후 로그인 서비스의 제공등을 함
  • /etc/init/ 디렉토리에 있는 'job 설정파일'을 읽음
    • job 설청 파일의 확장자는 .conf
    • init 데몬이 실행하는 job(실행 파일 || 셸 스크립트)이 정의 되어 있음
      • 이벤트가 발생할 때 상응하는 job을 시작하거나 중지시킴
  • '전통적 init 데몬'에서는 /etc/inittab 파일을 환경 설정 파일로 사용했음
    • 현재는 초기 런레벨을 설정하는 용도로만 사용됨
    • 이 파일에 업스타트 초기화 과정을 설명하는 내용이 있음
  • initctl 명령
    • job의 상태를 확인하거나 수동으로 시작/중지 시키는 명령
    • initctl command job
    • initctl list는 모든 job의 상태를 보여줌. (list 외에는 사용할 일이 없을것이다.)
    • initctl start job 또는 init stop job을 사용할 수 있음

환경 설정 파일과 스크립트

'upstart init deamon'은 기존 방식과 호환되도록 설계됨.

  • /etc/init/rcS.conf
    • 부팅 시 한번 실행되며 시스템 초기화와 관련이 있는 내용이 설정 되어 있음.
    • 주요 작엄은 초기 런레벨을 읽고 /etc/rc.d/tc.sysinit 스크립트를 실행하는 것.
    • 호스트명 설정, 시스템 점검, 파일 시스템의 마운팅, LVM 장치 활성화, 쿼터 설정 등
      서버가 작업을 실행하는 데 필요한 모든 작업을 수행함
  • /etc/init/rc.conf
    • 부팅되거나 런레벨이 바뀔 때 필요한 서비스를 시작시키거나 필요 없는 서비스를 중단시키기 위해 스크립트를 실행함.
    • 주요 작업은 /etc/rc.d/rc runlevel을 실행하는 것
  • /etc/inittab
    • 부팅 시 정해지는 초기 런레벨이 정의된 파일
    • '업스타트 init 데몬'을 사용하는 경우 초기 런레벨 외의 다른 설정은 의미가 없음
  • etc/rc.d/rc.local
    • 결과적으로 런레벨 2, 3, 5에서 가장 마지막에 실행되는 스크립트

init 프로세스와 런레벨

  • 초기 런레벨은 /etx/inittab 파일에서 id:5:initdefault:와 같이 설정 되어 있다.
  • 런레벨이 5로 부팅 되는 겨웅
    • /etc/rc.d/rc5.d/ 디렉토리에 존재하는 스크립트 파일이 실행됨
    • K로 시작하는 스크립트는 해당 서비스의 종료를 위한 것.
    • S로 시작하는 스크립트는 해당 서비스의 시작을 위한 것.
    • 이런한 파일은 /etc/tc.d/init.d/ 디렉토리에 돈대하는 실제 스크립트 파일에 대한 심벌릭 링크임
  • 런레벨 2,3,5에서 가장 마지막에 실행되는 스크립트는 S99local 이 가리키는 /etx/rc.d/rc.local
    • 관리자가 원하는 특별한 초기화 작업을 추가할 수 있음.

런레벨

  • 0 : 시스템이 종료될 때 사용되는 레벨로 기본값으로 설정해서는 안됨.
  • 1 : 단일 사용자 모드로, 로그인 과정 없이 root 사용자로 로그인 되며 콘솔에서 시스템 점검이나 복구를 위한 관리자 모드로 사용됨.
    명령 행 인터페이스가 제공되며 네트워크 서비스는 제공되지 않음
  • 2 : 기본적으로 네트워크 서비스를 제공하지 않는 다중 사용자 모드
  • 3 : 모든 네트워킹을 지원하는 다중 사용자 모드.
    리눅스 초기 시절에 보편적으로 사용되었던 레벨. CLI만 지원함
  • 4 : 사용하지 않음
  • 5 : 그래픽 사용자 환경을 제공하는 다중 사용자 모드 최근 배포판은 기본으로 설정됨
  • 6 : 시스템을 재부팅할 때 사용되는 레벨로 기본값으로 설정해서는 안 됨

telinit

  • 런레벨을 바꾸는 관리자 명령
  • telinit runlevel
    • telinit 3은 런레벨을 변경하며 텍스트 모드만 지원함.
    • telinit 0 -> 종료, telinit 6 -> 재부팅
  • runlevel
    • 이전 런레벨과 현재 런레벨을 확인하는 명령

chkconfig

부팅 시 런레벨에 따른 시스템 서비스의 활성화 여부를 확인하거나 변경하는 명령

  • chkconfig [--list] [service]

    • chkconfig --list는 각 런레벨에서 모든 서비스의 활성화 여부를 알려줌

    •   [ec2-user@ip-172-31-45-8 etc]$ chkconfig
      
        Note: This output shows SysV services only and does not include native
              systemd services. SysV configuration data might be overridden by native
              systemd configuration.
      
              If you want to list systemd services use 'systemctl list-unit-files'.
              To see services enabled on particular target use
              'systemctl list-dependencies [target]'.
      
        netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
        network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
        [ec2-user@ip-172-31-45-8 etc]$
    • chkconfig [--list levels] service <on|off>

      • 특정 런레벨에서 서비스의 활성화 여부를 지정
      • chkconfig --level 345 httpd on은 런레벨 3,4,5에서 httpd 서비스를 활성화 시킴

service 명령

시스템 운영 중에 /etc/rc.d/init.d/ 디렉토리에 존재하는 초기화 스크립트를 수동으로 실행 또는 중지 시키는 관리자 명령

  • service script command
    • service httpd start는 httpd를 시작 시킴
    • /etc/rc.d/init.d/httpd start도 같음
    • command는 start, stop, restart, reload, status 중 하나
  • service --status-all
    • 모든 초기화 스크립트의 상태를 출력함
  • 데스크톱 메뉴에서 '시스템>관리>서비스'를 실행하면 나오는 '서비스 설정 창'에서 서비스의 초기 설정(활성화 여부)과 실행의 시작/중지를 시킬 수 있음.

시스템 종료

개인 사용자의 로그아웃

  • 계정의 사용을 마치고 빠져 나오는 것
  • 데스크톱 환경에서 '시스템 > 로그아웃'
  • 로그인 셸에서 logout 또는 exit 명령

시스템의 종료

  • 관리자가 시스템을 안전하게 셧다운 하는 것
    • 접속중인 사용자에게 시스템의 종료를 알림
    • 사용자의 로그인을 차단하고 종료함
  • 데스크톱 환경에서 '시스템 > 끄기 > ...'
    • '다시 시작', '취소', '끄기'

shutdown

  • 시간을 정해 시스템을 종료하는 명령
  • shutdown [options] time [message]
  • option
    • -r : 재부팅
    • -c : 셧다운 취소
    • -k : 경고 메세지만 보냄
    • shutdown -r +10
  • time
    • 종료시간으로 절대시간(24시간 포멧의) 형식, +10은 10분 후
    • now는 즉시
    • shutdown -h now

시스템의 종료 절차

  • 실제 init 프로세스를 통해 런레벨을 바꾸어 셧다운이 처리됨
    • init 프로세스는 모든 프로세스에게 종료를 알림
    • 각 프로세스가 스스로 종료하도록 TERM 시그널을 보냄
    • 종료하지 않은 프로세스에게 강제 종료를 위한 KILL 시그널을 보냄
    • 시스템 파일을 잠그고 파일 시스템을 언마운트 함
    • 버퍼에 있는 데이터를 파일 시스템에 기록함 (sync)
    • 시스템 호출을 통해 커널에 재부팅 또는 종료를 요청함
  • -h 또는 -r 옵션을 사용하지 않으면 단일 사용자 모드로 부팅됨.
  • 종료를 위해 halt 명령을, 재부팅을 위해 reboot 명령을 사용할 수 있음

데스크톱

데스트톱 환견

  • GUI를 제공하는 사용자 환경
    • 그래픽 윈도우, 아이콘, 툴바 ,메뉴, 위젯 등을 마우스나 키보드로 조작
  • 대부분의 데스크톱은 X윈도우 시스템에 기반
  • 시각적으로 다양한 스타일의 데스크톱이 존재함
    • 일반적으로 서버로 사용하는 리눅스는 CLI만 제공한다.

GNOME

Red Hat 계열의 리눅스에서 기본 GUI

  • 단순함, 편의성, 안정성에 초점
    • 기본적으로 상단에 메뉴, 하단에 패널이 있음
    • 오른쪽 하단에서 2개의 작업 공간을 선택할 수 있음(가상윈도우)
  • 터미널 창에서 gnome-control-center&을 실행하면 제어판이 나옴

KDE

K 데스트톱이라고 하며 MS Windows와 비슷

  • 다양한 프로그램을 통합적인 모습으로 보여줌
  • yum -y groupinstall 'KDE 데스크탑'으로 설치 한다고?
  • 로그인 할때 GNOME || KDE 선택 가능함.
728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Linux] vi 사용 텍스트 편집  (0) 2020.10.25
[Linux] 사용자 관리  (0) 2020.10.25
[Linux] 파일과 디렉토리  (0) 2020.10.24
[Linux] Shell 사용하기  (0) 2020.10.16
[Linux] 리눅스 설치준비 및 표준 디렉토리  (0) 2020.10.16

+ Recent posts