CentOS7的啟動流程
POST–>Boot Sequence–>Bootloader–>kernel+initramfs(initrd)–>rootfs–>/sbin/init
init:
CentOS5:SysV init
CentOS6:Upstart
CentOS7:Systemd
Systemd:系統啟動和服務器守護進程管理器,負責在系統啟動或運行時,激活系統資源,服務器進程和其他進程
Systemd新特性:
系統引導是實現服務并行啟動
按需啟動守護進程
系統狀態快照
自動化的服務依賴關系
核心概念:unit
unit表示不同類型的systemd對象,通過配置文件進行標識和配置,文件中主要包含了系統服務,監聽socket,保存的系統快照以及其他與init相關的信息
配置文件:
/usr/lib/systemd/system:每個服務最主要的啟動腳本設置,類似于之前的/etc/init.d/
/run/systemd/system:系統執行過程中產生的服務腳本,比上面目錄優先運行
/etc/systemd/system:管理員建立的執行腳本,類似于/etc/rc.d/rcN.d/Sxx類的功能,比上面的優先級高
UNIT類型:
Systemctl -t help 查看unit類型
Service unit:文件擴展名.service 用于定義系統服務
Target unit:文件擴展名.target 用于模擬實現運行級別
Device unit: .device 用于定義內核識別的設備
Mount unit: .mount 定義文件系統的掛載點
Socket unit: .socket 用于標識進程間通行用的socket文件,也可在系統啟動時,延遲啟動服務,實現按需啟動
Snapshot unit: .snapshot 管理系統快照
Swap unit: .swap 用于標識swap設備
Automount unit: .automount 文件系統的自動掛載點
Path unit: .path 用于定義文件系統中的一個文件或目錄使用,常用于當文件系統變化時,延遲激活服務,如spool目錄
特性:
關鍵特性:
基于socket的激活機制:socket與服務程序分離
基于d-bus的激活機制:系統進程間通信的一種機制 desktop-bus
基于device的激活機制
基于path的激活機制
系統快照:保存個unit的當前狀態信息于持久存儲設備中向后兼容sysv init腳本
不兼容:
systemctl命令固定不變,不可擴展
非有systemd啟動的服務,systemctl無法與之通信和控制
系統服務管理:
CentOS7:service unit 注意:能兼容早期的服務腳本
命令:systemctk Command name.service
啟動:systemctl name start –> systemctl start name.service
停止:systemctl name stop –> systemctl stop name.service
重啟:systemctl name restart –> systemctl restart name.service
狀態:systemctl name status –> systemctl status name.service
條件式重啟:以啟動才重啟,否則不做任何操作
service name condrestart –> systemctl try-restart name.service
重載或重啟服務:先加載,再啟動
systemctl reload-or-restart name.service
重載或條件式重啟服務:
systemctl reload-or-try-restart name.service
禁止自動和手動啟動:
systemctl mask name.service
取消禁止:
systemctl unmask name.service
服務查看
查看某服務當前激活與否的狀態:
systemctl is-active name.service
查看所有已經激活的服務
systemctl list-units –type service
查看所有服務
systemctl list-units –type service -all
chkconfig命令的對應關系:
設定某服務開機自啟:
chkconfig name on –> systemctl enable name.service
設定某服務開機禁止啟動:
chkconfig name off –> systemctl disable name.service
查看所有服務開機的自啟狀態:
chkconfig –list –> systemctl list-unit-files –type service
查看服務是否開機自啟:
systemctl is-enable name.service
其他命令:
查看服務的依賴關系:
systemctl list-dependencies name.service
殺掉進程:
systemctl kill 進程名
服務狀態:
systemctl list-units –type service –all顯示狀態
loaded:Unit配置文件已處理
active(runinng):一次或多次持續處理的運行
active(exited):成功完成一次性的配置
active(waiting):運行中,等待一個事件
inactive:不運行
enabled:開機啟動
disabled:開機不啟動
static:開機不啟動,但可被另一個啟用的服務激活
運行級別:
unit配置文件: .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
級別切換;
init N –> systemctl isolate name.target
只有/lib/systemd/system/*.target文件中AllowIsolate=yes才能切換(修改文件需執行systemctl daemon-reload才能生效)
查看target:
runlevel
systemctl list-units –type target
systemctl list-units –type target –all
獲取默認運行級別:
/etc/inittab–> systemctl get-default
修改默認級別:
/etc/inittab –> systemctl set-default name.target
其他命令:
切換至緊急救援模式:
systemctl rescue
切換至emergency模式:
systemctl emergency
關機:
systemctl halt/poweroff
重啟:
systemctl reboot
掛起:
systemctl suspend 數據還保存在內存中
休眠:
systemctl hibernate 數據寫入磁盤
休眠并掛起
systemctl hybri-sleep
CentOS7引導順序
UEFI或BIOS初始化,運行POST開機自檢
選擇啟動設備
引導裝載程序,CentOS7是grub2
加載裝載程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg
加載initramfs驅動模塊
加載內核選項
內核初始化,CentOS7使用systemd代替init
執行initrd.target所有單元,包括掛載/etc/fstab
從initramfs根文件系統切換到磁盤根目錄
systemd執行默認target配置
其配置文件:/etc/systemd/system/default.target /etc/systemd/system/
內核參數設置:
設置內核參數,只影響當次啟動
啟動時,在linux16行后添加systemd.unit=desired.target
system.unit=emergency.target
system.unit=recure.target
recure.target比emergency支持更多的功能,日志等
啟動排錯:
文件系統損壞:
先嘗試自動修復,失敗則進入emergency shell,提示用戶修復
在/etc/fstab不存在對應設備的UUID等一段時間,如不可用,進入emergency shell
在/etc/fstab不存在對應的掛載點,systemd嘗試創建掛載點,否則提示進入emergency shell
在/etc/fstab不正確的掛載選項,提示進入emergency shell
破解root口令:
按e進入編輯模式
將光標移至linux16行尾,添加內核參數rd.break
按ctrl+x啟動
重新掛載根文件系統mount -o remount,rw /sysroot
切換當前的工作環境至/sysroot:chroot /sysroot
passwd root
touch /.autorelabel重新打標簽
修復Grub2
引導時進入可以使用命令行的界面
可從文件系統引導
只要配置文件/boot/grub2/grub.cfg
修復配置文件
grub-mkconfig> /boot/grub2/grub.cfg
修復grub
grub2-install /dev/sda BIOS環境
grub2-install UEFI環境
原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/48130
文章對systemd的相關知識總結的很詳細,截圖說明也很直觀。