부팅 프로세스 및 서비스 제어
하나, Linux 운영 체제 부팅 프로세스
- Power-on self-test (BIOS)
서버 호스트가 켜진 후 CPU, 메모리, 그래픽 카드, 키보드 및 기타 장치는 마더 보드 BIOS의 설정에 따라 처음에 테스트됩니다. 테스트가 성공하면 사전 설정된 시작 순서에 따라 시스템 제어가 전송됩니다. 로컬 하드 디스크를 제공하십시오.
总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱
- MBR 부팅
로컬 하드 디스크에서 시스템을 시작할 때 먼저 하드 디스크의 첫 번째 섹터에있는 MBR (마스터 부트 레코드) 설정에 따라 시스템 제어 권한을 운영 체제 부팅 파일이 포함 된 파티션으로 전송하거나 MBR 레코드에 따라 직접 전송합니다. 부트 메뉴의 부트 정보 (예 : GRUB)
总结:运行放在MBR扇区里的启动GRUB引导程序
- GRUB 메뉴
Linux 운영 체제에서 GRUB (Unified Boot Loader)는 가장 널리 사용되는 다중 시스템 부트 로더 프로그램입니다. 시스템 제어가 GRUB에 전달 된 후 사용자가 선택할 수있는 부트 메뉴가 표시되고 선택한 옵션 (또는 기본값)에 따라 Linux 커널 파일이로드 된 다음 시스템 제어가 커널로 전송됩니다. Centos 7은 GRUB2 부트 로더를 사용합니다.
总结: GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置
- 커널 (커널)로드
Linux 커널은 다양한 하드웨어 리소스와 시스템 프로그램 사이에 미리 컴파일 된 특수 바이너리 파일로, 리소스 할당 및 스케줄링을 담당합니다. 커널이 시스템을 제어하면 Centos 7 시스템의 기본 커널 파일은 "/boot/vmlinuz-3.10.0-514.e17.x86_64"에 있습니다.
Centos 7 시스템에서 기본 커널 파일은 "/boot/vmlinuz-3.10.0-514.e17.x86 _64"에 있습니다.
总结:把内核和镜像文件系统加载到内存中
- Init 프로세스 초기화
추가 시스템 부팅 프로세스를 완료하기 위해 Linux 커널은 먼저 시스템의 "/ sbin / init"프로그램을 실행할 메모리에로드하고 (실행중인 프로그램을 프로세스라고 함) init 프로세스가 전체 시스템의 초기화를 완료하고 마지막으로 사용자가 로그인 할 때까지 기다리십시오.
总结:加载硬件驱动程序,内核把init进程加载到内存中运行
2. 시스템 초기화 과정
2.1 초기화 프로세스
- Linux 커널에서 / sbin / init 프로그램로드 및 실행
- oinit 프로세스는 시스템의 첫 번째 프로세스이며 모든 프로세스의 상위 프로세스입니다.
- 초기화 프로세스의 PID (프로세스 ID) 번호는 항상 1입니다.
2.2 시스템
- Systemd는 Linux 운영 체제의 초기화 소프트웨어입니다.
- CentOS7은 새로운 Systemd 시작 방법을 사용하여 기존 SysVinit를 대체합니다.
- CentOS7에서 실행되는 첫 번째 init 프로세스는 / lib / systemd / systemd입니다.
传统SyaVinit依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢
systend能够将更多的服务进程并行启动。井且具有揭供按需启动服务的能力。使得启动更少进程。从而提高系统启动速度。
2.2.1 시스템 단위 유형
단위 유형 | 확장명 | 기술 |
---|---|---|
서비스 | .서비스 | 시스템 서비스 설명 |
소켓 | .소켓 | 프로세스 간 통신을위한 소켓 설명 |
장치 | .장치 | 커널이 인식하는 장치 파일 설명 |
산 | .산 | 파일 시스템의 마운트 지점 설명 |
자동 마운트 | .automount | 파일 시스템의 자동 마운트 지점 설명 |
교환 | .교환 | 메모리 스왑 장치 또는 스왑 파일 설명 |
통로 | .통로 | 파일 시스템의 파일 또는 디렉토리 설명 |
시간제 노동자 | .시간제 노동자 | 설명-타이머 (cron과 유사한 스케줄링 작업을 구현하는 데 사용됨) |
스냅 사진 | .스냅 사진 | systemd의 상태를 저장하는 데 사용됩니다. |
범위 | .범위 | 계층 적 조직을 통해 Cgroup 그룹에 상주하는 관리 시스템의 프로세스를 설명합니다. |
일부분 | .일부분 | 계층 적 조직을 통해 Cgroup 그룹에 상주하는 관리 시스템의 프로세스를 설명합니다. |
표적 | .표적 | 시스템 단위 세트 설명 |
2.2.2 실행 수준에 해당하는 시스템 대상
실행 수준 | Systemd 的 target | 기술 |
---|---|---|
0 | 표적 | 종료 상태,이 수준을 사용할 때 호스트가 종료됩니다. |
1 | rescue.target | 단일 사용자 모드, 암호 확인없이 시스템에 로그인 할 수 있으며 주로 시스템 유지 관리에 사용됩니다. |
2 | multi-user.target | 사용자 정의 / 도메인 특정 실행 수준. 기본값은 3과 같습니다. |
삼 | 다중 사용자 .targett | 문자 인터페이스가있는 전체 다중 사용자 모드, 대부분의 서버 호스트는이 수준에서 실행됩니다. |
4 | multi-user.target | 사용자 정의 / 도메인 특정 실행 수준. 기본값은 3과 같습니다. |
5 | graphic.target | 그래픽 인터페이스의 다중 사용자 모드는 그래픽 데스크탑 운영 환경을 제공합니다. |
6 | reboot.target | 다시 시작하면이 수준을 사용할 때 호스트가 다시 시작됩니다. |
3. MBR 섹터 오류 복구
3.1 실패의 원인
- 바이러스, 트로이 목마 등으로 인한 피해
- 잘못된 파티션 작업, 디스크 읽기 및 쓰기 오류
3.2 실패 현상
- 부팅 프로그램을 찾을 수 없습니다. 시작이 중단되었습니다.
- 운영 체제를로드 할 수 없음, 부팅 후 검은 색 화면
3.3 솔루션
- 백업 파일은 미리 만들어야합니다.
- 설치 CD로 비상 모드로 부팅
- 백업 파일에서 복원
3.4 MBR 섹터 오류 시뮬레이션
- 먼저 새 하드 드라이브 추가
- 새 파티션
- 체재
- 산
- 지원
- "dd if = / dev / sda of = / backup / mbr.bak bs = 512 count = 1"명령을 입력하여 sda의 첫 번째 섹터의 mbr 데이터를 새로 생성 된 백업 디렉토리로 백업합니다.
- "dd if = / dev / zero of = / dev / sda bs = 512 count = 1"명령을 사용하여 sda 파괴를 시뮬레이션합니다.
- init 6 명령을 사용하여 다시 시작
- 이때 정상적으로 시스템에 들어 가지 못하고 설치 인터페이스로 들어 왔습니다.
- 여기에서 "문제 해결"을 선택하여 비상 모드로 들어갑니다.
- 1을 입력하여 계속을 선택하고 Enter를 누르십시오.
- Enter 키를 다시 눌러 "sh-4.2 #"프롬프트로 Bash Shell 환경으로 들어갑니다.
mkdir /backupdir
sh-4.2# mount /dev/sdb1 /backupdir————挂载带有备份文件的分区
sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda bs=512 count=1————复备份数据
sh-4.2# exit————执行exit命令退出临时Shell环境,系统将会自动重启
- 시스템이 다시 시작되면 정상으로 확인되며 시스템에 정상적으로 진입 할 수 있습니다.
네, GRUB 부팅 실패 복구
4.1 실패 원인
- MBR의 GRUB 활 | 가이드 프로그램이 파괴됨
- grub.conf 파일이 누락되었으며 부팅 구성이 올바르지 않습니다.
4.2 실패 현상
- 시스템 부팅이 중단되고 "grub>"프롬프트가 표시됨
4.3 솔루션
- 수동으로 부팅 명령을 입력하십시오.
- 비상 모드로 들어가 백업에서 grub.conf를 다시 쓰거나 복원하십시오.
- GRUB 프로그램을 MBR 섹터로 다시 빌드하십시오.
4.4 GRUB 부팅 실패 시뮬레이션
- / boot 디렉토리를 입력하십시오.
- grub2를 찾은 다음 grub2를 입력합니다.
- grub.cfg 파일을 삭제하여 /boot/grub2/grub.cfg 파일 손실 및 GRUB 부팅 실패시 잘못된 부팅 구성을 시뮬레이션합니다.
- 다시 시작하려면 reboot 명령을 사용하십시오.
- 다시 시작하면이 인터페이스로 들어갑니다.
(가이드 인터페이스 진입 방법)
- 가상 머신을 마우스 오른쪽 버튼으로 클릭합니다.
- 힘을 선택하십시오
- 가상 머신을 다시 시작하려면 선택하고 다시 시작한 후 즉시 "ESC"를 클릭합니다 (손 속도를 테스트하는 것과 비교하여 손 속도가 느리고 들어갈 수 없음).
- 부팅 인터페이스에 들어갈 수없는 경우 시작 우선 순위 옵션을 CD 우선 순위로 변경할 수 있습니다 ( "+"위치 조정, f10 저장 및 종료).
- 비상 모드로 들어가, centos 시스템 복원
- 나머지 작업은 Bash Shell 환경에 입력 된 명령이 다르다는 점을 제외하고 첫 번째 실험 단계와 동일합니다.
- 명령은 다음과 같습니다.
chroot /mnt/sysimage ——————切换到系统根环境
grub2-install /dev/sda ——————重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区
grub2-mkconfig -o /boot/grub2/grub.cfg ——————重新构建GRUB菜单的配置文件
exit ——————退出chroot 环境,并重启
reboot ——————重启
- 다시 시작이 완료되면 시스템 인터페이스로 들어갈 수 있습니다.
다섯, 루트 사용자 암호를 잊어 버려
5.1 실패의 원인
- 루트 사용자의 비밀번호를 잊어 버렸습니다.
5.2 오작동
- 루트 권한이 필요한 관리 작업을 수행 할 수 없습니다.
- 사용 가능한 다른 계정이없는 경우 시스템에 로그인 할 수 없습니다.
5.3 솔루션
비상 모드 진입, 비밀번호 재설정
5.4 잊어 버린 루트 사용자 암호 시뮬레이션
비상 모드로 들어간 후 이전 작업 프로세스를 따르고 다음 명령을 입력하여 비밀번호를 재설정하십시오.
chroot /mnt/sysimage ——————切换到系统根环境
passwd root ——————修改管理员账号密码
exit ——————退出
6. 시스템 서비스 제어
6.1 시스템 서비스 제어
systemctl 控制类型 服务名称
6.2 제어 유형
시작 : 시작
중지 : 중지
다시 시작 : 다시 시작 다시
로드 : 다시로드
상태 : 서비스 상태보기
일곱, 리눅스 시스템의 운영 수준
7.1 실행 수준보기
- runlevel 명령 (스위치 실행 수준과 현재 실행 수준 만 볼 수 있음)
- systemctl 도구 (systemctl get-default-view 시스템 기본 실행 수준)
7.2 일시적으로 실행 수준 전환
init 0 systemctl isolate poweroff.target systemctl poweroff
init 1 systemctl isolate rescue.target
init 3 systemctl isolate multi-user.target
init 5 systemctl isolate graphical.target
init 6 systemctl isolate reboot.target systemctlreboot reboot
7.3 영구 실행 수준 설정
In-sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
systemctl set-default multi-user.target
8. 시스템 서비스 시작 및 제어
8.1 시스템 서비스의 시작 상태보기
systemctl is-enabled 服务名称
8.2 서비스 이름은 시스템 서비스의 시작 상태를 설정합니다.
systemctl enable 服务名称——————开启开机自启动
systemct disable 服务名称——————关闭开机自启动