演算法-連結串列-之查詢連結串列環的入口節點
一.Linux作業系統引導過程
引導過程圖
第一步 開機自檢
伺服器主機開機以後,將根據主機板BIOS中的設定對CPU(Central Processing Unit,中央處理器)、記憶體、顯示卡、鍵盤等裝置進行初步檢測,檢測成功後根據預設的啟動順序移交系統控制權,大多時候回移交給本機硬碟。
第二步 MBR引導
當從本機硬碟中啟動系統時,首先根據硬碟第一扇區中MBR(Master Boot Record,主引導記錄)的設定,將系統控制權傳遞給包含作業系統引導檔案的分割槽;或者直接根據MBR記錄中的引導資訊呼叫啟動選單(如GRUB)。hexdump -C -n 512 /dev/sda 檢視MBR前512個位元組 dd if=/dev/sda of=/root/hu/lianxi bs=512 count=1 備份
執行放在MBR扇區裡的啟動GRUB載入程式
第三步 GRUB選單
對於Linux作業系統來說,GRUB(BRand Unified BootLoader,同意啟動載入器)時使用最為廣泛的多系統引導器程式。系統控制權傳遞給GRUB以後,將會顯示啟動選單提供給使用者選擇,並根據所選項(或採用預設值)載入Linux核心檔案,然後將系統控制權轉交給核心。
GRUB載入程式通過服務GRUB配置檔案、boot/grub2/grub.cfg,來獲取核心和映象檔案系統的設定和路徑位置
第四步 載入Linux核心
Linux核心是一個預先編譯好的特殊二進位制檔案,介於各種硬體資源與系統程式之間,負責資源分配與排程。核心接過系統控制權以後,將完全掌控整個Linux作業系統的執行過程。記憶體檔案系統initramfs 是經過gzip 的cpio歸檔,其中包含啟動時所有必要的硬體核心模組,初始化指令碼等。
把核心和映象檔案系統夾在到記憶體中
第五步 init程序初始化
為了完成進一步的系統引導過程,Linux核心首先將系統中的“/sbin/init”程式載入到記憶體中執行(執行中的程序稱為程序),init程序負責完成一系列的系統初始化過程,最後等待使用者進行登入。
夾在硬體驅動程式,核心把init程序夾在到記憶體中執行
系統初始化程序
init程序
由Linux核心載入執行/sbin/init程式;
init程序是系統中第一個程序,是所有程序的父程序;
init程序的PID(程序標記)號永遠為1.
Systemd
Systemd是Linux作業系統的一種init軟體;
從CentOS 7版本的系統開始systemd成為PID恆為1的初始化程序,是核心第一個載入的程式。
systemd程序是不允許被輕易終止的。需要切換不同的系統執行狀態時,可以向systemd程序發 送正確的執行命令,由systemd 自身來完成相關操作。
CentOS 7中執行的第一個 init程序是/lib/systemd/systemd,可以通過pstree命令檢視
Systemd 單元型別
執行級別所對應的Systemd 目標
二.排除啟動類故障
實驗
修復MBR扇區故障
故障原因:病毒,木馬等造成的破壞
不正確的分割槽操作、磁碟讀寫誤操作
故障現象: 找不到載入程式,啟動終端
無法載入作業系統,開機後黑屏
解決思路: 提前做好備份檔案
以安裝光碟引導進入急救模式
從備份檔案中恢復
第一步
echo "- - -"> /sys/class/scsi_host/host0/scan
echo "- - -"> /sys/class/scsi_host/host1/scan
echo "- - -"> /sys/class/scsi_host/host2/scan 新建啟用硬碟
lsblk 檢視硬碟資訊
fdisk /dev/sdb 分割槽
mkfs.xfs /dev/sdb1 格式化
mkdir data 新建data目錄
mount /dev/sdb1/mnt/data 掛載
df 檢視掛載
dd if=/dev/sda of=/mnt/data/mbr.bak bs=512 count=1
複製/dev/sda到/mnt/data並改名為mbr.bak 前512位元組,一次
dd if=/dev/zero of=/dev/sda bs=512 count=1破壞檔案
複製0並覆蓋到/dev/sba前512位元組,使硬碟無發正常讀取
reboot 重啟
從光碟機載入,選擇Troubleshooting
選Rescue a CentOS system進入救援系統
進入救援系統後
選1)Contime
Mkdir /bak 新建掛載目錄點
Mount /dev/sdb1 /bak 將硬碟sdb1掛載到bak
Dd if=/bak/mbr.bak of=/dev/sda 讀取掛載點資訊並複製mbr.bak到sda
Reboot 重啟
方法二
mount /dev/sdb1 /mnt/data 掛載
scp /mnt/data/mbr.bak 192.168.72.105:/opt/ 複製到目標目錄
切換到2號機
此時cd到opt下檢視,檔案已經複製到opt下
切換到1號機
[root@localhost mntJ#dd if=/dev/zero of=/dev/sda bs=512 count=1破壞
重啟
從光碟機載入,選擇Troubleshooting
選Rescue a CentOS system進入救援系統
進入救援系統後
選3)Skip to shell
Ifconfig ens33 192.168.72.22/24 設定臨時網段
Ping 192.168.72.105通 ping
Scp 192.168.72.105:/opt/mbr.bak ./ 複製到當前目錄
Yes
密碼
Dd if=/mbr.bak of=/dev/sda 從根目錄下複製並替換硬碟sda
Reboot 重啟
完成修復
修復GRUB引導故障
故障原因
遺忘root密碼
三.服務控制及切換執行級別
四.優化啟動過程