PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Chapter 06. 프로세스관리하기

PowerPoint 프레젠테이션

Solaris Express Developer Edition

리눅스 프로세스 관리

Microsoft PowerPoint - 리눅스부팅과정.pptx

GNU/Linux 1, GNU/Linux MS-DOS LOADLIN DOS-MBR LILO DOS-MBR LILO... 6

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

휠세미나3 ver0.4

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

PowerPoint 프레젠테이션

Copyright 2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A..,,. Sun. Sun. Berkeley BSD. UNIX X/Open Company, Ltd.. Sun, Su

PowerPoint 프레젠테이션

DE1-SoC Board

Remote UI Guide

6주차.key

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

작성자 : saint Overview BackTrack 는 LILO 를부트로더로사용한다. BactTrack 을기본환경설정그대로설치하면부팅할수없는경우가있는데, 이것은실린더크기가 1024 보다큰하드디스크에설치하면 LILO 가 OS 를정상적으로읽어올수없기때문이다. 요즘나오는

05Àå

untitled

PowerPoint 프레젠테이션

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBABFCD20BBE7BFEBC0DA20B8EDB7C920C0CDC8F7B1E22E >

chapter4

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

OnTuneV3_Agent_Install

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

PowerPoint 프레젠테이션

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

K7VT2_QIG_v3

00 SPH-V6900_....

untitled

Smart Power Scope Release Informations.pages

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Sena Technologies, Inc. HelloDevice Super 1.1.0

Microsoft PowerPoint - ch07.ppt

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

PCServerMgmt7

PowerPoint 프레젠테이션

Microsoft PowerPoint - IRC_User_Manual.ppt

R50_51_kor_ch1

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

Sun Java System Messaging Server 63 64

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

4. SELinux 상태확인 ( 상세 ) # sestatus v SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy

강의10

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - comp_prac_081223_2.pptx


Chapter 1

USB 케이블만을이용한리눅스 NFS 개발환경 (VirtualBox) 최초작성 : 2010 년 10 월 21 일 작성자 : 김정현 수정내용 최초작성 by 김정현 스크립트추가, 설명보충 by 유형목 1. VritualBox

RVC Robot Vaccum Cleaner

PRO1_04E [읽기 전용]

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

4. 스위치재부팅을실시한다. ( 만약, Save 질문이나오면 'no' 를실시한다.) SWx#reload System configuration has been modified. Save? [yes/no]: no Proceed with reload? [confirm] (

PowerPoint 프레젠테이션

인켈(국문)pdf.pdf

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

I 안전 지침 다음 안전 지침을 이용해 사용자 자신과 북톱(Booktop)를 보호하십 시오. M1022 북톱(Booktop) 컴퓨터를 사용할 때 주의: 휴대용 컴퓨터를 신체 위에 직접 올려놓고 장시간 동 안 사용하지 마십시오. 장시간 작동으로 인해 컴퓨터 밑부 분에서

Microsoft Word - Automap3

MySQL-Ch10

PowerPoint 프레젠테이션

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,,,,,,,,,,,,,.,..., U.S. GOVERNMENT END USERS. Oracle programs, including any operat

10X56_NWG_KOR.indd

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft Word - PLC제어응용-2차시.doc

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University


CD 무결성체크는 SKIP 을해도좋습니다. Next 버튼을누릅니다. Next 버튼을누릅니다.

Mango220 Android How to compile and Transfer image to Target

0125_ 워크샵 발표자료_완성.key

LG-LU6200_ICS_UG_V1.0_ indd

Microsoft Word - Armjtag_문서1.doc

(SW3704) Gingerbread Source Build & Working Guide

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

1 Live CD(USB) 란? 1.1 Live CD(USB) 란? LiveCD(USB) 란 CD( 또는 USB) 를하드디스크로인식하여해당매체를기반으로동작하는운영체제를말한다. 즉 CD에설치된운영체제이다. 이는자신의 PC의하드디스크에설치된내용은 CD에그대로복사하였다고생각

문서 대제목

