linux 更改 引导分区,Linux系统引导过程及引导修复
0.Linux系統引導過程:
1.通電
2.bios初始化
3.磁盤引導階段
4.grub2文件引導程序
5.內核加載
6.系統初始化鏡像
7.系統啟動級別
8.超級用戶密碼
以下內容是針對各過程會出現的問題及提出的解決方案
1.通電
如果沒有通電,根本就無法開機,所以需要去檢查電源,沒電買電就行了,這和系統本身沒有關系
2.bios初始化
對硬件進行檢測,初始化硬件時鐘(內存、硬盤等硬件設備沒插好,會發出蜂鳴聲報警)
bios是一個寫入到硬件(主板)上的一個軟件程序,在開機時,計算機系統主動執行的第一個程序,bios會依據使用者的設定去取得能開機的硬盤,并且到該硬盤里面去讀取第一個扇區的mbr位置
3.磁盤引導階段
主引導記錄(mbr):所在位置0磁道1扇區,硬盤容量446byte放置最基本的開機管理程序,開機管理程序目的是加載核心文件
mbr作用:記錄grub2引導文件的位置,讀取這個文件以后,這個文件里面記錄了/boot分區的位置并且指定在啟動時要讀取的文件
當mbr數據丟失,系統會因為找不到啟動分區而停止啟動
如何知道mbr在系統哪塊磁盤里面?
執行 fdisk -l 命令 ,* 在哪一個分區上,這個分區所在的設備上面就有mbr
問題模擬:
系統磁盤/dev/nvme0n1
dd if=/dev/zero of=/dev/nvme0n1 bs=446 count=1 清空系統dev/nvme0n1上的mbr數據
恢復方式:
用光盤進入系統挽救模式 :
在系統安裝界面選擇Troubleshooting系統排錯選項,進入Troubleshooting排錯界面,選擇系統挽救模式
進入挽救模式環境,如果想要還原根目錄,需要將你的系統掛載到/mnt/sysimage目錄下
顯示四個選項:繼續、只讀掛載、跳到一個shell、退出重啟,這里我們選擇繼續
執行chroot /mnt/sysimage命令,還原根目錄內容,再執行grub2-install /dev/nvme0n1命令,恢復磁盤的文件引導程序,之后,執行兩次exit命令退出,開啟系統選擇硬盤驅動系統就可以開啟了
4.grub2文件引導
grub2引導文件分別在/boot/grub2/grub.cfg 、/boot/loader/entries/xxxxxxxxx.conf兩個文件中
這兩個文件里記錄了系統啟動過程中的一系列文件,開機時等待5秒,標題設定,
第一個做的事:設定你啟動的根等于系統第一塊硬盤的第一個分區(/boot分區),指定這個分區的目的是下一步要讀取這個分區里的資源:內核鏡像、系統初始化鏡像,讀取了這些文件以后,才能完成系統初始化過程
rhel8中:
grub2.cfg文件只指定了根等于系統第一塊硬盤的第一個分區(/boot分區)
/boot/loader/entries/xxxxxxxxx.conf文件里有系統下一步啟動要讀取到的資源
模擬問題:
rm -fr /boot/loader/entries/*
修復:
kerne-install add 內核版本號 內核鏡像
kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz
手動引導
set root='hd0,msdos1'
linux /vmlinuz-3.10.0-957.el7.x86_64 ro root=/dev/nvme0n1p3
initrd /initramfs-4.18.0-80.el8.x86_64.img
boot
刪除系統啟動時需要的grub2引導文件
重啟系統,出現如下界面,需要手動引導
指定啟動的根等于系統第一塊硬盤的第一個分區(set root=‘hd0,msdos1’),
內核鏡像:加載內核版本到根分區,根目錄的設備名稱和你系統中的一致,
系統初始化鏡像,
開啟(boot)
開啟后,這次手動引導并沒有從根本上解決問題,當你下次開啟系統仍需要手動引導
執行kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz命令將需要加載的文件永久記憶在系統中
$(uname -r) 表示內核版本號
如果損毀了這兩個文件后,沒有重啟,在命令行輸入這條命令就可以恢復kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz
如果重啟了,也可以用光盤驅動進入挽救模式環境下直接執行這條命令對grub2文件進行恢復
若是grub.cfg文件損毀,在開啟后需要執行grub2-mkconifg > /boot/grub2/grub.cfg命令在系統中永久恢復
5.內核加載
內核加載所需要讀取的文件:
/boot/vmlinuz-$(uname -r)
加載內核作用:
系統初始化硬件設備
只讀掛載/設備,為下一步系統初始化做準備,因為/設備掛載后才可以讀取里面的數據,才能去加載系統里面的服務,去對我們的服務進行初始化
問題出現:
rm -fr /boot/vmlinuz-$(uname -r) ## 系統會因找不到這個文件而引導不起來
恢復: 重裝內核
用光盤驅動進入到挽救模式
chroot /mnt/sysimage ## 得到一個真實的/掛載
mount /dev/cdrom /mnt ##內核鏡像載光盤,將光盤掛載到/mnt下,
cd /mnt/BaseOS/Packages ##進入到/mnt/就會有數據
rpm -ivh kernel-core-xxxxx.rpm --force ##安裝內核鏡像軟件包
rhel8: mv /boot/vmlinuz-kernel-xxxxx /boot/vmlinuz-xxxxx ##企業8里可直接移動內核鏡像到/boot分區
執行兩次exit后,重啟客戶機就可以了
6.系統初始化鏡像
文件路徑/boot/initramfs-4.18.0-80.el8.x86_64.img
作用:
加載系統時鐘
加載selinux
加載系統主機信息
加載/etc/fstab文件中磁盤掛載策略
加載磁盤配額
初始化系統程序開啟開機啟動服務
開啟虛擬控制臺
開啟圖形
問題出現: rm -fr /boot/initramfs-4.18.0-80.el8.x86_64.img
恢復:
進入挽救模式下,執行chroot /mnt/sysimage命令,得到一個真實的/掛載
再執行 mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) 命令,恢復系統初始化鏡像文件
退出后,使用硬盤驅動重新啟動系統就可以了
7.系統啟動級別
級別說明
0 關機
1 單用戶
2 無圖形網絡模式
3 無圖形網絡模式
4 無圖形網絡模式
5 有圖形網絡模式
6 重啟
問題出現:
systemctl set-default reboot.target ##系統在開機時無限重啟
恢復:
在開機選擇界面按進入到引導文件編輯模式
在內核加載選項最后加入啟動級別5
ctrl+x啟動
systemctl set-default graphical.target ## 系統在開機時開啟圖形
8.超級用戶密碼忘記
問題:超級用戶密碼忘記,無法登錄
恢復:
1.在開機選擇界面按進入到引導文件編輯模式
2.在內核加載選項最后刪除到ro選項
3.更改ro---->rw (只讀改為讀寫,如果你只讀掛載 "/ ",你就更改不了)
4.加入rd.break參數(使系統初始化終止)終止系統啟動,進入單用戶模式
5.ctrl+x啟動,之后就進入到單用戶模式了
6.執行chroot /sysroot命令,切換到我們真實的shell,進入到超級用戶模式(whoami)
7.更改超級用戶密碼:echo coffee| passwd --stdin root
如果selinux是開啟狀態,它不識別你的更改,這時需要建立一個文件/.autorelabel,重啟selinux;如果selinux是關閉狀態,就不用建立此文件
8.touch /.autorelabel ##當/.autorelabel文件存在selinux會重新初始化
Li_barroco
發布了20 篇原創文章 · 獲贊 0 · 訪問量 2110
私信
關注
標簽:引導,修復,初始化,boot,系統,內核,文件,Linux,加載
來源: https://blog.csdn.net/weixin_45792518/article/details/104555193
總結
以上是生活随笔為你收集整理的linux 更改 引导分区,Linux系统引导过程及引导修复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux在shell中获取系统时间,l
- 下一篇: 拷贝 ioutils linux,使用A