引導過程與服務控制
引導過程與服務控制
一、Linux操作系統引導過程
二、排除啟動類故障
三、服務控制及切換運行級別
四、優化啟動過程
Linux操作系統引導過程
1、服務器主機開機以後,將根據主板BIOS的設置對CPU、內存、顯卡、鍵盤等設備進行初步檢測,檢測成功後根據預設的啟動順序移交系統控制權,大多時候會移交給本機硬盤。總結;檢查出第一個能引導系統的設備,比如硬盤或者光驅
2.MBR引導
當從本機硬盤中啟動系統時,首先根據硬盤第一個扇區中MBR(主引導記錄)的設置,將系統控制權 遞給包含操作系統引導文件的分區;或者直接根據MBR記錄中的引導信息調用啟動菜單(如GRUB)
總結;運行放在MBR扇區裏的啟動GRUB引導程序
3.GRUB菜單
對於Linux操作系統來説,GRUB(統一啟動加載器)是使用最為廣泛的多系統引導器程序。系統控制傳遞給GRUB以後,將會顯示啟動菜單用户選CentOS7採用的是GRUB2啟動引導器。
總結;GRUB引導程序通過讀取GRUB配置文件/boot/grub2/grub.cfg,來獲取內核鏡像文件系統的設置和路徑位置
4.加載Linux內核
Linux內核的一個預先編譯好多特殊二進制文件,介於各種硬件資源與系統程序之間,負責資源分配與調度。內核接過系統控制權以後,將完全掌控真個Linux操作系統的運行過程。
CentOS7系統中,默認的內核文件位於"/boot/vmlinuz-3.10.0-514.e17.x86_64"。
總結;把內核和鏡像文件系統加載到內存中
5.init進程初始化
為了完成進一步的系統引導過程,Linux內核首先將系統中的"/sbin/init"程序加載到內存中運行(運行中的程序成為進程),init進程負責完成整個系統的初始化,最後等待用户進行登錄。
總結;加載硬件啟動程序,內核把init進程加載到內存中運行
傳統SysVint依賴串行執行shell腳本啟動服務,導致效率低下,系統啟動速度較慢
systemd能夠將更多的服務進程並行啟動,並且具有提供按需啟動服務的能力,是的啟動更少進程,從而提高系統啟動速度。
系統初始化進程
init進程
由Linux內核加載運行/sbin/init程序
init進程是系統中第一個進程,是所有進程的父進程
init進程的PID(進程標記)號永遠為1
Systemd
Systemd是Linux操作系統的一種init軟件
CentOS7中採用全新的Systemd啟動方式(並行啟動服務進程),取代傳統的SysVinit(串行運行shell腳本進行啟動)
CentOS7中運行的第一個init進程是/lib/systemd/systemd
Systemd單元類型
單元類型 | 擴展名 | 説明 |
---|---|---|
Service | .service | 描述一個系統服務 |
Socket | .socket | 描述一個進程間通信的套接字 |
Device | .device | 描述一個內核識別的設備文件 |
Mount | .mount | 描述一個文件系統的掛載點 |
Automount | .automount | 描述一個文件系統的自動掛載點 |
Swap | .swap | 描述一個內存交換設備或交換文件 |
Path | .path | 描述一個文件系統中文文件或目錄 |
Timer | .timer | 描述一個一個定時器(用於實現類似sron的調度任務) |
Snapshot | .snapshot | 用於一個systemd的狀態 |
Scope | .scope | 使用systemd的總線接口以編程的方式創建外部進程 |
Slice | .slice | 描述居於Cgroup的一組通過層次組織的管理系統進程 |
Target | .target | 描述一組systemd的單元 |
運行級別所對應的Systemd目標
運行級別 | Systemd的tardet | 説明 |
---|---|---|
0 | target | 關機狀態,使用該級別時將會關閉主機 |
1 | rescue.target | 單用户模式,不需要password驗證即可登錄系統,多用於系統維護 |
2 | multi-user.target | 用户定義/域特定運行級別。默認等同於3 |
3 | multi-user.target | 字符界面的完整多用户模式,大多數據服務器主機運行在此級別 |
4 | multi-user.target | 用户定義/域特定運行級別。默認等同於3 |
5 | graphical.target | 圖形界面的多用户模式,提供了圖形左面操作環境 |
6 | reboot.target | 重新啟動,使用該級別時將會重啟主機 |
修復MBR扇區故障
故障原因
惡意程序、等造成的破壞
不正確的分區操作、磁盤讀寫誤操作
故障現象
找不到引導程序、啟動中斷
無法加載操作系統、好幾黑屏
解決思路
應提前做好備份文件
以安裝光盤引導進入急救模式
從備份文件中恢復
排除啟動類故障
修復MBR扇區故障
MBR位於
修復GRUB引導故障
故障原因
MBR中的GRUB引導程序遭到破壞
grub.conf文件丟失。引導配置有誤
故障現象
系統引導停滯,顯示"grub>"提示符
解決思路
嘗試手動輸入應道命令
進入緊急模式,重寫或者從備份中恢復grub.conf
向MBR扇區中重建grub程序
系統服務控制
systemctl控制類型 服務名稱
控制類型
start:啟動
stop:停止
restart:重新啟動
reload:重新加載
status:查看服務狀態 等等
查看系統的運行級別
runlevel命令(runlevel只能查看切換運行級別與當前運行級別systemctl時能查看默認的運行級別)
systenclt工具
臨時切換運行級別
init命令
ntsysv工具
提供交互式、可視化窗口
可以在字符終端運行
便於集中管理多個服務
用於控制服務是否開機自啟動
systemctl/chkconfig工具
不提供交互式、可視化窗口
管理的那個服務效率高a
- 如何守護數據安全? 這裏有一份RDS災備方案為你支招
- 本案例將使用YOLOX、SCNet兩個模型,實現一個簡單的隔空作畫趣味應用
- 跟我學Python圖像處理丨何為圖像的灰度非線性變換
- 響應式網頁製作的一種方法(3)
- 首先要學習什麼:Docker 還是 Kubernetes?
- 數據湖架構及概念簡介
- (6)Flink CEP SQL模擬賬號短時間內異地登錄風控預警
- 壓測實踐:ClickHouse與Elasticsearch
- Python自學教程7-字典有哪些常用操作
- 軟件測試之如何提升產品的用户體驗度
- Kubernetes資源編排系列之五: OAM篇
- 測試右移-後台服務監控吿警實踐
- ModelBox開發體驗:使用YOLOv3做口罩檢測
- 延時任務(三)-基於redis zset的完整實現
- 【濾波跟蹤】基於自適應UKF和UKF算法實現運動剛體的位姿估計附matlab代碼
- 高數_第3章重積分_在極座標下計算二重積分
- 延時任務-基於netty時間輪算法實現
- Python圖像處理丨基於OpenCV和像素處理的圖像灰度化處理
- ?快速搞懂Mysql中BufferPool底層原理?
- SpringBoot系列教程之定義接口返回類型的幾種方式