PowerPoint Presentation

Chapter 05. 파일접근권한관리하기

Adobe Flash 취약점 분석 (CVE )

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기

PowerPoint 프레젠테이션

Microsoft PowerPoint - unix02.ppt [호환 모드]

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

LN_5_Rootfs

PRO1_02E [읽기 전용]

01장

vm-웨어-01장

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

MAX+plus II Getting Started - 무작정따라하기

고급 프로그래밍 설계

Transcription:

Chapter 08. 리눅스의부팅과종료

00. 개요 01. 리눅스시스템의부팅 02. systemd 서비스 03. 리눅스시스템의종료 04. 데몬프로세스 05. 부트로더

리눅스시스템의부팅과정을이해하고부트로더의역할을설명할수있다. systemd 프로세스의역할을설명할수있다. systemd의유닛을설명할수있다. systemctl 명령으로유닛을시작 종료하고상태를확인할수있다. 런레벨이무엇인지설명하고런레벨을변경할수있다. 리눅스시스템을종료할수있다. 데몬을이해하고슈퍼데몬의역할을설명할수있다. 단일사용자모드로부팅할수있다. root 계정의암호를복구할수있다.

리눅스실습스터디맵

00 개요 [ 그림 8-1] 8 장의내용구성

01 리눅스시스템의부팅 리눅스시스템의부팅과정 바이오스단계 PC 의전원스위치를켜서부팅하면제일먼저바이오스 (BIOS, basic input/output system) 가동작 바이오스는 PC 에장착된기본적인하드웨어 ( 키보드, 디스크등 ) 의상태를확인한후부팅장치를선택하여부팅디스크의첫섹터에서 512 바이트를로딩 이 512 바이트가마스터부트레코드 (master boot record, MBR): 2 차부팅프로그램 ( 부트로더 ) 의위치저장

01 리눅스시스템의부팅 부트로더단계 바이오스단계에서 MBR 는부트로더를찾아메모리에로딩 부트로더는여러운영체제중에서부팅할운영체제를선택할수있도록메뉴를제공 부트로더는리눅스커널을메모리에로딩 리눅스커널은 /boot 디렉터리아래에 vmlinuz-버전명 의형태로제공 리눅스의대표적인부트로더로는 GRUB와 LILO [user1@localhost ~]$ ls /boot/vm* /boot/vmlinuz-0-rescue-7b4398c518d54062aa164042d9bf5191 /boot/vmlinuz-3.11.2-201.fc19.x86_64 /boot/vmlinuz-3.9.5-301.fc19.x86_64 [user1@localhost ~]$

01 리눅스시스템의부팅 커널초기화단계 커널은가장먼저시스템에연결된메모리, 디스크, 키보드, 마우스등장치들을검사 장치검사등기본적인초기화과정이끝나면커널은 fork를사용하지않고생성되는프로세스와스레드생성 이프로세스들은메모리관리같은커널의여러가지동작을수행 이들프로세스는일반적인프로세스와구분되도록대괄호 ([ ]) 로표시하며, 주로 PID 번호가낮게배정 [root@localhost ~]# ps -ef more UID PID PPID C STIME TTY TIME CMD root 1 0 0 16:22? 00:00:09 /usr/lib/systemd/systemd --switc hed-root --system --deserialize 21 root 2 0 0 16:22? 00:00:00 [kthreadd] root 3 2 0 16:22? 00:00:00 [ksoftirqd/0] root 5 2 0 16:22? 00:00:00 [kworker/0:0h] root 7 2 0 16:22? 00:00:00 [kworker/u:0h] root 8 2 0 16:22? 00:00:00 [migration/0] root 9 2 0 16:22? 00:00:00 [watchdog/0] root 10 2 0 16:22? 00:00:00 [migration/1] root 12 2 0 16:22? 00:00:00 [kworker/1:0h] ( 생략 )

