1. 程式人生 > 其它 >引導過程與服務控制

引導過程與服務控制

、Linux作業系統引導過程

二、系統初始化程序

三、Systemd單元型別

四、修復MBR扇區故障

五,修復GRUB引導故障

六、遺忘root使用者密碼

七、系統服務控制

八、Linux系統的執行級別

九、優化啟動過程

十,系統服務的啟動和控制

一、Linux作業系統引導過程

開機自檢:檢測出第一個能夠引導系統的裝置,比如硬碟或者光碟機

MBR引導:執行放在MBR扇區裡的啟動GRUB載入程式

CRUB選單:CRUB載入程式通過讀取CRUB配置檔案/boot/grub2/grub.cfg,來獲取核心和映象檔案系統的設定和路徑位置

載入Linux核心:把核心和映象檔案系統載入到記憶體中

init程序初始化:載入硬體驅動程式,核心把init程序載入到記憶體中執行

二、系統初始化程序

init程序

由Linux核心載入執行/sbin/init程式

init程序是系統中第一個程序,是所有程序的父程序

init程序的PID(程序標記)號永遠為1

Systemd

Systemd是Linux作業系統的一種init軟體

CentOS7中採用全新的Systemd啟動方式,取代傳統的SysVinit

CentOS7中執行的第一個init程序是/lib/systemd/systemd

三、Systemd單元型別

單元型別 副檔名 說明
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的單元

執行級別所對應的Systemd目標

執行級別 Systemd的target 說明
0 target 關機狀態,使用該級別時將會關閉主機
1 rescue.target 單使用者模式,不需要密碼驗證即可登入系統,多用於系統維護
2 multi-user.target 使用者定義/域特定執行級別,預設等同於3
3 multi-user.target 字元介面的完整多使用者模式,大多數伺服器主機執行在此級別
4 multi-user.target 使用者定義/域特定執行級別。預設等同於3
5 graphical.multi-user.target 圖形介面的多使用者模式,提供了圖形桌面作業系統
6 reboot.multi-user.target 重新啟動,使用該級別時將會重啟主機

四、修復MBR扇區故障

故障原因:

病毒、木馬等造成的破壞

不正確的分割槽操作、磁碟讀寫誤操作

故障現象:

找不到載入程式,啟動中斷

無法載入作業系統,開機後黑屏

解決思路:

應提前作好備份工作

以安裝光碟引導進入急救模式

從備份檔案中恢復

下面我們來做修復MBR扇區故障的實驗

MBR位於第一塊(/dev/sda)的第一個物理扇區處,總共512位元組

1、備份MBR扇區資料到其他磁碟(/dev/sdb1)

mkfs -t xfs /dev/sdb             ##分割槽格式化
mkdir /data                      ##建立目錄
mount /dev/sdb1/data             ##掛載
dd if=/dev/sda of=/dev/sda bs=512 count=1  ##從sda目錄中提取到掛載的目錄

2、模擬破壞MBR引導扇區

dd if=/dev/zero of=/dev/sda/  bs=512  count=1 ##從空字元裝置中提取檔案到sda

3、引導介面進入急救模式,從備份中恢復MBR扇區資料,先載入好光碟映象,重啟作業系統,

當出現安裝嚮導介面時,選擇“Troubleshooting”選項,在選擇“Rescue a CentOS Linux system”選項,進入急救模式,選擇“1”,選擇Continue並按Enter鍵繼續

再次按Enter鍵後將進入帶“sh-4.2#”提示符的Bash Shell環境

sh-4.2# mkdir /backupdir  
sh-4.2# mount /dev/sdb1 /backupdir  #掛載帶有備份檔案的分割槽
sh-4.2# dd -if=/backupdir/mbr.bak of=/dev/sda  #恢復備份資料
sh-4.2# exit   #執行exit命令退出零食shell環境,系統將會自動啟動

實驗操作如下

建立一個新的磁碟,並格式化

建立目錄並掛載

模擬破壞MBR引導扇區,並重啟

出現安裝嚮導介面時,選擇“Troubleshooting”選項

在選擇“Rescue a CentOS Linux system”選項,進入急救模式

選擇“1”,選擇Continue並按Enter鍵繼續

按Enter鍵後將進入帶“sh-4.2#”提示符的Bash Shell環境

五,修復GRUB引導故障

