網(wǎng)站首頁 編程語言 正文
目錄
前言
一.linux系統(tǒng)引導(dǎo)過程
二.系統(tǒng)初始化進程
三.Systemd單元類型
四.修復(fù)MBR扇區(qū)故障
?五.修復(fù)GRUB菜單
六.遺忘密碼并重置
總結(jié)
前言
引導(dǎo)過程能以兩種方式之一初始化。其一,如果系統(tǒng)處于關(guān)機狀態(tài),那么打開電源按鈕將開啟系統(tǒng)引導(dǎo)過程。其二,如果操作系統(tǒng)已經(jīng)運行在一個本地用戶(該用戶可以是 root 或其他非特權(quán)用戶),那么用戶可以借助圖形界面或命令行界面通過編程方式發(fā)起一個重啟操作,從而觸發(fā)系統(tǒng)引導(dǎo)過程。重啟包括了一個關(guān)機和重新開始的操作。
一.linux系統(tǒng)引導(dǎo)過程
開機自檢(BIOS)→MBR引導(dǎo)→GRUB菜單→加載內(nèi)核(kernel)→init進程初始化
開機自檢:? ? ? ? ?檢測硬件有沒有問題
MBR引導(dǎo):? ? ? ? 加載系統(tǒng)所需要的內(nèi)核
GRUB菜單:? ?? ?開啟文件或引導(dǎo)程序的列表,全加載出來
加載內(nèi)核:? ? ? ?? 把內(nèi)核相關(guān)的文件加載到內(nèi)存中
init進程初始化:把系統(tǒng)需要的服務(wù)開啟,并加載到內(nèi)存里
開機自檢
服務(wù)器主機開機以后,將根據(jù)主板BIOS中的設(shè)置對CPU(Central Processing Unit,中央處理器)、內(nèi)存、顯卡、鍵盤等設(shè)備進行初步檢測,檢測成功后根據(jù)預(yù)設(shè)的啟動順序移交系統(tǒng)控制權(quán),大多時候會移交給本機硬盤。
MBR引導(dǎo)
當從本機硬盤中啟動系統(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菜單
對與Linux操作系統(tǒng)來說,GRUB(GRand Unified Bootloader,統(tǒng)一啟動加載器)是使用最為廣
泛的多系統(tǒng)引導(dǎo)器程序。系統(tǒng)控制權(quán)傳遞給GRUB以后,將會顯示啟動菜單給用戶選擇,并根據(jù)所
選項(或采用默認值)加載Linux內(nèi)核文件,然后將系統(tǒng)控制權(quán)轉(zhuǎn)交給內(nèi)核。需要注意的CentOS 7
加載內(nèi)核
Linux 內(nèi)核是一個預(yù)先編譯好的特殊二進制文件,介于各種硬件資源與系統(tǒng)程序之間,負責(zé)資源分
配與調(diào)度。內(nèi)核接過系統(tǒng)控制權(quán)以后,將完全等控整個 Linux 操作系統(tǒng)的運行過程。
init進程初始化
為了完成進一步的系統(tǒng)引導(dǎo)過程,Linux 內(nèi)核首先將系統(tǒng)中的 “/sbin/init”程序加載到內(nèi)存中運行(運行中的程序稱為進程),init 進程負責(zé)完成一系列的系統(tǒng)初始化過程,最后等待用戶進行登錄。
二.系統(tǒng)初始化進程
init進程
由Linux內(nèi)核加載運行/sbin/init程序
init進程是系統(tǒng)中的第一個進程
init進程的PID(進程標記)號永遠為1
Systemd
Systemd是Linux操作系統(tǒng)的一種init軟件
CentOS 7中采用全新的Systemd啟動方式,取代傳統(tǒng)的SysVinit
CentOS 7中運行的第一個init進程是/lib/systemd/systemd
三.Systemd單元類型
單元類型?? ? ? ? ? ? ? ? 擴展名? ? ? ? ? ? ?說明
Service? ? ? ? ? ? ? ? ? .service? ? ? ? ? ?描述一個系統(tǒng)服務(wù)
Socket? ? ? ? ? ? ? ? ? ?.socket? ? ? ? ? ? 描述一個進程間通信的套接字
Device? ? ? ? ? ? ? ? ? ?.device? ? ? ? ? ? 描述一個內(nèi)核識別的設(shè)備文件
Mount? ? ? ? ? ? ? ? ? ? .mount? ? ? ? ? ??描述一個文件系統(tǒng)的掛載點
Automoun? ? ? ? ? ? ?.automount? ??描述一個文件系統(tǒng)的自動掛載點
Swap? ? ? ? ? ? ? ? ? ? ? .swap? ? ? ? ? ? ?描述一個內(nèi)存交換設(shè)備或交換文件
Path? ? ? ? ? ? ? ? ? ? ? ?.path? ? ? ? ? ? ? ?描述一個文件系統(tǒng)中文件或目錄
Timer? ? ? ? ? ? ? ? ? ? ?.timer? ? ? ? ? ? ? 描述一個定時器(用于實現(xiàn)類似cron的調(diào)度任務(wù)
Snapshot?? ? ? ? ? ? ?.snapshot? ? ? ?用于保存一個systemd的狀態(tài)
Scope? ? ? ? ? ? ? ? ? ? .scope? ? ? ? ? ? 使用systemd的總線接口以編程的方式創(chuàng)建外部進程
Slice? ? ? ? ? ? ? ? ? ? ? .slice? ? ? ? ? ? ? ?描述居于Cgroup的一組通過層次組織的管理系統(tǒng)進程
Target? ? ? ? ? ? ? ? ? ?.target? ? ? ? ? ? ? 描述一組systemd的單元
四.修復(fù)MBR扇區(qū)故障
MBR位于第一塊硬盤(/dev/sda)的第一個物理扇區(qū)處,總共512字節(jié)
1.備份MBR扇區(qū)數(shù)據(jù)到其他磁盤(/dev/sdb1)
mkdir?/backup
mount?/dev/sdb1 /backup
dd if=/dev/sda?of=/backup/mbr.bak bs=512 count=1
(把sda512的引導(dǎo)程序復(fù)制到指定地點)
模擬破壞
dd if=/dev/zero of=/dev/sda bs=512 count=1
進入急救模式
修復(fù)MBR引導(dǎo)
mkdir /backupdir
mount /dev/sdb1 /bak
dd if=/backupdir/grub.bak of=/dev/sda
exit
?五.修復(fù)GRUB菜單
mkdir?/bak
mount?/dev/sdb1 /bak
dd if=/dev/sda?of=/bak/grub.bak bs=446 count=1
(把sda446的GRUB復(fù)制到指定地點)
模擬破壞
dd if=/dev/zero of=/dev/sda bs=446 count=1
修復(fù)GRUB菜單
mkdir /backupdir
mount /dev/sdb1 /bak
dd if=/backupdir/grub.bak of=/dev/sda
exit
六.遺忘密碼并重置
重置root密碼
chroot /mnt/sysimage
passwd root
exit
reboot
總結(jié)
MBR引導(dǎo)512字節(jié),是sda的第一個物理扇區(qū),恢復(fù)時首先把sda備份到sdb在進急救模式,在進安全模式,創(chuàng)建掛載點,把備份在sdb中的mbr文件掛載到這個臨時掛載點上,在復(fù)制到sda,最后檢測查看。
原文鏈接:https://blog.csdn.net/qq_59161414/article/details/125708492
相關(guān)推薦
- 2022-06-01 C語言超詳細講解字符串相乘_C 語言
- 2022-03-21 C++存儲方案和動態(tài)分配_C 語言
- 2022-11-11 詳解React?Native項目中啟用Hermes引擎_React
- 2023-08-12 JQ 實現(xiàn)復(fù)制到剪切板
- 2023-03-15 k8s編排之StatefulSet知識點詳解一_云其它
- 2022-11-06 Python?munch包?/Munch()?的用法詳解_python
- 2023-02-18 go?gin?正確讀取http?response?body內(nèi)容并多次使用詳解_Golang
- 2022-04-14 如何解決:git push error: failed to push some refs to
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支