01 리눅스시스템의부팅 systemd 서비스단계 systemd 서비스단계에이르면리눅스가본격적으로동작하기시작 systemd 서비스는페도라에서기존의 init 스크립트를대체한것으로다양한서비스를동작시킴 각서비스가시작하는과정은화면에메시지로출력 페도라에서는기본적으로메시지가보이지않도록하고대신에부트스플래시 (boot splash) 라고하는이미지를출력 부트스플래시화면이진행중일때 ctrl+d 키를누르면 메시지가출력되는화면으로전환 [ 그림 8-5] 페도라스플래시화면 [ 그림 8-6] 부팅메시지출력화면

01 리눅스시스템의부팅 부팅후메시지확인 부팅시출력된메시지는 dmesg 명령이나 more /var/log/boot.log 명령으로확인가능 [user1@localhost ~]$ dmesg more [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.11.2-201.fc19.x86_64 (mockbuild@bkernel01.phx2.fe doraproject.org) (gcc version 4.8.1 20130603 (Red Hat 4.8.1-1) (GCC) ) #1 SMP Fr i Sep 27 19:20:55 UTC 2013 [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.11.2-201.fc19.x86_64 root=/de v/mapper/fedora-root ro rd.lvm.lv=fedora/swap rd.md=0 rd.dm=0 vconsole.keymap=us rd.luks=0 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet LANG =ko_kr.utf-8 [ 0.000000] Disabled fast string operations [ 0.000000] e820: BIOS-provided physical RAM map: ( 생략 )

01 리눅스시스템의부팅 1 번프로세스 전통적으로유닉스에서는 init 프로세스가처음생성된프로세스로서 PID 가 1 번 리눅스는페도라 14 부터 init 대신에시스템과서비스관리자로 systemd 를사용하기시작했고, systemd 프로세스가 1 번프로세스 [user1@localhost ~]$ ps -ef more UID PID PPID C STIME TTY TIME CMD root 1 0 0 16:22? 00:00:09 /usr/lib/systemd/systemd --switc hed-root --system --deserialize 20 root 2 0 0 16:22? 00:00:00 [kthreadd] root 3 2 0 16:22? 00:00:00 [ksoftirqd/0] ( 생략 ) 로그인프롬프트출력 마지막으로그래픽로그인시스템인 GDM(GNOME display manager) 을동작시키고, 로그인프롬프트출력 [ 그림 8-7] 로그인프롬프트화면

02 systemd 서비스 기존 init 프로세스 init 프로세스는 PID 가 1 번인프로세스로모든프로세스의조상역할 init 프로세스는부팅과정에서각종서비스를제공하는셸스크립트파일을실행 init 프로세스설정파일은 /etc/inittab [user1@localhost ~]$ cd /etc [user1@localhost etc]$ cat inittab # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target # # systemd uses 'targets' instead of runlevels. By default, there are two main targets: # # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # # To set a default target, run: # # ln -s /lib/systemd/system/<target name>.target /etc/systemd/system/default. target # [user1@localhost etc]$

02 systemd 서비스 기존 init 프로세스 init 프로세스가실행하는스크립트파일은 /etc/rc.d/init.d 디렉터리에위치 /etc/rc*.d 디렉터리에있는파일들은 /etc/rc.d/init.d 파일에대한심벌릭링크 현재는 systemd 서비스에의해대부분대체되고일부파일만유지 [user1@localhost etc]$ cd /etc/rc.d/init.d [user1@localhost init.d]$ ls README ebtables functions netcf-transaction netconsole network [user1@localhost init.d]$ /etc/rc.d/init.d 디렉터리의 README 파일 : 전통적인 init 스크립트가 systemd 기반으로바뀌었다는것 [user1@localhost init.d]$ cat README You are looking for the traditional init scripts in /etc/rc.d/init.d, and they are gone? Here's an explanation on what's going on: You are running a systemd-based OS where traditional init scripts have been replaced by native systemd services files. Service files provide very similar functionality to init scripts. To make use of service ( 생략 )

02 systemd 서비스 init 프로세스와런레벨 init 프로세스에서사용하던런레벨 (Run Level) 의개념에대한이해필요 init 는시스템의단계를일곱개로정의하여구분하고각단계에따라셸스크립트를실행하는데, 이단계들을런레벨이라고함

02 systemd 서비스 systemd 의기본개념 systemd는페도라 14에서처음등장하여페도라 15부터본격적으로기존의 init 스크립트를대체하기시작 페도라 18부터는거의대부분의서비스가 systemd 기반변경 systemd는 init 방식에비해가진장점 소켓기반으로동작하여 inetd와호환성을유지한다. 셸과독립적으로부팅이가능하다. 마운트제어가가능하다. fsck 제어가가능하다. 시스템상태에대한스냅숏을유지한다. SELinux와통합이가능하다. 서비스에시그널을전달할수있다. 셧다운전에사용자세션의안전한종료가가능하다.

02 systemd 서비스 systemd 유닛 systemd는전체시스템을시작하고관리하는데유닛 (units) 이라부르는구성요소를사용 systemd는관리대상의이름을 서비스이름. 유닛종류 의형태로관리 각유닛은같은이름과종류로구성된설정파일과동일한이름을사용

02 systemd 서비스 systemd 관련명령 systemd 를기반으로서비스를시작하거나종료할때사용하는명령은 systemctl

02 systemd 서비스 동작중인유닛출력하기 옵션이나명령없이 systemctl 명령만사용하면현재동작중인유닛이출력 [user1@localhost init.d]$ systemctl UNIT LOAD ACTIVE SUB JOB DESCRIPTION proc-sys...misc.automount loaded active running Arbitrary Executable File sys-devi...ock-sr0.device loaded active plugged VMware_Virtual_IDE_CDROM_D sys-devi...da-sda1.device loaded active plugged VMware_Virtual_S sys-devi...da-sda2.device loaded active plugged VMware_Virtual_S sys-devi...ock-sda.device loaded active plugged VMware_Virtual_S sys-devi...db-sdb1.device loaded active plugged VMware_Virtual_S sys-devi...db-sdb2.device loaded active plugged VMware_Virtual_S sys-devi...ock-sdb.device loaded active plugged VMware_Virtual_S sys-devi...dc-sdc1.device loaded active plugged VMware_Virtual_S sys-devi...dc-sdc2.device loaded active plugged VMware_Virtual_S sys-devi...ock-sdc.device loaded active plugged VMware_Virtual_S ( 생략 )

02 systemd 서비스 전체유닛출력하기 : -a 옵션 -a 옵션을지정하면전체유닛이출력 [user1@localhost init.d]$ systemctl -a ( 생략 ) colord.service loaded active running Manage, Install and Gene crond.service loaded active running Command Scheduler cups.service loaded active running CUPS Printing Service dbus.service loaded active running D-Bus System Message Bus dm-event.service loaded inactive dead Device-mapper event daem dracut-shutdown.service loaded inactive dead Restore /run/initramfs ebtables.service loaded inactive dead SYSV: Ethernet Bridge fi emergency.service loaded inactive dead Emergency Shell ( 생략 )

02 systemd 서비스 특정유닛출력하기 : -t 옵션 [user1@localhost init.d]$ systemctl -t service UNIT LOAD ACTIVE SUB JOB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrt-vmcore.service loaded active exited Harvest vmcores for ABRT abrt-xorg.service loaded active running ABRT Xorg log watcher abrtd.service loaded active running ABRT Automated Bug Reportin accounts-daemon.service loaded active running Accounts Service atd.service loaded active running Job spooling tools auditd.service loaded active running Security Auditing Service avahi-daemon.service loaded active running Avahi mdns/dns-sd Stack bluetooth.service loaded active running Bluetooth service ( 생략 ) 유닛의상태확인하기 : status [user1@localhost init.d]$ systemctl status bluetooth.service bluetooth.service - Bluetooth service Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled) Active: active (running) since Fri, 2013-06-07 17:24:34 KST Main PID: 555 (bluetoothd) CGroup: name=systemd:/system/bluetooth.service 555 /usr/sbin/bluetoothd -n ( 생략 ) [user1@localhost init.d]$

