引導過程與服務控制
開機自檢:檢測出第一個能夠引導系統的裝置,比如硬碟或者光碟機
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
單元型別 | 副檔名 | 說明 |
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位於第一塊(/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環境
故障原因
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許可權的管理操作,若沒有其他可用賬號,將無法登入系統
解決思路:進入急救模式,重設密碼
1、進入關盤模式
2、進入急救模式介面
3、選擇1然後點enter繼續
4、切換到系統根環境,並重設root使用者密碼
命令格式:
控制型別
start :啟動
stope:停止
restart:重新啟動
reload:重新載入
status:檢視服務狀態
命令舉例
(1)、檢視防火牆狀態
(2)、關閉防護牆
(3)、開啟防火牆
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) #更改執行級別
檢視系統服務的啟動狀態
設定系統服務的啟動狀態
操作例項