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