02 systemd 서비스 유닛서비스정지하기 : stop [root@localhost ~]# systemctl stop bluetooth.service [root@localhost ~]# systemctl status bluetooth.service bluetooth.service - Bluetooth service Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled) Active: inactive (dead) since Fri, 2013-06-07 16:00:00 KST; 12s ago Process: 555 ExecStart=/usr/sbin/bluetoothd -n (code=exited, status=0/ SUCCESS) CGroup: name=systemd:/system/bluetooth.service Jun 07 15:59:56 localhost.localdomain bluetoothd[555]: Endpoint unregistered:... Jun 07 15:59:56 localhost.localdomain bluetoothd[555]: bluetoothd[555]: Endpo... Jun 07 15:59:56 localhost.localdomain bluetoothd[555]: Endpoint unregistered:... Jun 07 15:59:57 localhost.localdomain bluetoothd[555]: bluetoothd[555]: Endpo... Jun 07 15:59:57 localhost.localdomain bluetoothd[555]: Endpoint unregistered:... Jun 07 15:59:59 localhost.localdomain bluetoothd[555]: bluetoothd[555]: Stopp... Jun 07 15:59:59 localhost.localdomain bluetoothd[555]: Stopping SDP server Jun 07 15:59:59 localhost.localdomain bluetoothd[555]: Exit Jun 07 15:59:59 localhost.localdomain bluetoothd[555]: bluetoothd[555]: Exit Jun 07 16:00:00 localhost.localdomain systemd[1]: Stopped Bluetooth service. [root@localhost ~]# 유닛서비스시작하기 : start [root@localhost ~]# systemctl start bluetooth.service [root@localhost ~]# systemctl is-active bluetooth.service active [root@localhost ~]#

