首页
/
每日頭條
/
生活
/
efi系統啟動順序
efi系統啟動順序
更新时间:2024-09-29 11:25:23

efi系統啟動順序(實踐修複Linux無法啟動)1

網管小賈 / sysadm.cc

前幾天偶然碰到了 Linux 系統無法正常引導的問題,一台之前還好端端服務器就這樣趴窩了。

我對系統引導這塊可以說是一窮二白,因此自然産生了毫無懸念的結局,我被這個問題搞得暈頭轉向、七葷八素,完全找不着北。

Linux 系統通常是用作服務器,一般情況下很少重啟或關機,可是一旦重啟失敗,那必将是一場災難。

為了避免以後再遭遇無法修複引導的尴尬場面,于是乎我下定決心,重新捋一遍系統引導修複的功課。

由于 Linux 系統都大同小異,其引導原理也差不太多,這裡暫且以 Rocky Linux 為例,redhat/centos 系可直接參照,而 Debian/Ubuntu 等系也萬變不離其宗。

我們就以實際運用為主,先解決問題,有時間再來細究理論與原理吧,走起!

實驗環境
  • Rocky Linux 8.4
  • VirtualBox 6.1.24

事先安裝好一套 Rocky Linux 系統,确保能正常啟動和使用。

然後将 /boot 目錄下的所有文件和目錄統統删除(删庫跑路的可以在這兒找點感覺哈)。

