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

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

  • 问题:
  • 解决办法:
  • 如何知道你的系统是legacy还是UEFI启动
  • 关于启动模式legacy和UEFI的区别
  • (/etc/default/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使用说明

你可能感兴趣的:(异常处理,Linux)