02 systemd 서비스 systemd 와런레벨 런레벨변경하기 systemd에서런레벨을변경하는것도 isolate 명령으로간단히해결 예 : 런레벨 3로변경 [root@localhost ~]# systemctl isolate multi-user.target 또는 [root@localhost ~]# systemctl isolate runlevel3.target [ 그림 8-8] 런레벨 3 화면

02 systemd 서비스 런레벨변경하기 런레벨 5 로다시변경하기 [root@localhost ~]# systemctl isolate graphical.target [root@localhost ~]# systemctl isolate runlevel5.target init 명령으로런레벨변경하기 init 명령으로런레벨변경가능 [root@localhost ~]# cd /sbin [root@localhost ~]# ls -l /sbin/init lrwxrwxrwx. 1 root root 22 10월 3 21:45 init ->../lib/systemd/systemd [root@localhost ~]#

02 systemd 서비스 init 명령으로런레벨변경하기 init 명령만입력하면다음과같이출력 [root@localhost ~]# init init [OPTIONS...] {COMMAND} Send control commands to the init daemon. --help Show this help --no-wall Don't send wall message before halt/power-off/reboot Commands: 0 Power-off the machine 6 Reboot the machine 2, 3, 4, 5 Start runlevelx.target unit 1, s, S Enter rescue mode q, Q Reload init daemon configuration u, U Reexecute init daemon [root@localhost ~]#

02 systemd 서비스 telinit 명령으로런레벨변경하기 telinit 명령을실행하면 init 명령과같은결과가출력 [root@localhost ~]# telinit telinit [OPTIONS...] {COMMAND} Send control commands to the init daemon. --help Show this help --no-wall Don't send wall message before halt/power-off/reboot Commands: 0 Power-off the machine 6 Reboot the machine 2, 3, 4, 5 Start runlevelx.target unit 1, s, S Enter rescue mode q, Q Reload init daemon configuration u, U Reexecute init daemon [root@localhost ~]#

02 systemd 서비스 단일사용자모드로전환하기 : 런레벨 1 시스템에문제가있을경우시스템을런레벨 1( 런레벨 S) 로변경하여점검 : 안전모드개념 이모드로변환하기전에다른사용자들은로그아웃해야함 단일모드변경방법 [root@localhost ~]# systemctl isolate rescue.target [root@localhost ~]# systemctl isolate runlevel1.target [root@localhost ~]# init 1 [root@localhost ~]# telinit S