rm -rf /boot/*

/boot/efi 這個目錄有可能是因為直接建立在 /dev/sda1 上了,所以可能無法被删除,不過其目錄中也會被清空。

删除過後我們重啟系統,就會發現無法正常啟動了。

由于本系統(和 CentOS 8 一樣)是使用的 EFI 的啟動方式,所以啟動畫面直接進入了 EFI Shell 。

efi系統啟動順序(實踐修複Linux無法啟動)2

好,準備工作差不多了,接下來我們開始嘗試修複它。

注意,本文有别于傳統的修複非 EFI 方式的系統引導哦,我們直接整 EFI 的!

進入救援模式

找來原始安裝光盤,用這個光盤啟動,選擇進入救援模式。

注意,光盤系統版本應該與當前系統版本一緻療效最佳。

啟動後選擇 Troubleshooting --> 。

efi系統啟動順序(實踐修複Linux無法啟動)3

再選擇 Rescue a Rocky Linux system 。

efi系統啟動順序(實踐修複Linux無法啟動)4

進入救援前的提示信息,在這兒我選 1 繼續,其他選項好像隻給看看不讓你動手啊!

efi系統啟動順序(實踐修複Linux無法啟動)5

挂載原系統根目錄

為了修複原系統,我們必須切換(挂載)到原系統上才能再進行後續的修複操作。

我們選擇繼續救援模式後,它會接着自動幫我們找到當前系統的根目錄,然後提示我們可以通過以下命令挂載根目錄。

這時我們隻要回車,然後執行命令即可進入我們需要修複的當前系統了。

chroot /mnt/sysroot

efi系統啟動順序(實踐修複Linux無法啟動)6

這裡我要插播一條踩坑消息,有時救援系統未必能成功找到當前系統的根目錄。

如果是這樣就比較麻煩了,甚至像我這種小白可能就修複不了了。

這種情況下,有一種可能是,當前系統分區使用了 LVM 邏輯卷組的原因。

那麼我們就應該先嘗試激活後再挂載它。

如果你成功看到了提示,讓你直接 chroot ,那麼恭喜你,你可以直接進行修複作業了。

救援模式下挂載 LVM

像我平時用于測試,偷懶安裝 Linux 時,會選擇讓安裝程序自動分區,這樣往往就會導緻分區變成了 LVM 的樣子。

當然,還有一些特殊場合,比如有些人希望以後能有機會動态增加分區容量等,那麼就會事先采用 LVM 的形式。

不論是哪種情況,如果的确用了 LVM ,那麼隻能先把它找出來,然後再對它進一步操作。

這裡有一個友情提示,即使是使用了 LVM ,通常救援系統也能很好地識别,所以隻有在不正常識别的情況下才需要我們手動去将它找回來。

如果系統提示可 chroot 挂載,請忽略本節直接進入下一節即可。

1、查看當前系統中的邏輯卷信息

lvdisplay

從輸出結果中可以看到,有兩個邏輯卷,一個是交換分區,一個是根分區。

此外我們也可以看到卷組的名字叫作 rl ,這個是我默認安裝時系統自動起的名字,暫且記住它,一會有用。

efi系統啟動順序(實踐修複Linux無法啟動)7

2、查看當前系統中的邏輯卷組信息

lvm vgscan

和前面查看的信息一緻,卷組就叫 rl 。

efi系統啟動順序(實踐修複Linux無法啟動)8

3、激活邏輯卷

# lvm vgchange -ay 卷組名稱 lvm vgchange -ay rl

注意,命令最後要寫上前面查看到的卷組的名字,本例中剛才我們獲取到的是 rl 。

從輸出結果中我們得知卷組 rl 中有兩個邏輯卷被激活,這兩個就是前面我們查看過的 swap 和 root 兩個分區。

efi系統啟動順序(實踐修複Linux無法啟動)9

是不是真的被激活了呢?

我們可以在執行此命令之前,先查看一下 /dev 下的設備名稱。

如圖示,前後對比之下,很容易發現的确多出來一個叫作 rl 的家夥,不用多說,就是那個誰了。

efi系統啟動順序(實踐修複Linux無法啟動)10

4、挂載邏輯卷分區

# mount /dev/卷組名稱/root 挂載點 mount /dev/rl/root /mnt/sysimage/

挂載前 /mnt/sysimage/ 下啥都木有,挂載後原系統上的文件都粗線了!

efi系統啟動順序(實踐修複Linux無法啟動)11

5、進入挂載後的當前系統

chroot /mnt/sysimage/

efi系統啟動順序(實踐修複Linux無法啟動)12

注意啦!自動識别挂載路徑是 /mnt/sysroot ,和我們手動識别挂載路徑 mnt/sysimage ,意思是一樣的。

設定網絡

成功進入當前系統後,我們還需要網絡的加持,因為等會還需要通過網絡來修複安裝一些必要的組件。

雖然使用光盤來安裝一些組件也是可行的,但是太麻煩了,誰會放着方便不用呢,用光盤來裝的都是有錢有閑的二代哈,我可不是哦!

手動設定網卡,以保證能訪問網絡。

# 查看當前網卡信息 ip addr show

我們可以從圖中看到,網卡設備名稱是 enp0s3 ,實際以你查看到的為準,另外狀态是 UP 啟動狀态。

efi系統啟動順序(實踐修複Linux無法啟動)13

# 确保啟用了網卡,本例網卡名稱為 enp0s3 ip link set dev enp0s3 up

如果網卡狀态是 DOWN 禁用狀态,那麼就用這條命令啟用它。

當然了,通常接上網線的話網卡應該是啟用狀态,所以别忘記接網線哦!

# 設定IP地址,最後的網卡名稱按實際情況修正 # 本例IP地址為 192.168.1.123/24 ,網卡名稱為 enp0s3 ip addr add 192.168.1.123/24 dev enp0s3 # 設定網關,本例為 192.168.1.1 ip route add default via 192.168.1.1

命令完成後,嘗試 ping 一下确認網絡是否連接正常。

efi系統啟動順序(實踐修複Linux無法啟動)14

開啟 sshd後台服務

如果有一些傳輸文件之類的工作要做的話,可以開啟 sshd 。

不過這并不是必選項,視實際需求來吧。

/usr/sbin/sshd -D &

重新安裝 grub2-efi和 shim

安裝 grub2-efi 将會在 usr/lib/grub/ 下生成一些所需的庫文件,比如 x86_64-efi 。

而 shim 則是 shimx64.efi ,用于安全啟動,否則使用 grubx64.efi 。

dnf reinstall grub2-efi shim

efi系統啟動順序(實踐修複Linux無法啟動)15

安裝 kernel

完全可以安裝指定版本的 kernel ,隻要在後面加上版本号就行了。

你可以手打版本号,也可以用 $(uname -r) 來指定。

# 查看内核版本号 # 比如輸出:4.18.0-305.3.1.el8_4.x86_64 uname -r # 列出可安裝的内核版本 # 比如有兩個版本:一個是 4.18.0-305.3.1.el8_4,另一個是 4.18.0-305.12.1.el8_4 dnf list kernel # 安裝指定版本的内核 dnf reinstall "kernel-*-$(uname -r)" # 或者分别安裝 dnf reinstall "kernel-headers-$(uname -r)" dnf reinstall "kernel-core-$(uname -r)" dnf reinstall "kernel-modules-$(uname -r)"

efi系統啟動順序(實踐修複Linux無法啟動)16

我測試的結果是,我隻安裝了 kernel-core 就成功修複了。

如果你嫌麻煩,也不計較當前系統裡會裝太過多的東西,那麼像下面這樣來個簡單粗暴的也行。

dnf reinstall kernel*

安裝完成後,我們立馬就可以看到 /boot 目錄下的幾個久違的子目錄都回來了。

但是要注意哈,我們也能看出來,關鍵的 grub.cfg 并沒有粗線,所以先不要激動,還得繼續努力哈!

efi系統啟動順序(實踐修複Linux無法啟動)17

重新生成 grub.cfg文件

發行版名稱是指當前系統的 Release ,比如 redhat 或 centos 等等。

# grub2-mkconfig -o 輸出目錄/grub.cfg # grub2-mkconfig -o /boot/efi/EFI/發行版名稱/grub.cfg grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg

efi系統啟動順序(實踐修複Linux無法啟動)18

如果沒有報什麼錯誤的話,你就可以大大方方地重新啟動了,不出意外的話,啟動菜單項就都回來了!

如果你安裝有不同版本的 kernel 的話,那麼啟動項會變得多出幾項,不過也不影響啟動系統啦。

小結

前面的内容可以簡單壓縮成三個步驟:

  1. 設定網絡,保證可以使用 YUM 或 DNF 或 APT 等。
  2. 安裝 grub2-efi 和 shim 。
  3. 安裝 kernel 及其組件。
最後的話

小夥伴們,你們測試成功了沒?

雖然我們可以通過這些相對固定的操作來修複引導,但是個人感覺還是要掌握好系統引導的原理才來得實在些,所以今後我會将原理這塊完善起來。

另外我想說的是,通常 Linux 的引導系統不會無緣無故的損壞,可是一旦故障,帶來的麻煩可就不是鬧着玩的了。

而故障發生後,首先做的不是去考慮如何修複它,而應該及時備份或将系統中數據盡快轉移至他處,修複系統總是有風險的,我們得給自己留條退路。

我個人的感覺是,往往出現此類故障,要将它修複成功,就要有接受修複失敗的心理準備。

就像我之前修複過的一個帶有 LVM 的系統,它無法直接識别并挂載系統,然後我手動挂載後又各種缺目錄缺文件,可以說是痛苦至極,最後也沒給搞定。

希望小夥伴們有空就以本文為參考,先練習一下如何修複引導,以後也好有備無患。

好了,啰嗦太多時間了,老闆叫我去準備一下換套服裝,在機房擺個香案,每日三炷香,祈求神明保我服務器風調雨順、平安無事。

嗯,你們猜猜看,我穿的衣服是無量天尊,還是阿彌陀佛?!

網管小賈 / sysadm.cc

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
excel表中怎麼加前綴
excel表中怎麼加前綴
工作中,我們經常在做表格的時候需要添加前綴名稱或後綴名稱,如果是在做好的表格中添加,就要一個一個單元格添加,非常的麻煩;今天小漁老師告訴大家一種方法,快速統一添加好前綴或後綴,還沒關注小漁老師的,記得關注點贊哦!1、首先,打開員工信息表;2...
2024-09-29
excel快捷方式講解
excel快捷方式講解
excel快捷方式講解?作為資料,将Excel2010幫助中的鍵盤快捷方式整理一下,還是能夠大幅度提高工作效率的【注意,我的電腦實測和Excel幫助中有差異,都是操作系統不同惹的禍,注意鑒别】,接下來我們就來聊聊關于excel快捷方式講解?...
2024-09-29
那些令人淚奔的遊戲結局
那些令人淚奔的遊戲結局
那些令人淚奔的遊戲結局?出來混,遲早是要還的,即使你能在自己的遊戲中憑着主角光環大殺四方,憑着SL無限重來,作為被人類創造出來的虛拟角色依舊不能操縱自己的人生,我來為大家講解一下關于那些令人淚奔的遊戲結局?跟着小編一起來看一看吧!那些令人淚...
2024-09-29
送給女神的禮物你們說她會喜歡嗎
送給女神的禮物你們說她會喜歡嗎
送給女神的禮物你們說她會喜歡嗎?1、玫瑰--相約浪漫愛情茫茫人海,相識是一種緣,相知是一種情感謝上天把你賜予了我,我用這紅色玫瑰想告訴你:我愛你感受到我的愛意,願我的愛意伴你分分秒秒,今天小編就來聊一聊關于送給女神的禮物你們說她會喜歡嗎?接...
2024-09-29
福建紅珊瑚景觀
福建紅珊瑚景觀
草珊瑚,珍惜中草藥資源,你可能不認識,但是不可能不認識草珊瑚牙膏。對,就是那個草珊瑚,功效是清熱解毒,資料咽喉炎症特效。發現地點:彰仙嶺。,
2024-09-29
Copyright 2023-2024 - www.tftnews.com All Rights Reserved