리눅스 시스템의 부팅 과정
1) 전원 ON
2) 바이오스 단계
- PC에 장착된 기본적인 하드웨어의 상태를 확인한 후 부팅 장치를 선택하여 부팅 디스크의 첫 섹터에서 512 바이트를 로딩함
- 512 바이트: 마스터 부트 레코드(MBR)
- MBR는 부트 로더를 메모리에 적재함
3) 부트 로더 단계
- 부트 로더는 부팅할 운영 체제를 선택할 수 있도록 메뉴 제공
- 부트 로더는 리눅스 커널을 메모리에 로딩
4) 커널 초기화 단계
- 커널은 가장 먼저 시스템에 연결된 메모리, 디스크, 키보드, 마우스 등 장치들을 검사
- 기본적인 초기화 과정이 끝나면 커널은 fork를 사용하지 않고 생성되는 프로세스와 스레드를 생성함
5) systemd 서비스 단계
- 기존의 init 스크립트를 대체한 것으로 다양한 서비스를 동작시킴
- 부팅 메시지 출력, 부트 스플래시 화면 출력
6) 로그인 프롬프트 출력
systemd 서비스
1) 리눅스의 init 런레벨
런레벨 |
의미 |
관련 스크립트의 위치 |
0 |
시스템 종료 |
/etc/rc0.d |
1, S |
단일 사용자 모드 |
/etc/rc1.d |
2 |
다중 사용자 모드(NFS를 실행하지 않음) |
/etc/rc2.d |
3 |
다중 사용자 모드(NFS 포함) |
/etc/rc3.d |
4 |
사용하지 않음(예비 번호) |
/etc/rc4.d |
5 |
X11 상태로 부팅 |
/etc/rc5.d |
6 |
재시작 |
/etc/rc6.d |
2) systemd의 기본 개념
- CentOS7부터 본격적으로 기존의 init 스크립트를 대체하기 시작함
- 거의 대부분의 서비스가 systemd 기반으로 변경됨
- systemd 방식의 장점: inetd와 호환성 유지, 셸과 독립적으로 부팅 가능, 마운트 제어 가능, fsck 제어 가능, SELinux와 통합 등
3) systemd 유닛
- systemd는 전체 시스템을 시작하고 관리하는 데 유닛(units)이라 부르는 구성 요소 사용
- 관리 대상 이름 형태: 서비스 이름.서비스 종류
4) systemctl
- systemd를 제어함
- 형식: systectl [옵션] [명령] [서비스명]
- 옵션
옵션 |
설명 |
-a |
상태와 관계없이 서비스 전체 출력 |
-t |
지정한 종류의 서비스만 출력 |
- 명령어
명령어 |
설명 |
start |
서비스 시작 |
stop |
서비스 정지 |
reload |
서비스의 설정 파일을 다시 읽어옴 |
restart |
서비스 재시작 |
status |
서비스 상태 출력 |
enable |
부팅 시 서비스가 시작하도록 설정 |
disable |
부팅 시 서비스가 시작하지 않도록 설정 |
is-active |
서비스가 동작하고 있는지 확인 |
is-enabled |
서비스가 시작되었는지 확인 |
isolate |
지정한 서비스 및 이와 관련된 서비스만 시작하고 나머지는 정지 |
kill |
서비스에 시그널 전송 |
mask, unmask |
서비스 잠금, 해제 |
리눅스 시스템의 종료
1) shutdown [시간] [메시지]
- 옵션
옵션 |
기능 |
-k |
실제로 시스템을 종료하는 것이 아니라 사용자들에게 메시지만 전달 |
-r |
종료 후 재시작 |
-h |
종료하며 halt 상태로 이동 |
-f |
빠른 재시작으로 이 과정에서 fsck 생략 가능 |
-c |
이전에 내렸던 shutdown 명령 취소 |
[시간] |
종료할 시간(hh:mm, +m, now) |
[메시지] |
모든 사용자에게 보낼 메시지 |
2) halt, poweroff, reboot
- 시스템을 종료하거나 재시작하기 위해 사용하는 명령어
- systemctl 명령의 심볼릭 링크
- /var/log/wtmp 파일에 시스템 종료 기록을 남김
- 옵션
옵션 |
기능 |
-n |
재시작이나 종료 전에 sync를 호출하지 않음 |
-w |
실질적으로 재시작하거나 종료하지는 않지만 wtmp 파일에 기록을 남김 |
-d |
wtmp 파일에 기록을 남기지 않음 |
-f |
강제로 명령을 실행하며 shutdown을 호출하지 않음 |
-p |
시스템의 전원을 끔 |
3) runlevel 0, 6
데몬 프로세스
1) 데몬
- 리눅스 백그라운드에서 동작하면서 특정한 서비스를 제공하는 프로세스
2) 데몬의 동작 방식
- 독자형: 시스템의 백그라운드에서 서비스별로 항상 동작, 자원 낭비 우려
- 슈퍼 데몬: 평소에는 슈퍼 데몬만 동작 > 서비스 요청 시 슈퍼 데몬이 해당 데몬을 동작 시킴, 응답 시간이 느리지만 효율적인 자원 사용
3) 주요 데몬
데몬 |
기능 |
crond |
주기적으로 실행하도록 예약한 명령 실행 |
dhcpd |
동적으로 IP 주소를 부여하는 서비스 제공 |
httpd |
웹 서비스 제공 |
nfs |
네트워크 파일 시스템 서비스 제공 |
smtpd |
메일 전송 데몬 |
syslogd |
로그 기록 서비스 제공 |
ftpd |
파일 송수신 서비스 제공 |