본문 바로가기

리눅스 끄적끄적

2023/02/09 부팅, systemd

리눅스 전통적인 부팅 과정

리눅스의 부팅과정

전원 켜기 -> POST (Power On Self Test) -> BIOS 단계 -> 부팅 장치 검색 - > 부트 로더 실행(Grub 실행) -> 실행 할 커널 선택 -> 커널 로드 및 PID 1번 실행 - > 기타 필수 프로그램 실행 -> 부팅 완료

 


Basic Input/Output System BIOS

 


/boot/grub2/grub.cfg 부팅 메뉴 파일

 



vmlinuz 커널 이미지 파일

 



/var/log/boot.log 부팅 할 때 나오는 메시지

 

 



시스템의 상태를 나타내는 런 레벨

 

- 런 레벨은 숫자 또는 문자로 표현된 시스템의 상태
- 런 레벨은 서비스와 사용자가 사용할 수 있는 자원들에 대해 정의하고 있음

 


런레벨 관련 명령어

현재 및 이전 런 레벨을 확인하는 who -r 명령어

 


 
런 레벨 스크립트를 실행하는 init 명령어

 

 

부팅과정 실습

https://www.youtube.com/watch?v=vdnfWc1eN5M&list=PL0d8NnikouEXVn9FfoX2XVlGgEArLDiLZ&index=12 

 




systemd

init뿐만 아니라 다른 기능들도 대체한 systemd

 

- 리눅스를 부팅하면 커널이 가장 먼저 실행시키는 프로세스
- 기본의 리눅스는 가장 먼저 init 프로세스를 실행하고 init 프로세스가 필요한 다른 프로세스를 실행
- 기존의 init 프로세스는 단계적으로 런 레벨을 올려가며 해당 런 레벨의 rc 스크립트를 차례대로 실행
- 하지만 init은 아주 오래전 리눅스에서부터 사용하던 아주 오래된 프로세스였고 이에 계속해서 기능이 추가되면서 프로그램들이 복잡해지다보니 효율 또한 떨어지게 되었다.
- 이에 systemd는 init의 단점을 보완하며 기존 리눅스의 의존성을 해치지 않도록 개발되었다.
- systemd는 가증한 한 병렬로 시작 프로그램들을 실행시키는 것으로 부팅 슥도를 끌어올리고, 프로그램 실행을 위한 파일로는 쉘 스크립트가 아니라 service라는 systemd만의 unit을 통해 체계적이면서 가독성이 좋도록 개발되었다.
- systemd는 단지 init 뿐만아니라 다른 프로그램들의 기능마저 대체
- 네임서버 주소를 설정하는 resolv.conf의 자리를 systemd-resolved가 대체, DHCP 서버에서 IP를 받아와서 네트어크 인터페이스에 설정하는 dhcpcd의 자리를 systemd-networkd가 대체

다른기능들도 대체한다

 




유닛의 종류

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

유닛 기능
service 데몬의 시작,종료,재시작 담당 atd.service
socket    소켓을관리하는 유닛 dbus.socket
device    리눅스의 여러 장치들을 관리 dev-sda.device
mount   마운트 포인트 관리 boot.mount
automount    자동 마운트 포인트 관리 proc-sys-fs-binfmt_misc.automount



systemd를 제어하는 systemctl 명령어

systemctl [옵션] [명령] [유닛 이름]

-옵션
-a : 상태와 관계없이 유닛 전체를 출력한다.
-t [유닛의 종류] : 지정한 종류의 유닛만 출력한다.

-명령
start : 유닛을 시작한다.
stop : 유닛을 정지한다.
reload : 유닛의 설정 파일을 다시 읽어온다.
restart : 유닛을 재시작한다.
status : 유닛이 현재 상태를 확인한다.
enable : 부팅 시 유닛이 자동으로 시작되도록 설정한다.
disable : 부팅 시 유닛이 자동으로 시작되지 않도록 설정한다.

 

 

systemd 명령어 실습

https://www.youtube.com/watch?v=ACdlNJuaTvY&list=PL0d8NnikouEXVn9FfoX2XVlGgEArLDiLZ&index=14 

 

'리눅스 끄적끄적' 카테고리의 다른 글

2023/02/13 RAID  (0) 2023.02.13
2023/02/10 디스크, 마운트  (0) 2023.02.10
2023/02/08 접근제어, PAM  (0) 2023.02.08
2023/02/07 사용자  (0) 2023.02.07
2023/02/03 압축 및 아카이브  (0) 2023.02.03