02 systemd 서비스 기본런레벨지정하기 예전 : 부팅할때동작할기본런레벨은예전에는 /etc/inittab 파일에지정 현재 : /etc/systemd/system 디렉터리아래의 default.target 으로지정 -> 다른 target 유닛에대한심벌릭링크 예 : 그래픽모드 ( 런레벨 5) 로기본런레벨을지정 [root@localhost ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/ system/default.target 예 : 런레벨 3 을기본으로지정 [root@localhost ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/ system/default.target 런레벨 0 이나런레벨 6 을기본런레벨로지정하면안됨 -> 왜? 현재런레벨확인하기 현재런레벨확인은 runlevel 명령을사용 [root@localhost ~]# runlevel S 5 [root@localhost ~]#

02 systemd 서비스 현재런레벨확인하기 systemctl 명령으로 target 을확인 [root@localhost ~]# systemctl -t target UNIT LOAD ACTIVE SUB JOB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User network.target loaded active active Network remote-fs.target loaded active active Remote File Systems sockets.target loaded active active Sockets swap.target loaded active active Swap sysinit.target loaded active active System Initialization syslog.target loaded active active Syslog LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. JOB = Pending job for the unit. 13 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'. [root@localhost ~]#

03 리눅스시스템의종료 리눅스를종료하는방법 shutdown 명령을사용한다. halt 명령을사용한다. poweroff 명령을사용한다. 런레벨을 0이나 6으로전환한다. reboot 명령을사용한다. 전원을끈다 -> 최후의수단

03 리눅스시스템의종료 shutdown 명령사용하기 리눅스시스템을가장정상적으로종료하는방법 shutdown 명령으로시스템즉시종료하기 -h 옵션과함께현재시간으로지정 [root@localhost ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/ system/default.target

03 리눅스시스템의종료 shutdown 한다는메시지보내고종료하기 시스템을종료할때 shutdown 명령으로메시지를보낼수있음 사용자들이메시지를받고정리할시간이필요하므로시간을 now 로지정하면안되고특정시간을지정 예 : 2 분후에종료한다는메시지발송 [root@localhost ~]# shutdown -h +2 "System is going down in 2 min" 사용자터미널출력 [user1@localhost ~]$ Broadcast message from root@localhost.localdomain (Sat, 2013-06-08 14:25:38 KST): System is going down in 2 min The system is going down for power-off at Sat, 2013-06-08 14:27:38 KST! shutdown 명령으로시스템재시작하기 : -r 옵션사용 [root@localhost ~]# shutdown -r +3 Broadcast message from root@localhost.localdomain (Sat, 2013-06-08 14:29:35 KST): The system is going down for reboot at Sat, 2013-06-08 14:32:35 KST!

03 리눅스시스템의종료 shutdown 명령취소하기 : -c 옵션 [root@localhost ~]# shutdown -c 앞의 3 분후재시작명령취소할경우메시지출력 Broadcast message from root@localhost.localdomain (Sat, 2013-06-08 14:29:43 KST): The system shutdown has been cancelled at Sat, 2013-06-08 14:30:42 KST! shutdown 메시지만보내기 : -k 옵션 [root@localhost ~]# shutdown -k 2 Broadcast message from root@localhost.localdomain (Sat, 2013-06-08 14:37:19 KST): The system is going down for power-off at Sat, 2013-06-08 14:39:19 KST!

03 리눅스시스템의종료 런레벨변경하기 런레벨을 0 으로바꾸면시스템이종료 [root@localhost ~]# telinit 0 재시작하려면런레벨을 6 으로변경 [root@localhost ~]# telinit 6 systemd 로종료하기 [root@localhost ~]# systemctl isolate poweroff.target [root@localhost ~]# systemctl isolate runlevel0.target systemd 로재시작하기 [root@localhost ~]# systemctl isolate reboot.target [root@localhost ~]# systemctl isolate runlevel6.target

03 리눅스시스템의종료 기타시스템종료명령 시스템을종료하거나재시작하기위해사용할수있는명령 : halt, poweroff, reboot 이명령들은모두 systemctl 명령의심벌릭링크 [root@localhost ~]# cd /sbin [root@localhost sbin]# ls -l halt lrwxrwxrwx. 1 root root 16 10월 3 21:45 halt ->../bin/systemctl [root@localhost sbin]# ls -l poweroff lrwxrwxrwx. 1 root root 16 10월 3 21:45 poweroff ->../bin/systemctl [root@localhost sbin]# ls -l reboot lrwxrwxrwx. 1 root root 16 10월 3 21:45 reboot ->../bin/systemctl [root@localhost sbin]# halt, reboot, poweroff 명령은 /var/log/wtmp 파일에시스템종료기록을남기고시스템을종료하거나재시작 사용할수있는옵션 -n : 재시작이나종료전에 sync를호출하지않는다. -w : 실질적으로재시작하거나종료하지는않지만 wtmp 파일에기록을남긴다. -d : wtmp 파일에기록을남기지않는다. -n 옵션은 -d 옵션을포함한다. -f : 강제로명령을실행하며 shutdown을호출하지않는다. -p : 시스템의전원을끈다.

04 데몬프로세스 데몬 (daemon) 리눅스의백그라운드에서동작하면서특정한서비스를제공하는프로세스 리눅스시스템에서동작하는각종서비스를제공하는프로세스들이바로데몬 데몬의동작방식 독자형 (standalone) 시스템의백그라운드에서서비스별로항상동작 자주호출되는데몬이아니라면시스템의자원을낭비할우려 슈퍼데몬에의한동작방식 평소에는슈퍼데몬만동작하다가서비스요청이오면슈퍼데몬이해당데몬을동작시킴 독자형보다는서비스에응답하는데시간이약간더걸릴수있지만자원을효율적으로사용한다는장점 슈퍼데몬 유닉스에서슈퍼데몬의이름은 inetd 페도라에서는보안기능이포함된 xinetd를사용

04 데몬프로세스 데몬의조상 : systemd 와커널스레드데몬 systemd 데몬 init 을대체한데몬으로대부분의프로세스의조상프로세스 pstree 명령으로확인 [root@localhost sbin]# pstree systemd NetworkManager dhclient 3*[{NetworkManager}] 2*[abrt-watch-log] abrtd accounts-daemon {accounts-daemon} at-spi-bus-laun dbus-daemon {dbus-daemon} 3*[{at-spi-bus-laun}] at-spi2-registr {at-spi2-registr} atd auditd audispd sedispatch {audispd} {auditd} avahi-daemon avahi-daemon bluetoothd chronyd crond ( 생략 )

04 데몬프로세스 커널스레드데몬 커널의일부분을프로세스처럼관리하는데몬 ps 명령으로확인했을때대괄호 ([ ]) 로둘러싸여있는프로세스들 예전에는대부분 k로시작했으나요즘은이를반드시준수하지는않음 커널데몬은대부분입출력이나메모리관리, 디스크동기화등을수행하며대체로 PID가낮은번호로할당 커널데몬을동작시키는조상데몬은커널스레드데몬 (kthreadd): PID 2번 [root@localhost sbin]# ps -ef more UID PID PPID C STIME TTY TIME CMD root 1 0 0 20:35? 00:00:13 /usr/lib/systemd/systemd --switc hed-root --system --deserialize 21 root 2 0 0 20:35? 00:00:00 [kthreadd] root 3 2 0 20:35? 00:00:00 [ksoftirqd/0] root 5 2 0 20:35? 00:00:00 [kworker/0:0h] root 7 2 0 20:35? 00:00:00 [kworker/u:0h] root 8 2 0 20:35? 00:00:02 [migration/0] root 9 2 0 20:35? 00:00:00 [watchdog/0] root 10 2 0 20:35? 00:00:04 [migration/1] root 12 2 0 20:35? 00:00:00 [kworker/1:0h] root 13 2 0 20:35? 00:00:00 [ksoftirqd/1] ( 생략 )

04 데몬프로세스 주요데몬

05 부트로더 GRUB 의개요 GRand Unified Bootloader 의약자로, 리눅스의전통적인부트로더인 LILO 의단점을보완하여 GNU 프로젝트의일환으로개발 GRUB 는 LILO 에비해다음과같은장점을가지고있음 LILO 는리눅스에서만사용이가능하지만 GRUB 는윈도에서도사용할수있다. LILO 에비해설정과사용이편리하다. 부팅시에명령을사용하여수정이가능하다. 멀티부팅기능을지원한다. GRUB 의가장최신버전은 GRUB2 로페도라 16 부터기본부트로더로사용중

05 부트로더 GRUB2 관련디렉터리와파일 /boot/grub2/grub.cfg 파일 : 기존의 menu.lst 파일을대체하는기본설정파일 [root@localhost sbin]# more /boot/grub2/grub.cfg # # DO NOT EDIT THIS FILE # # It is automatically generated by grub2-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default="${saved_entry}" if [ x"${feature_menuentry_id}" = xy ]; then menuentry_id_option="--id" else menuentry_id_option="" fi ( 생략 )

05 부트로더 GRUB2 관련디렉터리와파일 /etc/grub.d 디렉터리 : GRUB 스크립트를가지고있으며 GRUB 의명령이실행될때순서대로읽혀 grub.cfg 파일이생성 [root@localhost sbin]# ls /etc/grub.d 00_header 20_linux_xen 30_os-prober 41_custom 10_linux 20_ppc_terminfo 40_custom README [root@localhost sbin]# /etc/default/grub 파일 : GRUB 메뉴설정내용이저장 [root@localhost sbin]# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release.*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.md=0 rd.dm=0 vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param :) rd.luks=0 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root rhgb quiet" GRUB_DISABLE_RECOVERY="true" [root@localhost sbin]#

05 부트로더 단일사용자모드로부팅하기 1 시스템재시작하기 : 부팅할때 GRUB 메뉴초기화면이출력 [ 그림 8-10] GRUB 메뉴초기화면

05 부트로더 단일사용자모드로부팅하기 2 GRUB 편집모드로전환하기 : GRUB Boot Menu 가출력될때신속하게 e 키를눌러서편집모드로전환 [ 그림 8-11] GRUB 편집화면

05 부트로더 단일사용자모드로부팅하기 3 단일사용자모드로수정하기 리눅스커널정보가있는행에서 quiet 다음에 1을추가하면런레벨 1로부팅 이때는단일사용자모드로부팅한후 root 암호를물어봄 [ 그림 8-12] 단일사용자모드로부팅하기위해커널항목수정

05 부트로더 단일사용자모드로부팅하기 3 root 암호를복구하려면 quiet 다음에 init=/bin/bash 를추가 [ 그림 8-13] root 암호복구를위한커널항목수정

05 부트로더 단일사용자모드로부팅하기 4 재시작하기 F10 키를눌러재시작 -> init=/bin/bash를추가했다면바로 root계정으로동작 [ 그림 8-14] root 암호복구를위한화면

05 부트로더 단일사용자모드로부팅하기 루트파일시스템이읽기전용으로마운트되므로읽기 / 쓰기모드로다시마운트해야함 시스템의메시지가기본적으로한글로출력되는데콘솔모드에서는한글이출력되지않으므로언어를영어로바꿔야함 passwd 명령으로암호변경가능 [root@localhost /]# mount -o remount,rw / [root@localhost /]# LANG=en_US.UTF-8 [root@localhost /]# passwd root Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated succesfully. [root@localhost /]# root 암호를수정하고재시작했는데로그인이안된다면 다시단일사용자모드로부팅하여 selinux 의설정파일 (/etc/selinux/config) 에서 SELINUX=disabled 로수정하고재시작해야함