CentOS 리눅스 시스템 & 네트워크
A. 리눅스 시스템의 부팅
리눅스 시스템의 부팅 과정은 PC부팅과 리눅스 부팅으로 나뉜다.
전원 on → 바이오스 단계 → 부트 로더 단계 → 커널 초기화 단계 → systemd 서비스 단계 → 로그인
1.
바이오스 단계 : 하드웨어를 검사하고 부팅 장치를 선택한 다음, MBR(부팅 디스크의 첫 섹터 512B)을 로딩해 부트 로더를 로드한다.
2.
부트 로더 단계: 운영체제를 선택할 수 있는 메뉴/ 커널을 메모리에 로딩하는 역활을 수행한다
3.
커널 초기화 단계: 참고로 커널은 /boot dir아래에 존재한다. 하드웨어들을 상태를 점검하고, 프로세스와 스레드를 생성한다. 메모리와 관련된 작업을 하며 일반 프로세스들과 대괄호([] /ex. 커널 스레드 데몬)를 통해 구분되어 있다
4.
systemd 단계 : 기존의 init 프로세스 대신 기능하는 프로세스로 부트 스플래시일 때 alt+d를 누르면 메세지를 출력해서 볼 수 있다.
마지막으로 위의 단계에서 데몬을 모두 실행하고 로그인 시스템인 GDM을 동작시킨다.
B. systemd 서비스
프로세스와 서비스의 관리자. 서비스 데몬을 시작한다.
•
init 프로세스 : 모든 프로세스의 조상. init 프로세스와 관련된 설정 파일은 /etc/inittab이다.
•
런레벨: init 프로세스가 사용한 시스템의 상태를 일곱가지로 정의한 것. 각 상태에 때라 셸 스크립트를 실행했다.
•
systemd의 특징
1) 셧다운 전에 사용자의 셰션의 안전한 종료 가능
2) 마운트 제어가 가능하다.
3) fsck제어가 가능하다
4) 서비스에 시그널을 전달할 수 있다.
…etc)
•
유닛 : systemd가 전체 시스템을 시작하고 관리하는 게 사용되는 구성 요소. systemd는 관리 대상 이름은 ‘서비스명.유닛종류’의 형태로 관리한다.
•
systemctl : -a, -t, start, stop, reload, restart, status, enable, disable, is-active, is-enable, isolate, kill
•
systemctl과 런레벨:
각 런레벨에 해당하는 target유닛. 이 파일들은 /user/lib/systemtd/system에 있다.
런레벨 | target파일(심볼릭 링크) | target 원본 파일 |
0 | runlevel0.target | powertoff.target |
1 | runlevel1.target | rescue.target |
2 | runlevel2.target | multi-user.target |
3 | runlevel3.target | multi-user.target |
4 | runlevel4.target | multi-user.target |
5 | runlevel5.target | graphical.target |
6 | runlevel6.target | reboot.target |
•
현재 target과 런레벨 확인하기 : systemctl get-default/ runlevel
•
기본 target 설정하기 :
◦
ls -l /etc/systemtd/system → default.target이 현재 target을 가리키고 있는 걸 알 수 있음
◦
systemctl set-default <name of target>.target
•
target 변경하기
◦
systemctl isolate runlevelX/multi-user
◦
init 0~6 (init은 systemtd의 심볼릭 링크), telinit(systemctl의 심볼릭 링크)
•
단일 사용자 모드로 전환할 때는 다른 사용자들은 로그아웃시켜야 한다.
C. 리눅스 시스템의 종료
리눅스를 종료하는 방법: (shutdown, halt, poweroff, reboot) 명령 사용, 런레벨을 0 또는 6으로 변경, 전원 끄기.
•
shutdown 명령
◦
사용자들에게 메세지만 전달 : shutdown -k
◦
즉시 종료 : shutdown -h now
◦
메세지 보내고 종료 : shutdwon -h + 2 “message”
◦
재시작 : shutdown -r +3
◦
명령 취소 : shutdown -c
•
D. 데몬 프로세스
데몬은 백그라운드에서 동작하면서 특정한 서비스를 제공하는 프로세서이다.
•
데몬의 동작 방식 : 독자형, 슈퍼데몬
•
독자형과 슈퍼데몬의 차이 : 독자형은 시스템의 백그라운드에서 항상 동작하는 것이고 슈퍼데몬에 의한 호출은 말 그대로 슈퍼데몬에 의한 호출되어 실행된다. 전자가 후자보다 빠르지만 자원 낭비의 우려가 있다.
•
슈퍼 데몬 : 데몬들을 관리하는 데몬으로 슈퍼 데몬은 네트워크와 관련된 데몬만 관리한다.
•
데몬의 조상 : systemtd와 커널 스레드 데몬
◦
systemtd : 대부분 모든 프로세스들의 조상
◦
커널 스레드 데몬 : 커널의 일부분을 프로세스처럼 관리한다. 대괄호에 있는 프로세스들이다.