Linux引導程序與服務控制
- 一、Linux作業系統引導程序
- 1.1 引導程序圖解
- 1.2 引導程序詳解
- 1.3 系統初始化行程
- 1.4 Systemd 單元型別
- 1.5 運行級別所對應的Systemd 目標
- 二、排除啟動類故障
- 2.1 修復MBR扇區故障
- · 故障原因
- · 故障現象
- · 解決思路
- · 實驗:修復MBR扇區的具體步驟
- 2.2 修復GRUB引導故障
- · 故障原因
- · 故障現象
- · 解決思路
- · 實驗:修復GRUB引導故障的具體步驟
- 方法一:手動修復
- 方法二:進入急救模式,恢復GRUB引導程式
- 方法三:引導界面進入急救模式,重建GRUB選單組態檔
- 2.3 遺忘root用戶密碼
- · 故障原因
- · 故障現象
- · 解決思路
- · 實驗:遺忘root用戶密碼并重設的具體步驟
- 三、服務控制及切換運行級別
- 3.1 系統服務控制
- 3.1.1 格式
- 3.1.2 控制型別
- 3.1.3 實體:查看network狀態
- 3.2 查看運行級別
- 3.2.1 runlevel 命令
- 3.2.2 systemctl 命令
- 3.3 臨時切換運行級別
- 3.3.1 init 命令
- 3.3.2 systemctl 命令
- 3.4 設定永久運行級別
- 方法一:
- 方法二:
- 四、優化Linux啟動程序(開機自啟)
- 4.1 ntsysv工具
- 4.2 systemctl/ chkconfig工具
一、Linux作業系統引導程序
1.1 引導程序圖解

1.2 引導程序詳解
- 開機自檢:檢測出第一個能夠引導系統的設備,比如硬碟或者光驅,
服務器主機開機以后,將根據主板BIOS中的設定對CPU、記憶體、顯卡、鍵盤等設備進行初步檢測,檢測成功后根據預設的啟動順序移交系統控制權,大多時候會移交給本機硬碟,因為作業系統一般都是裝在硬碟內, - MBR 引導:運行放在MBR扇區里的啟動GRUB引導程式,
當從本機硬碟中啟動系統時,首先根據硬碟第一個扇區中MBR(主引導記錄)的設定,將系統控制權傳遞給包含作業系統引導檔案的磁區;或者直接根據MBR記錄中的引導資訊呼叫啟動選單,例如:GRUB等 - GRUB 選單:GRUB引導程式通過讀取GRUB組態檔/boot/grub2/grub.cfg,來獲取內核和鏡像檔案系統的設定以及路徑位置,
對于Linux作業系統來說,GRUB(統一啟動加載器)是使用最為廣泛的多系統引導器程式,系統控制權傳遞給FRUB以后,將會顯示啟動選單給用戶選擇,并根據所選項(或采用默認值)加載Linux內核檔案,然后將系統控制權轉交給內核,
(CentOS 7采用的是GRUB2啟動引導器) - 加載Linux內核:把內核和鏡像檔案系統加載到記憶體中,
Linux內核是一個預先編譯好的特殊二進制檔案,介于各自硬體資源與系統程式之間,復制資源分配與調度,內核接過系統控制權以后,將完全掌控整個Linux作業系統的運行程序,
(CentOS 7系統中,默認的內核檔案位于“/boot/vmlinuz-3.10.0-514.e17.x86_64”) - init 行程初始化:加載硬體驅動程式,內核把init行程加載到記憶體中運行,
為了完成進一步的系統引導程序,Linux內核首先將系統中的“/sbin/init”程式加載到記憶體中運行(運行中的程式稱為行程),init行程負責完成整個系統的初始化,最后等待用戶進行登錄,
1.3 系統初始化行程
-
init 行程
- 由Linux內核加載運行/sbin/init程式;
- init行程是系統中第一個行程,是所有行程的父行程;
- init行程的IPD(行程標記)號永遠為1.
-
Systemd
- Systemd是Linux作業系統的一種init軟體;
- CentOS 7中采用權限的Systemd(并行啟動服務行程)啟動方式,取代傳統的SysVinit(串行執行shell腳本啟動服務);
- CentOS 7中運行的第一個 init行程是/lib/systemd/systemd
1.4 Systemd 單元型別
| 單元型別 | 擴展名 | 說明 |
|---|---|---|
| Service | . service | 描述一個系統服務 |
| Socket | .socket | 描述一個行程間通信的套接字 |
| Device | .device | 描述一個內核識別的設備檔案 |
| Mount | .mount | 描述一個檔案系統的掛載點 |
| utomount | .automount | 描述一個檔案系統的自動掛載點 |
| Swap | .swap | 描述一個記憶體交換設備或交換檔案 |
| Path | .path | 描述一個檔案系統中檔案或目錄 |
| Timer | .timer | 描述一個定時器(用于實作類似cron的調度任務) |
| Snapshot | .snapshot | 用于保存一個systemd的狀態 |
| Scope | .scope | 使用systemd的總線介面以編程的方式創建外部行程 |
| Slice | .slice | 描述居于Cgroup的一-組通過層次組織的管理系統行程 |
| Target | .target | 描述一組systemd的單元 |
1.5 運行級別所對應的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 | 重新啟動,使用該級別時將會重啟主機 |
二、排除啟動類故障
2.1 修復MBR扇區故障
· 故障原因
- 病毒、木馬的等造成的破壞;
- 不正確的磁區操作、磁盤讀寫誤操作等,
· 故障現象
- 找不到引導程式,啟動中斷;
- 無法加載作業系統,開機后黑屏,
· 解決思路
- 準備添加另一塊硬碟作為備份;
- 應提前做好備份檔案;(MBR位于第一塊硬碟的第一個物理扇區處,總共512位元組)
- 以安裝光碟引導進入急救模式;
- 從備份檔案中恢復,
· 實驗:修復MBR扇區的具體步驟
-
添加新硬碟并進行磁區、格式化然后掛載,
具體步驟可以參考此篇博客第三段:磁盤管理的檢測并確認新硬碟

