第八章 引導過程與服務控制
文章目錄
一、Linux操作系統引導過程
1.1、開機自檢
服務器主機開機以後,將根據主板BIOS中的設置對CPU(Central Processing Unit,中央處理器)、內存、顯卡、鍵盤等硬件設備進行初步檢測,檢測成功後根據預設的啓動順序移交系統控制權,大多時候會一腳給本機硬盤。
1.2、MBR引導
當從本機硬盤中啓動系統系統時,首先根據硬盤第一個扇區中MBR(Master Boot Record,主引導記錄)的設置,將系統控制權傳遞給包含操作系統引導文件的分區;或者直接根據MBR記錄中的引導信息調用啓動菜單(如GRUB)
1.3、GRUB引導
對於Linux操作系統來說,GRUB(GRand Unified Bootloader,同一啓動加載器)是使用最爲廣泛的多系統引導器程序。系統控制權傳遞給GRUB以後。將會顯示啓動菜單給用戶選擇,並根據所選項(或採用默認值)加載Linux內核文件,然後將系統控制權轉交給內核。需要注意的是,CentOS 7 採用的是GRUB2啓動引導器。
1.4、加載Linux內核
Linux內核時一個預先編譯好的特殊二進制文件,介於各種硬件資源與系統程序之間,負責資源分配與跳讀。內核接過系統控制權以後,將完全掌控整個Linux操作系統的運行過程。在CentOS系統中,默認的內核文件位於“/boot/vmlinunz-3.10.0-514.el7.x86_64”。
1.5、init進程初始化
爲了完成進一步的系統引導過程,Linux內核首先將系統中的“/sbin/init”程序加載到內存中運行(運行中的程序稱爲進程,init進程負責完成一系列的系統初始化過程,最後等待用戶登錄。
二、系統初始化進程
2.1、init進程
由Linux內核加載運行/sbin/init程序
init進程時系統中第一個進程
init進程的PID(進程標記)號永遠是1
2.2、Systemd
Systemd是Linux操作系統的一種init軟件
CentOS 7 中採用全新的System啓動方式,取代傳統的SysVinit
CentOS 7 中運行的第一個init進程是/lib/systemd/systemd
三、Systemd概述
Systemd是Linux操作系統的一種init軟件,CentOS 7 系統中採用了全新的Systemd啓動方式,取代了傳統的SysVinit。Systemd啓動方式使系統初始化時諸多服務並行啓動,大大提高了開機效率。CentOS 7系統中“/sbin/init”時”“/lib/systomd/systemd”的鏈接文件。換言之。CentOS 7 系統中運行的第一個init進程是“/lib/systemd/systemd”。systemd守護進程負責Linux的系統和服務,systemctl用於控制Systemd管理的系統和服務狀態。
3.1、System將其管理的資源組織成各種類型的單元(Unit)
單元類型 | 擴展名 | 說明 |
---|---|---|
Service | .service | 描述一個系統服務 |
Socket | .socket | 描述一個進程間通信的套接字 |
Device | .device | 描述一個內核識別的設備文件 |
Mount | .mount | 描述一個文件系統的掛載點 |
Automount | .automount | 描述一個文件系統的自動掛載點 |
Swap | .swap | 描述一個內存交換設備或交換文件 |
Path | .path | 描述一個文件系統中文件或目錄 |
Timer | .timer | 描述一個定時器(用於實現類似cron的調度任務) |
Snapshot | .snapshot | 用於保存一個systemd的狀態 |
Scope | .scope | 使用systemd的總線接口以編程的方式創建外部進程 |
Slice | .slice | 描述居於Cgroup的一組通過層次組織的管理系統進程 |
target | .target | 描述一組systemd的單元 |
3.2、運行級別所對應的Systemd目標
運行級別 | Systemd的target | 說明 |
---|---|---|
0 | target | 關機狀態,使用該級別時將會關閉主機 |
1 | rescue.target | 單用戶模式,不需要密碼驗證即可登錄系統,多用於系統維護 |
2 | multi-user.target | 用戶定義/域特定運行級別。默認等同於3 |
3 | multi-user.target | 字符界面的完整多用戶模式,大多數服務器主機運行在此級別 |
4 | multi-user.target | 用戶定義/域特定運行級別。默認等同於3 |
5 | graphical.target | 圖形界面的多用戶模式,提供了圖形桌面操作系統 |
6 | reboot.target | 重新啓動,使用該級別時將會重啓主機 |
四、修復MBR扇區故障
MBR位於物理硬盤的第一個扇區(512字節),該扇區又稱爲主引導扇區(MBR扇區),除了包含系統引導程序的部分數據外,還包含整個硬盤的分區表記錄。當主引導扇區發生故障時,將可能無法進入引導菜單,或者因無法找到正確的分區位置而無法加載系統,通過該硬盤引導主機時很可能進入黑屏狀態。
故障原因
病毒、木馬等造成的破壞
不正確的分區操作、磁盤讀寫誤操作
故障現象
找不到引導程序,啓動中斷
無法加載操作系統,開機後黑屏
解決思路
應提前做好備份文件
以安裝光盤引導進入急救模式
從備份文件中恢復
五、修復GRUB引導故障
故障原因
MBR中的GRUB引導程序遭到破壞
grub.conf文件丟失、引導配置有無
故障現象
系統引導停滯,顯示“grub>”提示符
解決思路
嘗試手動輸入引導命令
進入急救模式,重寫或者從備份中恢復grub.conf
向MBR扇區中重建grub程序
六、遺忘root用戶密碼
故障原因
遺忘root用戶的密碼
故障現象
無法進行需要root權限的管理操作
若沒有其他可用賬號,將無法登錄系統
解決思路
進入急救模式,重設密碼
系統服務控制
systemctl 控制類型 服務名稱
控制類型
start:啓動、運行指定的系統服務程序,實現服務功能。
stop:停止、終止指定的系統服務程序,關閉相應的功能。
restart:重新啓動、先退出,再重新運行指定的系統服務程序。
reload:重新加載、不退出服務程序,只是刷新配置。在某些服務中於restart的才做相同。
status:查看服務狀態、查看指定的系統服務的運行狀態及相關信息。
七、Linux系統的運行級別
查看運行級別
runlevel命令—runlevel只能查看切換運行級別與當前運行級別
systemctl工具—systemctl查看默認的運行級別
臨時切換運行級別
init命令—init的命令參數是運行級別所對應的數字
systemctl工具—systemctl的命令參數是具體的target
設置永久運行級別
八、優化啓動過程
Linux才做系統中包含了大量的服務程序,這些服務程序在切換運行級別時根據預設的狀態進行啓動或終止。其中有不少系統服務可能並不是用戶需要的,但是默認也運行了。
ntsysv工具
提供一個交互式、可視化窗口
可以在字符終端運行
便於集中管理多個服務
systemctl工具
不提供交互式、可視化窗口
管理單個服務效率更高
系統中常見的系統服務
服務名稱 | 用途簡介 | 備註 |
---|---|---|
atd | 延期、定時執行任務 | 建議關閉 |
bluetooth | 發現、認證藍牙相關設備 | 建議關閉 |
crond | 按預定週期執行計劃任務 | 建議開啓 |
irqbalance | 多核心cpu處理器的調度支持 | 建議開啓 |
kdump | 記錄內核崩潰時的內存信息 | 建議關閉 |
lvm2-monitor | LVM管理及監控 | 建議開啓 |
netfs | 訪問共享文件夾等網絡文件系統 | 建議開啓 |
network | 配置及使用網卡、網絡地址 | 建議開啓 |
restorecond | SELinux安全機制的文件監控和恢復功能 | 建議關閉 |
rhnsd | 訪問 Red Hat Network,獲取通知、提交訂閱等 | 建議關閉 |
rpcgssd | 管理NFS(Network File System,網絡文件系統)訪問中的客戶程序語境 | 建議關閉 |
saslauthd | 基於文本的身份認證 | 建議關閉 |
smartd | 監控本地磁盤的狀態併發送故障報告 | 建議開啓 |
smb | 文件共享服務 | 建議關閉 |
sshd | 提供遠程登錄和管理Linux主機的功能 | 建議開啓 |
rsyslog | 記錄內核、系統的日誌信息 | 建議開啓 |
vsftpd | 通過FTP(File Transfer Protocol,文件傳輸協議)提供文件上傳、下載功能 | 建議關閉 |
###必須強調,這些服務到底時選擇開啓還是關閉,應根據主機的實際功能需求來定。
九、系統服務的啓動和控制
ntsysv系統服務管理工具
ntsysv
ntsysv --level 級別列表
查看系統服務的啓動狀態
systemctl is-enable 服務名稱
設置系統服務的啓動狀態
systemctl enable/disable 服務名稱