一、引導程序
引導程序總覽

1.1開機自檢
服務器主機開機以后,將根據主板BIOS中的設定對CPU、記憶體、顯卡、鍵盤等設備進行初步檢測,檢測成功后根據預設的啟動順序移交系統控制權,大多時候會移交給本機硬碟,網路啟動加載網路批量pxe,
- 硬體啟動POST:加電自檢,是BIOS功能的一個主要部分,負責完成對CPU、主板、記憶體、硬碟子系統、顯示子系統、串并行介面、鍵盤等硬體情況的檢測,
- 主板的ROM:保存著有關計算機系統最重要的基本輸入輸出程式,系統資訊設定,開機加電自檢程式和系統啟動自舉程式等,
1.2MBR引導
當從本機硬碟中啟動系統時,首先根據硬碟第一個扇區中 MBR(主引導記錄)的設定,將系統控制權傳遞給包含作業系統引導檔案的磁區;或者直接根據MBR記錄中的引導資訊呼叫啟動選單(如GRUB)
總結:運行放在MBR扇區里的啟動GRUB引導程式
1.3GRUB選單
對于 Linux 作業系統來說,GRUB(統一啟動加載器)是使用最為廣泛的多系統引導器程式,系統控制權傳遞給GRUB以后,將會顯示啟動選單給用戶選擇,并根據所選項(或采用默認值)準備加載Linux內核檔案,然后將系統控制權轉交給內核,需要注意的是,CentOS 7采用的是GRUB2啟動引導器,
總結:GRUB引導程式通過讀取GRUB組態檔/boot/grub2/grub.cfg,來獲取內核和鏡像檔案系統的設定和路徑位置,
grub功能和組成
bootloader:引導加載器,引導硬體去找到內核(作業系統的核心)
- Windows:ntloader,僅是啟動OS
- Linux:功能豐富,提供選單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到記憶體中的特定空間中,解壓、展開、并把系統控制權移交給內核
Linux的bootloader
- LILO:LInux LOader,早期的bootloader,功能單一
- GRUB:GRand Unified Bootloader,CentOS 5,6 ;GRUB 0.97,GRUB Legacy,CentOS 7以后使用GRUB 2.02
GRUB 啟動階段
(1)primary boot loader:
- 1st stage:MBR的前446個位元組引導硬體去找內核
- 1.5 stage:MBR之后的扇區,讓stage1中的bootloader能識別stage2所在的磁區上的檔案系統
(2)secondary boot loader:2nd stage,磁區檔案/boot/grub2/grub.cfg
1.4加載linux內核,作業系統調度硬體
Linux內核是一個預先編譯好的特殊二進制檔案,介于各種硬體資源與系統程式之間,負責資源分配與調度,內核接過系統控制權以后,將完全掌控整個 Linux 作業系統的運行程序,在 CentOS 系統中,默認的內核檔案位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”,
總結:把內核和鏡像檔案系統加載到記憶體中可以使用
1.5init行程初始化這是linux運行的第一個程式
為了完成進一步的系統引導程序,Linux內核首先將系統中的“/sbin/init”程式加載到記憶體中運行(運行中的程式稱為行程),init行程負責完成一系列的系統初始化程序,最后等待用戶進行登錄,
總結:加載硬體驅動程式,內核把init行程加載到記憶體中運行
- 傳統init依賴于串行執行Shell腳本啟動服務,導致效率低下,系統啟動速度較慢需要排隊啟動,
- systemd能夠將更多的服務行程并行啟動,并且具有提供按需啟動服務的能力,使得啟動更少行程,從而提高系統啟動速度大家一起,
二、服務
2.1systemd服務
systemd服務:
- 對比5和6可以解決依賴關系并行啟動
- 按需啟動
- 自動解決依賴關系
負責在系統啟動或運行時,激活系統資源,服務器行程和其它行程
Systemd新特性
- 系統引導時實作服務并行啟動
- 按需啟動守護行程
- 自動化的服務依賴關系管理
- 同時采用socket式與D-Bus總線式激活服務
- socket與服務程式分離
- 向后兼容sysv init腳本
- 使用systemctl命令管理systemctl命令固定不變,不可擴展,非由systemd啟動的服務
- systemctl無法與之通信和控制
- 系統狀態快照
systemd 核心概念:
- unit表示不同型別的systemd物件,通過組態檔進行標識和配置;檔案中主要包含了系統服務、監聽
- socket保存的系統快照以及其它與init相關的資訊
2.2修復MBR磁區
- 備份mbr引導扇區到其他磁盤
- 模擬破壞mbr引導扇區
- 引導鏡像急救模式進行mbr扇區恢復
實驗1:沒有出錯情況下






出錯情況下:
1 總結: 2 1.先備份第一塊硬碟的前512位元組,不要備份再同一塊硬碟上 3 命令:dd if=/dev/sda of=/mnt/mvr.bak conut=1 bs=512 4 5 2.模擬破壞前512位元組 6 命令:dd if=/dev/zero of=/dev/sda conut=1 bs=512 7 hexdump -C -n 512 /dev/sda(看sda前512位元組) 8 9 3.重啟 10 選第三個選項,再選第二個檔案,輸入1回車,回車 11 創建空檔案夾,掛載到空檔案夾上 12 把檔案夾復制到sda下






![]()

2.3修復GRUB磁區
實驗2:重新構建grub檔案
出錯情況:
- 將整個boot檔案洗掉
- 將/boot/grub2檔案洗掉
- 將/boot/grub2/grub.cfg檔案洗掉
1 總結: 2 rm -rf /boot/grub2/grub.cfg #模擬洗掉grub.cf 檔案 3 進入急救模式,選擇1 繼續 4 chroot /mnt/sysimage #進入急救模式后,更改環境 5 grub2-install /dev/sda #重新建立加載sda磁區 6 grub2-mkconfig -o /boot/grub2/grub.cfg #重新構建grub選單組態檔 7 exit #退出當前系統 8 reboot #重啟









2.4修改密碼
實驗3:有光驅前提下




沒有光驅的情況下重啟出現下面的圖片:






補充:centos6修改密碼
啟動時按上下鍵---->按a---->輸入s 空格 1進入單用戶模式---->passwd修改密碼
2.5啟動關閉服務
1 開啟關閉服務: 2 查看服務狀態:systemctl status 服務名 3 啟動服務:systemctl start 服務名 4 關閉服務:systemctl stop 服務名 5 重新加載服務:systemctl reload 服務名 6 重啟服務:systemctl restart 服務名 7 立刻開機自啟:systemctl enable --now 服務名 8 立刻關閉服務開機不自啟:systemctl disable --now 服務名

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510994.html
標籤:其他
上一篇:leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal 從中序與后序遍歷序列構造二叉樹(中等)
