Linux引导过程与服务控制、排障演示及运行级别(详细图解)
Linux操作系統(tǒng)引導(dǎo)過(guò)程目錄
- 一、Linux操作系統(tǒng)引導(dǎo)過(guò)程
- 1.開(kāi)機(jī)自檢
- 2.MBR 引導(dǎo)
- 3.GRUB菜單
- 4.加載Linux內(nèi)核
- 5.init進(jìn)程初始化
- 二、系統(tǒng)初始化進(jìn)程init和Systemd
- 2.1 init進(jìn)程
- 2.2 Systemd
- Systemd單元類(lèi)型
- 運(yùn)行級(jí)別所對(duì)應(yīng)的Systemd目標(biāo)
- 三、排除啟動(dòng)類(lèi)故障
- 3.1修復(fù)MBR扇區(qū)故障
- 3.1.1 演示
- 我們先添加一塊新的磁盤(pán)格式化并掛載
- 備份MBR 扇區(qū)數(shù)據(jù)到其它磁盤(pán)
- 模擬破壞MBR引導(dǎo)扇區(qū)
- 引導(dǎo)界面進(jìn)入急救模式,從備份文件中恢復(fù)MBR 扇區(qū)數(shù)據(jù)
- 3.2 修復(fù)GRUB引導(dǎo)故障
- 方法一:手動(dòng)輸入引導(dǎo)命令(笨拙繁瑣,不建議使用)
- 方法二:進(jìn)入急救模式,恢復(fù)GRUB引導(dǎo)程序
- 方法三:引導(dǎo)界面進(jìn)入急救模式,重建GRUB菜單配置文件
- 3.2.1 演示:由于方法二和修復(fù)MBR扇區(qū)故障類(lèi)似這里不做演示,這邊我們演示第三種方法
- 3.3 遺忘root用戶(hù)的密碼
- 3.3.1演示
- 四、系統(tǒng)服務(wù)控制
- 4.1 系統(tǒng)服務(wù)控制
- 4.2 控制類(lèi)型
- 五、Linux系統(tǒng)的運(yùn)行級(jí)別
- 5.1 查看運(yùn)行級(jí)別
- 5.2 臨時(shí)切換運(yùn)行級(jí)別
- 5.3 設(shè)置永久運(yùn)行級(jí)別
- 六、優(yōu)化啟動(dòng)過(guò)程
- ■ntsysv工具
- ■systemct工具
- 七、系統(tǒng)服務(wù)的啟動(dòng)與控制
- 7.1 系統(tǒng)服務(wù)的啟動(dòng)和控制
- 八、永久修改主機(jī)名和查看主機(jī)名的狀態(tài)
- 九、設(shè)置系統(tǒng)語(yǔ)言為中文
- 十、查看系統(tǒng)啟動(dòng)耗時(shí)
一、Linux操作系統(tǒng)引導(dǎo)過(guò)程
1.開(kāi)機(jī)自檢
- 服務(wù)器主機(jī)開(kāi)機(jī)以后,將根據(jù)主板BIOS中的設(shè)置對(duì)CPU、內(nèi)存、顯卡、鍵盤(pán)等設(shè)備進(jìn)行初步檢測(cè),檢測(cè)成功后根據(jù)預(yù)設(shè)的啟動(dòng)順序移交系統(tǒng)控制權(quán),大多時(shí)候會(huì)移交給本機(jī)硬盤(pán)。
- 總結(jié):檢測(cè)出第一個(gè)能夠引導(dǎo)系統(tǒng)的設(shè)備,比如硬盤(pán)或者光驅(qū)
2.MBR 引導(dǎo)
- 當(dāng)從本機(jī)硬盤(pán)中啟動(dòng)系統(tǒng)時(shí),首先根據(jù)硬盤(pán)第一個(gè)扇區(qū)中MBR (主引導(dǎo)記錄)的設(shè)置,將系統(tǒng)控制權(quán)傳遞給包含操作系統(tǒng)引導(dǎo)文件的分區(qū);或者直接根據(jù)MBR記錄中的引導(dǎo)信息調(diào)用啟動(dòng)菜單(如GRUB) 。
- 總結(jié):運(yùn)行放在MBR扇區(qū)里的啟動(dòng)GRUB引導(dǎo)程序
3.GRUB菜單
- 對(duì)于Linux操作系統(tǒng)來(lái)說(shuō),GRUB (統(tǒng)一啟動(dòng)加載器)是使用最為廣泛的多系統(tǒng)引導(dǎo)器程序。系統(tǒng)控制權(quán)傳遞給GRUB以后,將會(huì)顯示啟動(dòng)菜單給用戶(hù)選擇,并根據(jù)所選項(xiàng)(或采用默認(rèn)值)加載Linux內(nèi)核文件,然后將系統(tǒng)控制權(quán)轉(zhuǎn)交給內(nèi)核。
CentOS 7采用的是GRUB2啟動(dòng)引導(dǎo)器。 - 總結(jié):GRUB引導(dǎo)程序通過(guò)讀取GRUB配置文件/boot/grub2/grub.cfg,來(lái)獲取內(nèi)核和鏡像文件系統(tǒng)的設(shè)置和路徑位置
4.加載Linux內(nèi)核
- Linux內(nèi)核是一個(gè)預(yù)先編譯好的特殊二進(jìn)制文件,介于各種硬件資源與系統(tǒng)程序之間,負(fù)責(zé)資源分配與調(diào)度。內(nèi)核接過(guò)系統(tǒng)控制權(quán)以后,將完全掌控整個(gè)Linux操作系統(tǒng)的運(yùn)行過(guò)程。
CentOS 7系統(tǒng)中,默認(rèn)的內(nèi)核文件位于"/boot/vmlinuz-3.10.0-514.e17.x86_64" - 總結(jié):把內(nèi)核和鏡像文件系統(tǒng)加載到內(nèi)存中
5.init進(jìn)程初始化
- 為了完成進(jìn)一步的系統(tǒng)引導(dǎo)過(guò)程,Linux內(nèi)核首先將系統(tǒng)中的"/sbin/init"程序加載到內(nèi)存中運(yùn)行(運(yùn)行中的程序稱(chēng)為進(jìn)程),init進(jìn)程負(fù)責(zé)完成整個(gè)系統(tǒng)的初始化,最后等待用戶(hù)進(jìn)行登錄。
- 總結(jié):加載硬件驅(qū)動(dòng)程序,內(nèi)核把init進(jìn)程加載到內(nèi)存中運(yùn)行
二、系統(tǒng)初始化進(jìn)程init和Systemd
2.1 init進(jìn)程
- 由Linux內(nèi)核加載運(yùn)行/sbin/init程序
- init進(jìn)程是系統(tǒng)中第一個(gè)進(jìn)程,是所有進(jìn)程的父進(jìn)程
- init進(jìn)程的PID (進(jìn)程標(biāo)記)號(hào)永遠(yuǎn)為1
2.2 Systemd
-
Systemd是Linux操作系統(tǒng)的一種init軟件
-
CentOS7中采用全新的Systemd啟動(dòng)方式,取代傳統(tǒng)的SysVinit
-
CentOS7中運(yùn)行的第一個(gè)init進(jìn)程是/lib/systemd/systemd
-
傳統(tǒng)SysVinit依賴(lài)于串行執(zhí)行Shell腳本啟動(dòng)服務(wù),導(dǎo)致效率低下,系統(tǒng)啟動(dòng)速度較慢
-
systemd能夠?qū)⒏嗟姆?wù)進(jìn)程并行啟動(dòng),并且具有提供按需啟動(dòng)服務(wù)的能力,使得啟動(dòng)更少進(jìn)程,從而提高系統(tǒng)啟動(dòng)速度。
Systemd單元類(lèi)型
| Service | .service | 描述一個(gè)系統(tǒng)服務(wù) |
| Socket | .socket | 描述一個(gè)進(jìn)程間通信的套接字 |
| Device | .device | 描述一個(gè)內(nèi)核識(shí)別的設(shè)備文件 |
| Mount | .mount | 描述一個(gè)文件系統(tǒng)的掛載點(diǎn) |
| Automount | .automount | 描述一個(gè)文件系統(tǒng)的自動(dòng)掛載點(diǎn) |
| Swap | .swap | 描述一個(gè)內(nèi)存交換設(shè)備或文件 |
| Path | .path | 描述一個(gè)文件系統(tǒng)中文件或目錄 |
| Timer | .timer | 描述一個(gè)定時(shí)器 |
| Target | .target | 描述一組systemd的單元 |
運(yùn)行級(jí)別所對(duì)應(yīng)的Systemd目標(biāo)
| 0 | target | 關(guān)機(jī)狀態(tài),使用該級(jí)別時(shí)將會(huì)關(guān)閉主機(jī) |
| 1 | rescue.target | 單用戶(hù)模式,不需要密碼驗(yàn)證即可登錄系統(tǒng),多用于系統(tǒng)維護(hù) |
| 2 | multi-user.target | 用戶(hù)定義/域特定運(yùn)行級(jí)別,默認(rèn)等同于3,但是不能連網(wǎng) |
| 3 | multi-user.target | 字符界面的完整多用戶(hù)模式,大多數(shù)服務(wù)器主機(jī)運(yùn)行在此級(jí)別 |
| 4 | multi-user.target | 用戶(hù)定義/域特定運(yùn)行級(jí)別。默認(rèn)等同于3 |
| 5 | graphical.target | 圖形界面的多用戶(hù)模式,提供了圖形桌面操作環(huán)境 |
| 6 | reboot.target | 重新啟動(dòng),使用該級(jí)別時(shí)將會(huì)重啟主機(jī) |
三、排除啟動(dòng)類(lèi)故障
3.1修復(fù)MBR扇區(qū)故障
■故障原因
- 病毒、木馬等造成的破壞
- 不正確的分區(qū)操作、磁盤(pán)讀寫(xiě)誤操作
■故障現(xiàn)象
- 找不到引導(dǎo)程序,啟動(dòng)中斷
- 無(wú)法價(jià)值在操作系統(tǒng),開(kāi)機(jī)后黑屏
■解決思路
-
應(yīng)提前作好備份文件
-
以安裝光盤(pán)引導(dǎo)進(jìn)入急救模式
-
從備份文件中恢復(fù)
-
MBR位于第一塊硬盤(pán)(/dev/sda)的第一個(gè)物理扇區(qū)處,總共512字節(jié)
1.備份MBR 扇區(qū)數(shù)據(jù)到其它磁盤(pán)(/dev/sdb1)
mkdir /backup mount /dev/sdb1 /backup dd if=/dev/sda of=/backup/mbr.bak bs=512 count=12.模擬破壞MBR引導(dǎo)扇區(qū)
dd if=/dev/zero of=/dev/sda bs=512 count=13.引導(dǎo)界面進(jìn)入急救模式,從備份文件中恢復(fù)MBR 扇區(qū)數(shù)據(jù)
先加載好光盤(pán)鏡像,重啟操作系統(tǒng), 當(dāng)出現(xiàn)安裝向?qū)Ы缑鏁r(shí),選擇“Troubleshooting”選項(xiàng), 再選擇“Rescue a CentOS Linux system”選項(xiàng),進(jìn)入急救模式 選擇“1”選擇 Continue并按 Enter 鍵繼續(xù) 再次按 Enter 鍵后將進(jìn)入帶“sh-4.2#”提示符的 Bash Shell 環(huán)境 sh-4.2# mkdir /backupdir sh-4.2# mount /dev/sdb1 /backupdir #掛載帶有備份文件的分區(qū) sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda #恢復(fù)備份數(shù)據(jù) sh-4.2# exit #執(zhí)行exit命令退出臨時(shí)Shell 環(huán)境,系統(tǒng)將會(huì)自動(dòng)重啟3.1.1 演示
我們先添加一塊新的磁盤(pán)格式化并掛載
備份MBR 扇區(qū)數(shù)據(jù)到其它磁盤(pán)
模擬破壞MBR引導(dǎo)扇區(qū)
重啟虛擬機(jī)可以看到不能直接進(jìn)入系統(tǒng)了
引導(dǎo)界面進(jìn)入急救模式,從備份文件中恢復(fù)MBR 扇區(qū)數(shù)據(jù)
可以看到可以正常登陸了
3.2 修復(fù)GRUB引導(dǎo)故障
■故障原因
- MBR中的GRUB引導(dǎo)程序遭到破壞
- grub.conf文件丟失、引導(dǎo)配置有誤
■故障現(xiàn)象
- 系統(tǒng)引導(dǎo)停滯,顯示‘grub>’提示符
■解決思路
- 嘗試手動(dòng)輸入引導(dǎo)命令
- 進(jìn)入急救模式,重寫(xiě)或者從備份中恢復(fù)grub.conf
- 向MBR扇區(qū)中重建grub程序
方法一:手動(dòng)輸入引導(dǎo)命令(笨拙繁瑣,不建議使用)
/boot/grub/目錄下的包是用于啟動(dòng)菜單的背景圖片及樣式 /boot/grub2/grub.cfg GRUB配置文件grub> insmod xfs 加載指定的模塊到內(nèi)核 grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet LANG=zh_CN.UTF-8 內(nèi)核的名字及位置等信息 grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img 鏡像系統(tǒng)文件 grub> boot 引導(dǎo)boot方法二:進(jìn)入急救模式,恢復(fù)GRUB引導(dǎo)程序
- MBR位于第一塊硬盤(pán)(/dev/sda)的第一個(gè)物理扇區(qū)處,總共512字節(jié),前446字節(jié)是主引導(dǎo)記錄,分區(qū)表保存在MBR扇區(qū)中的第477-510字節(jié)中,所以這里備份前446字節(jié),保留之前的分區(qū)表。
- 模擬對(duì)MBR中的GRUB引導(dǎo)程序的破壞,但并不破壞分區(qū)表
- 引導(dǎo)界面進(jìn)入急救模式,從備份文件中恢復(fù)GRUB引導(dǎo)程序
方法三:引導(dǎo)界面進(jìn)入急救模式,重建GRUB菜單配置文件
- 模擬文件丟失
- 進(jìn)入急救模式,加載光盤(pán)鏡像,切換到系統(tǒng)根環(huán)境
- 重新將GRUB引導(dǎo)程序安裝到第一塊硬盤(pán)(/dev/sda)的MBR扇區(qū)
- 重新構(gòu)建GRUB菜單的配置文件
- 退出chroot 環(huán)境,并重啟
3.2.1 演示:由于方法二和修復(fù)MBR扇區(qū)故障類(lèi)似這里不做演示,這邊我們演示第三種方法
先進(jìn)入boot/grub2刪除grub.cfg文件
重啟發(fā)現(xiàn)啟動(dòng)不了了
進(jìn)入急救模式在加載界面時(shí)按下ESC鍵進(jìn)入急救模式
引導(dǎo)界面進(jìn)入急救模式,重建GRUB菜單配置文件
修復(fù)成功可以正常進(jìn)入系統(tǒng)
3.3 遺忘root用戶(hù)的密碼
■故障原因
- 遺忘root用戶(hù)密碼
■故障現(xiàn)象
- 無(wú)法進(jìn)行需要root權(quán)限的管理操作
- 若沒(méi)有其他賬號(hào)可用,將無(wú)法登陸系統(tǒng)
■解決思路
- 進(jìn)入急救模式,重設(shè)密碼
3.3.1演示
進(jìn)入急救模式重設(shè)密碼
重新登錄輸入密碼,實(shí)驗(yàn)成功。
四、系統(tǒng)服務(wù)控制
4.1 系統(tǒng)服務(wù)控制
systemctl 控制類(lèi)型 服務(wù)名稱(chēng)4.2 控制類(lèi)型
- start:啟動(dòng)
- stop:停止
- restart:重新啟動(dòng)
- reload:重新加載
- status:查看服務(wù)狀態(tài)
- …
五、Linux系統(tǒng)的運(yùn)行級(jí)別
5.1 查看運(yùn)行級(jí)別
- runlevel命令:查看切換之前的運(yùn)行級(jí)別與當(dāng)前運(yùn)行級(jí)別,N表示之前沒(méi)有切換
- systemctl工具:查看默認(rèn)的運(yùn)行級(jí)別
5.2 臨時(shí)切換運(yùn)行級(jí)別
- init命令
- systemctl工具
| init 0 | systemcrl isolate poweroff.target | systemcrl poweroff | shutdown -h now |
| init 1 | systemcrl isolate rescue.target | ||
| init 3 | systemcrl isolate multi.target | ||
| init 5 | systemcrl isolate graphical.target | ||
| init 6 | systemcrl isolate reboot.target | systemcrl reboot | shutdown -r now |
5.3 設(shè)置永久運(yùn)行級(jí)別
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target 或 systemctl set-default multi-user.target systemctl get-default 查看系統(tǒng)默認(rèn)的運(yùn)行級(jí)別六、優(yōu)化啟動(dòng)過(guò)程
■ntsysv工具
- 提供一個(gè)交互式、可視化窗口
- 可以在字符終端運(yùn)行
- 便于集中管理多個(gè)服務(wù)
- 用于控制服務(wù)是否開(kāi)機(jī)自啟動(dòng)
■systemct工具
- 不提供交互式、可視化窗口
- 管理單個(gè)服務(wù)效率更高
七、系統(tǒng)服務(wù)的啟動(dòng)與控制
■ntsysv系統(tǒng)服務(wù)管理工具
ntsysv ntsysv --level 級(jí)別列表- 按空格鍵標(biāo)志服務(wù)選項(xiàng)
- 按↑、↓鍵切換服務(wù)選項(xiàng)
- 按tab鍵切換光標(biāo)
7.1 系統(tǒng)服務(wù)的啟動(dòng)和控制
■查看系統(tǒng)服務(wù)的啟動(dòng)狀態(tài)
systemctl is-enabled 服務(wù)名稱(chēng)■服務(wù)名稱(chēng)設(shè)置系統(tǒng)服務(wù)的啟動(dòng)狀態(tài)
systemctl enable 服務(wù)名稱(chēng) 開(kāi)啟開(kāi)機(jī)自啟動(dòng) systemctl disable 服務(wù)名稱(chēng) 關(guān)閉開(kāi)機(jī)自啟動(dòng)八、永久修改主機(jī)名和查看主機(jī)名的狀態(tài)
hostnamectl set-hostname newname 永久修改主機(jī)名 hostnamectl status 查看主機(jī)名的狀態(tài)九、設(shè)置系統(tǒng)語(yǔ)言為中文
localetcl set-locale LANG=zh_CN.utf8 設(shè)置系統(tǒng)語(yǔ)言為中文 localectl [status] 查看當(dāng)前系統(tǒng)使用的語(yǔ)言十、查看系統(tǒng)啟動(dòng)耗時(shí)
systemd-analyze總結(jié)
以上是生活随笔為你收集整理的Linux引导过程与服务控制、排障演示及运行级别(详细图解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 内存VS磁盘:性能秒杀对比,容量胜出使用
- 下一篇: Linux进程和计划任务管理(详细图例)