對磁盤進行磁區格式化:

新建目錄,掛載磁盤并查看

-
備份MBR扇區資料到其他磁盤

-
模擬破損的MBR引導扇區

-
引導界面進入急救模式,恢復MBR扇區資料
重啟后發現無法正常進入系統了,選擇第三項進入急救模式





2.2 修復GRUB引導故障
· 故障原因
- MBR中的GRUB引導程式(1-446位元組)遭到破壞
- grub.cfg檔案丟失,引導配置有誤,檔案位置
/boot/grub2/grup.cfg
· 故障現象
- 系統引導停滯,顯示
grub >提示符
· 解決思路
- 1.嘗試手動輸入引導命令修復(不推薦)
- 2.進入急救模式,重寫或者從備份中恢復grub.cfg
- 3.急救模式向MBR扇區中重建grub程式
· 實驗:修復GRUB引導故障的具體步驟
方法一:手動修復
在頁面中的grub >后面輸入下列引導命令即可,
grub> insmod xfs
grub> linux16 /vmlinuz-0-rescue-73d7ede256a74b0e975e69f22d862090 root=UUID=d069b243-6623-4983-8d61-3ec6956a4f2b ro rhgb quiet
grub> initrd16 /initramfs-0-rescue-73d7ede256a74b0e975e69f22d862090.img
grub> boot
方法二:進入急救模式,恢復GRUB引導程式
MBR位于第一塊硬碟( /dev/sda)的第一個物理扇區處,總共512位元組, 前446位元組是主引導記錄,磁區表保存在MBR扇區中的第447-510位元組中,
此方法跟修復MBR基本一致,只是備份的資料只需要446位元組就可以,將bs=512修改為bs=446即可,這里我寫一下大致步驟,就不詳細貼圖了,
1.創建新目錄用以掛載備份磁盤,備份GRUB引導程式
[root@cheng0307 ~]# mkdir /bak
[root@cheng0307 ~]# mount /dev/sdb1 /bak/
[root@cheng0307 ~]# dd if=/dev/sda of=/bak/grup.bak bs=446 count=1
2.模擬對MBR中的GRUB引導程式的破壞,但不破壞磁區表
[root@cheng0307 ~]# 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/grup.bak of=/dev/sda bs=446 count=1
sh-4.2# exit
方法三:引導界面進入急救模式,重建GRUB選單組態檔
-
模擬GRUB選單組態檔丟失情況;

-
進入急救模式,加載光碟鏡像,切換到系統根目錄;
進入急救模式的方式一:



進入急救模式的方式二(修改啟動項后記得修改回來):




-
選擇1 繼續執行下一步

-
重新將GRUB引導程式安裝到第一塊磁盤
/dev/sda的MBR扇區,如果多個磁區可忽略;然后重新構建GRUB選單的組態檔;
-
重新修改系統啟動項為硬碟后重啟即可


2.3 遺忘root用戶密碼
· 故障原因
- 遺忘root用戶的密碼
· 故障現象
- 無法進行需要root權限的管理操作;
- 若沒有其他可用賬號,將無法登陸作業系統,
· 解決思路
- 進入急救模式,重設密碼即可,
· 實驗:遺忘root用戶密碼并重設的具體步驟
第一步:重新虛擬機進入急救模式



第二步:選擇1 繼續執行下一步

第三步:重新新密碼

三、服務控制及切換運行級別
3.1 系統服務控制
3.1.1 格式
Systemctl 控制型別 服務名稱
3.1.2 控制型別
- start :啟動
- stop :停止
- restart :重新啟動
- reload :重新加載
- status : 查看服務狀態
3.1.3 實體:查看network狀態

3.2 查看運行級別
3.2.1 runlevel 命令
只能查看切換運行級別與當前運行級別(N代表沒有切換過運行級別)

3.2.2 systemctl 命令
systemctl get-default
可以查看到默認的運行級別

3.3 臨時切換運行級別
3.3.1 init 命令
init命令引數是運行級別所對應的數字,
3.3.2 systemctl 命令
systemctl的命令引數是具體的target,
3.4 設定永久運行級別
方法一:
systemctl set-default multi-user.target

方法二:
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

四、優化Linux啟動程序(開機自啟)
4.1 ntsysv工具
- 提供一個互動式、可視化視窗
- 可以在字符終端運行
- 便于集中管理多個服務
- 用于控制服務是否開機自啟動

4.2 systemctl/ chkconfig工具
- 不提供互動式、可視化視窗
- 管理單個服務效率更高
systemctl常用命令:
1.查看系統服務的啟動狀態
[root@cheng0307 ~]# systemctl set-default multi-user.target
2.設定系統服務的啟動狀態
[root@cheng0307 ~]# systemctl disable firewalld.service #關閉自啟動
[root@cheng0307 ~]# systemctl enable firewalld.service #開啟自啟動

chkconfig常用命令:
1. 顯示當前服務
[root@cheng0307 ~]# chkconfig --list
2. 添加服務
[root@cheng0307 ~]# chkconfig --add nginx

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/278969.html
標籤:其他
下一篇:7. docker——鏡像
