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
'개발 > Linux' 카테고리의 다른 글
작업 스케줄링, 스케줄링 접근제어 (0) | 2022.08.19 |
---|---|
디스크 관리 및 파일시스템 (0) | 2022.08.06 |
패스워드 관련 파일 및 명령어, PAM (0) | 2022.08.02 |
사용자 관리 관련 파일, 사용자 및 그룹 관리 명령어 (0) | 2022.08.01 |
프로세스, 아카이브(tar), 압축 (0) | 2022.07.29 |