故障原因
MBR中的GRUB弓|導程式遭到破壞。
grub.conf檔案丟失、引導配置有誤。

故障現象

系統引導停滯,顯示“grub>” 提示符。

解決思路
嘗試手動輸入引導命令。
進入急救模式,重寫或者從備份中恢復grub.conf。
向MBR扇區中重建grub程式。

步驟如下

/boot/grub/目錄下的包時用於啟動選單的背景圖片及樣式

/boot/grub2/grub.cfg #CRUB配置檔案

方法一:手動輸入引導命令(笨拙繁瑣,不建議使用)

grub> insmod xfs     ##載入指定的模組到核心
grub> linux16 /Vmlinuz-3.10.0-693.e17.x86_64 root=UUID=8fd74986-ae66-4ffd-
b7d8-19f2eca7b6f ro rhgb quiet LANG=zh_CN.UTF-8 #核心的名字及位置等資訊
grub> initrd16 /initramfs-3.10-693.el7.x86_64.img  #映象系統檔案
grub> boot   #引導boot

方法二:進入急救模式,恢復GRUB載入程式

MBR位於第一塊硬碟( /dev/sda)的第一-個物理扇區處,總共512位元組, 前446位元組是主引導記錄,分割槽表儲存在MBR扇區中的第447-510位元組中。

1、備份資料

mkdir /bak
mount /dev/sdb1 /bak
dd if=/dev/zero of=/dev/sda bs=446 count=1

2、模擬對MBR中的GRUB載入程式的破壞,但並不破壞分割槽表

dd if /dev/zero of=/dev/sda bs=446 count=1

3、引導介面進入急救模式,從備份檔案中恢復GRUB載入程式

sh-4.2#  mkdir /backupdir
sh-4.2#  mount /dev/sdb1 /backupdir
sh-4.2#  dd if=/backupdir/grub.bak of=/dev/sda
sh-4.2#  exit

方法三:引導介面進入急救模式,重建GRUB選單配置檔案

1.刪除GRUB的配置檔案,並重啟

2、進入光碟模式

3、在進入急救模式。

4、選擇1繼續,然後按兩下Enter鍵

3、切換到系統根環境並重新將GRUB載入程式安裝到第一塊硬碟(/dev/sda)的MBR扇區,如果有多個分割槽可省略,重新構建GRUB選單的配置檔案,退出chroot 環境,並重啟

六、遺忘root使用者密碼

故障原因:遺忘root使用者的密碼

故障現象:無法進行需要root許可權的管理操作,若沒有其他可用賬號,將無法登入系統

解決思路:進入急救模式,重設密碼

1、進入關盤模式

2、進入急救模式介面

3、選擇1然後點enter繼續

4、切換到系統根環境,並重設root使用者密碼

七、系統服務控制

命令格式:

控制型別

start :啟動

stope:停止

restart:重新啟動

reload:重新載入

status:檢視服務狀態

命令舉例

(1)、檢視防火牆狀態

(2)、關閉防護牆

(3)、開啟防火牆

八、Linux系統的執行級別

1、檢視執行級別

runlevel命令,只能檢視切換執行級別與當前執行級別

systemctl工具,能檢視預設的執行級別

2、臨時切換執行級別:

init命令,引數是執行級別所對應的數字

systemctl工具,引數是具體的target

init與systemctl的對應關係是

init 0       systemctl isolate poweroff.target     #代表關機
           或 systemctl poweroff 或 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        #重啟
              或 systemctl reboot 或 reboot

3、設定永久執行級別

建立軟連結的方法

通過軟連結的方式

或直接修改

九、優化啟動過程

ntsysv工具

提供一個互動式、視覺化視窗

可以在字元終端執行

便於集中管理多個服務

用於控制服務是否開機自啟動

進入下面介面,按上下鍵選擇服務,空格鍵選擇開啟或關閉,tab鍵切換確認或取消

systemctl /chkconfig工具

不提供互動式、視覺化視窗

管理單個服務效率更高

chmod +x 指令碼     #給指令碼許可權可執行
chkconfig --add 服務   #把服務加進去
chkconfig --list  服務   #進行管理服務
chkconfig --level 執行級別 服務 off(on) #更改執行級別

十,系統服務的啟動和控制

檢視系統服務的啟動狀態

設定系統服務的啟動狀態

操作例項