Liunx操作系统的引导过程(系统操作引导过程,模拟MBR,GRUB故障,root密码遗忘解决,优化启动过程 ,运行级别的分类)
文章目錄
- Liunx操作系統(tǒng)的引導(dǎo)過程
- 引導(dǎo)過程
- Blos自檢
- MBR 引導(dǎo)
- grub引導(dǎo)菜單(Boot Loader)
- 內(nèi)核啟動
- 啟動init進(jìn)程,依據(jù)inittab文件設(shè)定運(yùn)行級別
- 系統(tǒng)初始化進(jìn)程
- 當(dāng)MBR扇區(qū)出現(xiàn)故障如何操作
- 模擬centos 7.4 grub修復(fù)
- 忘記root密碼
- 系統(tǒng)服務(wù)使用systemd管理
- 優(yōu)化啟動過程(開機(jī)自啟)
Liunx操作系統(tǒng)的引導(dǎo)過程
1:開機(jī)BIOS自檢,加載硬盤。
2:讀取MBR,進(jìn)行MBR引導(dǎo)。
3:grub引導(dǎo)菜單(Boot Loader)。
4:加載內(nèi)核kernel。
5:啟動init進(jìn)程,依據(jù)inittab文件設(shè)定運(yùn)行級別
6:init進(jìn)程,執(zhí)行rc.sysinit文件。
7:啟動內(nèi)核模塊,執(zhí)行不同級別的腳本程序。
8:執(zhí)行/etc/rc.d/rc.local
9:啟動mingetty,進(jìn)入系統(tǒng)登陸界面:開機(jī)自檢,MBR引導(dǎo),GRUB菜單, 加載linux內(nèi)核,init進(jìn)程初始化
引導(dǎo)過程
引導(dǎo)過程能以兩種方式之一初始化。其一,如果系統(tǒng)處于關(guān)機(jī)狀態(tài),那么打開電源按鈕將開啟系統(tǒng)引導(dǎo)過程。其二,如果操作系統(tǒng)已經(jīng)運(yùn)行在一個本地用戶(該用戶可以是 root 或其他非特權(quán)用戶),那么用戶可以借助圖形界面或命令行界面通過編程方式發(fā)起一個重啟操作,從而觸發(fā)系統(tǒng)引導(dǎo)過程。重啟包括了一個關(guān)機(jī)和重新開始的操作。
Blos自檢
在 1981 年,IBM 設(shè)計的第一臺個人電腦中,BIOS 被設(shè)計為用來初始化硬件組件。POST 作為 BIOS 的組成部分,用于檢驗(yàn)電腦硬件基本功能是否正常。如果 POST 失敗,那么這個電腦就不能使用,引導(dǎo)過程也將就此中斷。
BIOS 上電自檢確認(rèn)硬件的基本功能正常,然后產(chǎn)生一個 BIOS 中斷 INT 13H,該中斷指向某個接入的可引導(dǎo)設(shè)備的引導(dǎo)扇區(qū)。它所找到的包含有效的引導(dǎo)記錄的第一個引導(dǎo)扇區(qū)將被裝載到內(nèi)存中,并且控制權(quán)也將從引導(dǎo)扇區(qū)轉(zhuǎn)移到此段代碼。
MBR 引導(dǎo)
當(dāng)從本機(jī)硬盤中啟動系統(tǒng)時,首先根據(jù)硬盤第一個扇區(qū)中 MBR(Master Boot Record, 主引導(dǎo)記錄)的設(shè)置,將系統(tǒng)控制權(quán)傳遞給包含操作系統(tǒng)引導(dǎo)文件的分區(qū);或者直接根據(jù)MBR 記錄中的引導(dǎo)信息調(diào)用啟動菜單(如 GRUB)。
grub引導(dǎo)菜單(Boot Loader)
GRUB2 全稱是 GRand Unified BootLoader,Version 2(第二版大一統(tǒng)引導(dǎo)裝載程序)。它是目前流行的大部分 Linux 發(fā)行版本的主要引導(dǎo)加載程序。GRUB2 是一個用于計算機(jī)尋找操作系統(tǒng)內(nèi)核并加載其到內(nèi)存的智能程序。由于 GRUB 這個單詞比 GRUB2 更易于書寫和閱讀,在下文中,除特殊指明以外,GRUB 將代指 GRUB2。
內(nèi)核啟動
內(nèi)核文件都是以一種自解壓的壓縮格式存儲以節(jié)省空間,它與一個初始化的內(nèi)存映像和存儲設(shè)備映射表都存儲于 /boot 目錄之下。
在選定的內(nèi)核加載到內(nèi)存中并開始執(zhí)行后,在其進(jìn)行任何工作之前,內(nèi)核文件首先必須從壓縮格式解壓自身。一旦內(nèi)核自解壓完成,則加載 systemd 進(jìn)程(其是老式 System V 系統(tǒng)的 init 程序的替代品),并轉(zhuǎn)移控制權(quán)到 systemd
啟動init進(jìn)程,依據(jù)inittab文件設(shè)定運(yùn)行級別
內(nèi)核加載到內(nèi)存中并開始執(zhí)行后,在其進(jìn)行任何工作之前,內(nèi)核文件首先必須從壓縮格式解壓自身。一旦內(nèi)核自解壓完成,則加載 systemd 進(jìn)程(其是老式 System V 系統(tǒng)的 init 程序的替代品),并轉(zhuǎn)移控制權(quán)到 systemd。
系統(tǒng)初始化進(jìn)程
init進(jìn)程
-
由linux內(nèi)核加載運(yùn)行/sbin.inint程序
-
Init 進(jìn)程是系統(tǒng)第一進(jìn)程
-
init進(jìn)程的PID號永遠(yuǎn)為1
systemd進(jìn)程
-
systemd 是所有進(jìn)程的父進(jìn)程。它負(fù)責(zé)將 Linux 主機(jī)帶到一個用戶可操作狀態(tài)(可以執(zhí)行功能任務(wù))
-
systemd是linux操作系統(tǒng)的一個init軟件
-
centos7中采用全新的systemd啟動方式,取代了傳統(tǒng)的sysvinit
-
centos7中運(yùn)行第一個init進(jìn)程是/ilb/systrmd/sysytemd
-
運(yùn)行級別對應(yīng)systemd目標(biāo)
| halt.target | 停止系統(tǒng)運(yùn)行但不切斷電源。 | ||
| 0 | poweroff.target | runlevel0.target | 停止系統(tǒng)運(yùn)行并切斷電源. |
| S | emergency.target | 單用戶模式,沒有服務(wù)進(jìn)程運(yùn)行,文件系統(tǒng)也沒掛載。這是一個最基本的運(yùn)行級別,僅在主控制臺上提供一個 shell 用于用戶與系統(tǒng)進(jìn)行交互。 | |
| 1 | rescue.target | runlevel1.target | 掛載了文件系統(tǒng),僅運(yùn)行了最基本的服務(wù)進(jìn)程的基本系統(tǒng),并在主控制臺啟動了一個 shell 訪問入口用于診斷。 |
| 2 | runlevel2.target | 多用戶,沒有掛載 NFS 文件系統(tǒng),但是所有的非圖形界面的服務(wù)進(jìn)程已經(jīng)運(yùn)行。 | |
| 3 | multi-user.target | runlevel3.target | 所有服務(wù)都已運(yùn)行,但只支持命令行接口訪問。 |
| 4 | runlevel4.target | 未使用。 | |
| 5 | graphical.target | runlevel5.target | 多用戶,且支持圖形界面接口。 |
| 6 | reboot.target | runlevel6.target | 重啟。 |
當(dāng)MBR扇區(qū)出現(xiàn)故障如何操作
故障原因
病毒,木馬等造成的破壞
不正確的分區(qū)操作,磁盤讀寫誤操作
故障現(xiàn)象
找不到引導(dǎo)程序,啟動中斷
無法加載操作系統(tǒng),開機(jī)后黑屏
解決思路
提前做好備份文件
以安裝光盤引導(dǎo)進(jìn)入急救模式
從備份文件中恢復(fù)
實(shí)驗(yàn)過程
虛擬機(jī)加一塊300G硬盤做實(shí)驗(yàn)
進(jìn)系統(tǒng)查看磁盤
fdisk -l ###看是否有sdb
創(chuàng)建一個30G的硬盤
mkfs -t ext4 /dev/sdb ###格式化sdb
掛載mount /dev/sdb /opt
1、備份MBR扇區(qū)數(shù)據(jù)
dd if=/dev/sda of=/opt/mbr.bak bs=512 count=1 ,磁盤字節(jié)
2、模擬MBR扇區(qū)故障
dd if=/dev/zero of=/dev/sda bs=512 count=1
3.從備份文件中恢復(fù) MBR 扇區(qū)數(shù)據(jù)
由于 MBR 扇區(qū)被破壞以后,就無法再從該硬盤啟動系統(tǒng),所以需要使用其他硬盤中的操作系統(tǒng)進(jìn)行引導(dǎo),或者直接使用 CentOS 系統(tǒng)的安裝光盤進(jìn)行引導(dǎo)。不管使用哪種方式, 目的都是相同的——獲得一個可以執(zhí)行命令的 Shell 環(huán)境,以便從備份文件中恢復(fù) MBR 扇區(qū)中的數(shù)據(jù)。
以使用 CentOS 安裝光盤引導(dǎo)為例,當(dāng)出現(xiàn)安裝向?qū)Ы缑鏁r,選擇“Troubleshooting” 選項(xiàng),如圖所示,進(jìn)入修復(fù)故障頁面。
2、進(jìn)入troubleshooting菜單 選擇Rescue a centos system拯救centos系統(tǒng)
3、進(jìn)入引導(dǎo)可以按回車,或者等待
按1 在按會車進(jìn)入sh-4.2#繼續(xù)
4、mount /dev/sdb1 /mnt ## 將備份sdb備份的文件掛到mnt下 然后進(jìn)去看下是否有mbr.bak
4、dd if=/mnt/sda.mbr.bak of=/dev/sda
init 6 重啟
模擬centos 7.4 grub修復(fù)
故障原因
MBR中的GRUB引導(dǎo)程序遭到破壞
grub.conf文件丟失,引導(dǎo)配置有誤
故障現(xiàn)象
系統(tǒng)引導(dǎo)停滯,顯示“grub>”提示符
解決思路
嘗試手工輸入引導(dǎo)命令(成功率很低,不建議)
進(jìn)入急救模式,重寫或者從備份中恢復(fù)grub.conf
向MBR扇區(qū)中重建grub程序
模擬破壞grub引導(dǎo)菜單
cd /boot/grub2 ###進(jìn)入grub2
mv grub.cfg grub.cfg.bak
重新啟動系統(tǒng),在載入條時,立馬按F2進(jìn)入BIOS界面
按方向鍵右鍵到Boot界面,選擇到CD-ROM Drive,按+號將這一選項(xiàng)移到最上面
重新啟動
進(jìn)入troubleshooting菜單 選擇Rescue a centos system
3、進(jìn)入引導(dǎo)可以按回車,或者等待
按1 在按會車進(jìn)入sh-4.2#
4、進(jìn)入救援模式后切根
chroot /mnt/sysimage/
5、使用 grub2-install 命令修復(fù)grub
grub2-install /dev/sda
6、修復(fù)grub.cfg配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
查看是否修復(fù)
cd /boot/grub2/
ls
已經(jīng)修復(fù)
7、重啟
exit
reboot ###主要改啟動項(xiàng),否認(rèn)還是進(jìn)光盤模式
忘記root密碼
故障原因
遺忘root用戶的密碼
故障現(xiàn)象
無法進(jìn)行需要root權(quán)限的管理操作
若沒有其他可用賬號,將無法登錄系統(tǒng)
解決思路
進(jìn)入急救模式,重設(shè)密碼
模擬密碼忘記
隨便更一下密碼
1.裝入光盤,在光盤引導(dǎo)界面選擇troubleshooting:
再移動到Exit,回車保存并重啟
1.裝入光盤,在光盤引導(dǎo)界面選擇troubleshooting:
2、進(jìn)入troubleshooting菜單 選擇Rescue a centos system
3、進(jìn)入引導(dǎo)可以按回車,或者等待
按1 在按會車進(jìn)入sh-4.2
4、進(jìn)入救援模式后切根
chroot /mnt/sysimage/
5:修改密碼
passwd root
輸入密碼:Abc123 ###第一次
輸入密碼:Abc123 ###第二次
、重啟
exit
reboot ###主要改啟動項(xiàng),否認(rèn)還是進(jìn)光盤模式
總結(jié)
選擇急救模式,進(jìn)入救援centos系統(tǒng)的方式都是一樣的
加載鏡像系統(tǒng)命令
chroot /mnt/sysimage重新構(gòu)建grub菜單系統(tǒng)命令
grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg系統(tǒng)服務(wù)使用systemd管理
systemd不是一個單獨(dú)的命令,而是一個集合體
systemd是維持整個Linux系統(tǒng)的始祖
主要目的就是為了將服務(wù)開啟
常用控制類型 start 啟動 stop 停止 restart 重新啟動 '//重新啟動,會中斷服務(wù),此服務(wù)的PID值會改變' reload 重新加載 '//重新加載配置文件不會中斷服務(wù),此服務(wù)的PID值會改變' status 查看服務(wù)狀態(tài)例如: [root@localhost ~]# systemctl start httpd 啟動httpd服務(wù) [root@localhost ~]# systemctl stop httpd 停止httpd服務(wù) [root@localhost ~]# systemctl restart httpd 重新啟動httpd服務(wù) [root@localhost ~]# systemctl reload httpd 重新加載httpd服務(wù)配置文件對于在實(shí)際生產(chǎn)環(huán)境中運(yùn)行的服務(wù)器,不要輕易執(zhí)行 stop 或 restart 操作,以免造成客戶端訪問中斷,帶來不必要的損失。若只是要為系統(tǒng)服務(wù)啟用新的配置,可以采用相對溫和一些的“reload”參數(shù)重新加載配置,而不是生硬地執(zhí)行“restart”。
Linux運(yùn)行級別
runlevel命令:查看切換運(yùn)行級別與當(dāng)前運(yùn)行級別
[root@localhost ~]# runlevel N 3 N 是上一次運(yùn)行的級別,3是這一次運(yùn)行的級別,若從init 3 切換到 init 5 ,在init3中輸入runlevel命令systemctl 工具
systemctl 能查看默認(rèn)的運(yùn)行級別
例如:檢查系統(tǒng)網(wǎng)路是否開機(jī)自啟動
優(yōu)化啟動過程(開機(jī)自啟)
使用ntsysv命令:提供交互仿圖像界面,便于管理多個服務(wù)
按tab鍵可以確認(rèn)退出或取消,空格可以加“”子號選擇開啟或關(guān)閉【*】表示開啟 【】表示關(guān)閉systemctl 工具
不提供交互式,可視化窗口
[root@localhost ~]# systemctl disable httpd 將httpd服務(wù)設(shè)置關(guān)閉開機(jī)自啟 [root@localhost ~]# systemctl enable httpd 將httpd服務(wù)設(shè)置開機(jī)自啟在當(dāng)前系統(tǒng)下執(zhí)行“systemctl list-units --type=service”命令可以查看當(dāng)前系統(tǒng)中所有已激活的系統(tǒng)服務(wù),命令如下:
[root@localhost ~]# systemctl list-units --type=service //查看所有已經(jīng)激活的系統(tǒng)服務(wù) UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrt-xorg.serviceloaded active running ABRT Xorg log watcherdisabled總結(jié)
以上是生活随笔為你收集整理的Liunx操作系统的引导过程(系统操作引导过程,模拟MBR,GRUB故障,root密码遗忘解决,优化启动过程 ,运行级别的分类)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2133内存条评测:揭秘性能之争
- 下一篇: 系统安全及应用(账户安全控制,系统引导和