2015年5月25日 星期一

(增修) 解決「更新 Fedora 後,仍啟動舊版 Kernel」的問題

前文『解決「更新 Fedora 後,仍啟動舊版 Kernel」的問題』雖解決系統更新後,但仍啟動舊版本核心(Kernel)的問題。可是,隨著 Fedora 的更新,負責啟動管理的 GRUB 有時仍會以錯誤的版本開機。原因不明,可能是更新 Linux 核心的描述檔有些錯誤吧,未正確修改『預設啟動的核心版本』為最新版。
  想找尋更完整的解決辦法,可惜並未找到適當的方法,但是又找到另一個類似的方法,就將它『增補』在原來的辨法之後。
  會仍啟動舊版的核心,主要原因是在設定開機啟動程序那個檔案,在檔案『 /boot/grub2/grub.conf 』的約第 18 列,有一段設定預設啟動版本的腳本,
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi
上例中,預設的設定為『${saved_entry}』,表示它將以『前一次開機』的版本啟動。有些版本設定值為數字,是指會由『開機選單』特定順位的版本開機。
  但是,這些設定都有可能在下一次『更新版本』時,未能正確修改設定,造成『下次開機』時不能使用『最新』或『預設』的開機版本。要修改這個啟動順序,有幾個方式:

一、設定『啟動順位』

Fedora 的某些版本(較早期),都是以數值指定由『開機選單』的某順位啟動。在更新過程中,若這個指定『啟動順位』的數值未正確修改,則仍是指向『上一個版本』的順位。這時只要將該列改為
set default="1"
上例中,是假設『最新版』在『開機選單』的排列順位是第『 1 』位。

注意:下次更新系統核心時,這個動作仍可能要再做一次。

二、設定為『上次啟動』之版本

前幾個版本(約在前文發文時)可以做以下的修改
set default="${saved_entry}"
在更新安裝後,當下次開機在『開機選單』出現時,做一次選擇後,GRUB 這個啟動管理套件,會將這次的啟動版本記錄下來,以後開機就會與自動選擇同一版本啟動。

註一:目前的 Fedora 版本,預設採用這種設定方法。
註二:某些不知原因可能造成此種設定不正常,就要採用下一個方法。

三、設定『預設』啟動版本

若系統更新時,未能自動設定開啟新版本,或不能自動儲存該次開機選項時,就可以手動方式設定『預設』啟動版本。在這個方法裏有幾個命令,各自負責不同的任務,分述如下:

查詢目前『預設』的『開機選單』選項

若要查詢目前『預設』的『開機選單』選項,可以用這個命令
[root@Core-i7 ~]# grub2-editenv list
saved_entry=Fedora (3.19.5-200.fc21.x86_64) 21 (Twenty One)
上例中『Fedora (3.19.5...』是現在的預設選項。待會設定好『新選項』後時,也可用這個命令確認設定的結果。

查詢『開機選單』的選項

查詢目前系統中,使用者可以選擇用以開機啟動的版本選項。這個命令可以列出所有選項
[root@Core-i7 ~]# grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2
Fedora (3.19.7-200.fc21.x86_64) 21 (Twenty One)
Fedora (3.19.5-200.fc21.x86_64) 21 (Twenty One)
Fedora (3.19.4-200.fc21.x86_64) 21 (Twenty One)
Fedora, with Linux 0-rescue-df5c2a2aafa848c887b1698427ed2ef8
除了查詢外,也方便在其它設定命令時,能正確輸入選項名稱。  

設定『預設』的『開機選單』選項

由上一個命令查詢所得所有選項列表,可以確定要選擇哪個選項做為預設值。用滑鼠左鍵將選項整列反白,同時按下【Ctrl】+【Shift】+【C】三鍵複製所選的內容,再同時按【Ctrl】+【Shift】+【V】三鍵貼在下面命令的兩個『 "』之間,
[root@Core-i7 ~]# grub2-set-default "Fedora (3.19.7-200.fc21.x86_64) 21 (Twenty One)"
這個命令會將『預設』選項填入『/boot/grub2/grubenv』這個檔案中。也可以用這個命令將該檔內容顯示在「終端機」上
[root@Core-i7 ~]# grub2-editenv list
saved_entry=Fedora (3.19.7-200.fc21.x86_64) 21 (Twenty One)

後記:

  • 2016-4-17 : 修改查詢命令。

已測試版本:

  • Fedora: 23, 22, 21

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)