리눅스 시스템의 부팅
PC의 전원을 켜는 순간부터 리눅스가 완전히 동작하여 로그인 프롬프트가 출력될 때까지의 과정
1. 바이오스 단계 : PC에 장착된 기본 하드웨어를 검사하고 MBR(부팅 디스크의 첫 섹터에서 512B)과 부트 로더를 로딩한다.
(하드웨어 검사 -> 부팅 장치 선택 -> MBR 로드 -> 부트 로더 로드)
2. 부트 로더 단계 : 대표적인 부트 로더는 GRUB이며, 리눅스 커널을 메모리로 로딩한다.
3. 커널 초기화 단계 : 시스템에 연결된 장치를 검사하고 커널 스레드를 생성한다. 커널 프로세스는 fork를 사용하지 않고 생성(일반적인 프로세스와 구분되도록 대괄호로 표시)
4. systemd 서비스 단계 : 다양한 서비스 데몬을 시작한다. 부팅 후 dmesg 명령이나 more /var/log/boot.log 명령으로 로그 확인 가능
5. 로그인 프롬프트 출력 : 모든 데몬을 실행하고 끝으로 로그인 프롬프트를 출력한다.
systemd 서비스
기존 init 프로세스를 대체하는 새로운 서비스이다.
런레벨 : 시스템의 상태를 나타내는 숫자와 문자이다.
systemd : 리눅스 전체 시스템을 시작하고 관리하는 유닛(service, socket, device, mount, automount, target, swap, path, timer, slice, scope)으로 구성되어 있다.
런레벨 | 의미 | tartget 파일(심벌릭 링크) | target 원본 파일 |
0 | 시스템 종료 | runlevel0.target | poweroff.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 |
systemctl 명령 : systemd 기반으로 서비스를 시작하고 종료한다.
systemctl 명령의 옵션 종류 | 의미 |
systemctl | 동작 중인 유닛을 출력 |
systemctl -a | 전체 유닛을 출력 |
systemctl -t | 지정한 종류의 유닛을 출력 |
systemctl status 유닛명 | 지정한 유닛의 상태 정보를 출력 |
systemctl stop 유닛명 | 지정한 유닛의 서비스를 정지 |
systemctl start 유닛명 | 지정한 유닛의 서비스를 시작 |
systemctl isolate 타깃유닛명 | 지정한 타깃 유닛으로 런레벨을 변경 |
기본 런레벨 지정 : /etc/systemd/system 디렉터리의 default.target으로 기본 런레벨을 지정한다. target 파일은 심벌릭 링크이다.
리눅스 시스템의 종료
<shutdown 명령을 사용하여 종료하는 경우>
shutdown -h now : 즉시 시스템을 종료한다.
shutdown -h +1 "System down" : 사용자들에게 셧다운한다는 메시지를 보내고 시스템을 종료한다.
shutdown -r +1 : 1분 후에 시스템을 재시작한다.
shutdown -c : shutdown 명령을 취소한다.
shutdown -k 1 : 사용자들에게 셧다운한다는 메시지만 보내고 실제로 시스템이 종료되지는 않는다.
<런레벨을 변경하여 종료하는 경우>
telinit 0 : 런레벨을 0(시스템 종료)으로 변경한다.
telinit 6 : 런레벨을 6(재시작)으로 변경한다.
<systemd로 종료하는 경우>
systemctl islate poweroff.target : 런레벨을 0으로 변경한다.
systemctl islate reboot.target : 런레벨을 6으로 변경한다.
<기타 명령>
halt, poweroff, reboot
데몬 프로세스
데몬 : 백그라운드에서 동작하면서 특정한 서비스를 제공하는 프로세스이다.
동작 방식 : 독자형, 슈퍼데몬에 의한 호출형
슈퍼 데몬 : 다른 데몬을 관리하는 데몬(inetd, xinetd)
조상 데몬 : systemd(프로세스 대부분의 조상 데몬, PID 1번), kthreadd(커널 스레드 데몬, 커널 관련 프로세스의 조상, PID 2번)
주요 데몬 : atd, crond, dhepd, httpd, lpd, named, routed 등
부트 로더
커널을 메모리에 로딩하는 역할을 한다.
리눅스의 부트 로더 : LILO와 LILO의 단점을 개선하여 개발한 GRUB가 있다. 현재 최신 버전인 GRUB2를 대부분 사용
단일 사용자 모드로 부팅 : 시스템을 검사하고, 계정의 암호를 분실하여 복구할 때 사용한다.
복구 모드 : 시스템이 부팅되지 않아서 시스템을 복구할 때 사용한다.
<GRUB2 관련 디렉터리와 파일>
/boot/grub2/grub.cfg : GRUB2의 기본 설정 파일
/etc/grub.d 디렉터리 : GRUB 스크립트들이 위치하고 있다
/etc/default/grub 파일 : GRUB2 메뉴 설정 내용이 저장되어 있다
'development > Linux' 카테고리의 다른 글
[우분투 리눅스] 사용자 계정 관리 (0) | 2022.08.16 |
---|---|
[우분투 리눅스] 소프트웨어 관리 (0) | 2022.08.06 |
[우분투 리눅스] 파일 시스템과 디스크 관리 (0) | 2022.07.27 |
[우분투 리눅스] 프로세스 관리하기 (0) | 2022.07.23 |
[우분투 리눅스] 파일 접근 권한 관리하기 (0) | 2022.07.20 |