Ubuntu修改grub和grub.cfg文件不起作用

問題:

爲了修改Ubuntu默認啓動,我修改/boot/grub/grub.cfg 和 /etc/default/grub 文件都不生效。啓動界面依然不變。各種參數也不生效,比如timeout之類的,我設置0 或者10 ,啓動界面的默認等待時間還是10秒,我也使用了sudo update-grub命令來更新。百般嘗試,貌似引導界面的選項沒有任何改變。

解決辦法:

問題在於,我的系統是UEFI啓動,所以我一直在修改的 /boot/grub/grub.cfg,這個啓動文件其實並不啓動,因爲這個文件是給LEGACY啓動模式用的,一直在啓動是/boot/efi/EFI/ubuntu裏面的grub.cfg文件。
再次修改/boot/efi/EFI/ubuntu/grub.cfg,引導界面才變化。

如何知道你的系統是legacy還是UEFI啓動

進BIOS:Boot Options->EFI Optimized Boot設置爲Disabled爲legacy啓動;Boot Options->EFI Optimized Boot設置爲Enable爲UEFI啓動。

關於啓動模式legacy和UEFI的區別

UEFI:新模式,其啓動順序:開機→UEFI初始化→引導操作系統→進入操作系統啓動。速度相對lagacy模式要更快。
UEFI只支持64位的操作系統,UEFI模式下的系統會有兩個很小的分區,一個叫ESP(EFI系統分區),另一個MSR(微軟保留分區,通常爲128MB).MSR是窗口要求的分區.ESP對UEFI啓動模式很重要,UEFI的引導程序是後綴名爲.efi的文件存放在ESP分區中的,ESP分區採用fat32文件系統。此外,可能還存在一個小分區叫WinRe Tools,這個是在Win8中的恢復分區。體積也很小。
UEFI啓動模式:(GPT分區表格式+ UEFI啓動模式+ x64的系統)

Legacy:傳統BIOS傳輸模式啓動順序:開機→BIOS初始化→BIOS自檢→引導操作系統→進入系統。
傳統硬盤引導記錄爲MBR格式,MBR無法支持超過2T的硬盤。但擁有最好的兼容性。
Legacy啓動模式:(MBR主引導記錄分區格式+ Legacy啓動模式)

總結:UEFI 是新式的BIOS ,Legacy是傳統BIOS 。在UEFI 模式下安裝的系統,只能用UEFI 模式引導;同理,如果在Legacy模式下安裝的系統,也只能在Legacy模式下進系統。UEFI 只支持64 位系統且磁盤分區必須爲GPT 模式,傳統BIOS 使用INT13 中斷讀取磁盤,每次只能讀64KB ,非常低效,而UEFI 每次可以讀1MB ,載入更快。此外,Win8 ,更是進一步優化了UEFI 支持,號稱可以實現瞬時開機。

在Legacy和UEFI下的MBR和GPT的區別:
MBR :主引導記錄(Master Boot Record ,縮寫:MBR ),又叫做主引導扇區,是計算機開機後訪問硬盤時所必須要讀取的首個扇區。

GPT:GUID分區表,磁盤驅動器容量可以大得多,大到操作系統和文件系統都沒法支持。它同時還支持幾乎無限個分區數量,限制只在於操作系統,Windows支持最多128個GPT分區。

(/etc/default/grub)開機引導文件說明

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#屬性名:默認啓動項(就是我要的開機默認啓動系統)
#值說明:
#數字:從0開始(按照開機選擇界面的順序對應)兩級目錄直接使用“1>3”,
#字符串:直接寫選項的全名。二級目錄下直接使用 > 大於號連接例如:“Advanced options for Ubuntu> Ubuntu, with Linux 4.9.90xenomai-3.0.7#saved:默認上次的啓動項

#GRUB_HIDDEN_TIMEOUT=0
#屬性名:是否隱藏菜單(grub2不再使用)
#值說明:0:不隱藏,1:隱藏

GRUB_HIDDEN_TIMEOUT_QUIET=true
#屬性名:是否顯示等待倒計時
#值說明:true:不顯示,false:顯示

GRUB_TIMEOUT=10
#屬性名:進入默認啓動項的等候時間
#值說明:單位:秒,默認10秒,-1表示一直等待

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#屬性名:內核啓動參數的默認值
#值說明:quiet splash爲不顯示啓動信息,安靜的啓動,如值爲空則顯示啓動信息

GRUB_CMDLINE_LINUX=""
#屬性名:手動添加內核啓動參數
#值說明:默認爲空,可以添加你需要的參數,以 “name=value” 的格式添加,多個參數用空格隔開
#例如:GRUB_CMDLINE_LINUX="name1=value1 name2=value2"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
#屬性名:是否使用圖形介面
#值說明:默認使用圖像界面,去掉前面的“#”則使用控制檯終端

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'

#GRUB_GFXMODE=640x480
#屬性名:圖形界面分辨率
#值說明:分辨率啦(還要怎麼說明),修改時記得去掉前面的“#”

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
#屬性名:grub命令是否使用UUID
#值說明:不知道是幹什麼的,不常用(如果你知道,歡迎留言,謝謝)

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
#屬性名:是否創建修復模式菜單項
#值說明:true:禁用,false:使用,默認false

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
#屬性名:啓動時發出嗶嗶聲
#值說明:默認不發聲,去掉“#”則發聲,值是什麼意思不明白(應該是發出聲音方式吧)

修改之後記得執行sudo update-grub,該命令作用是更新原來的/boot/grub/grub.cfg文件,當然我們也可以直接修改/boot/grub/grub.cfg文件,直接修改grub.cfg就不要執行update了。

grub.cfg使用說明

建議參考鏈接:grub.cfg使用說明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章