Linux GRUB介绍与设置

一、什么是GRUB?

GNU GRUB(GNU GRand Unified Bootloader,简称“GRUB”)是一个来自GNU项目的启动引导程序. GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

GRUB支持直接和链式加载的引导方法。GRUB能用于几乎所有操作系统、绝大多数流行的文件系统以及几乎所有的系统BIOS所能识别的硬盘。

以下图片是Linux下的GRUB引导界面示例:

d1abefc0026803b1ed584bd2911a1401.png

按下e见可以编辑所选菜单对应的grub菜单配置项,按下c键可以进入grub命令行交互模式。

二、GRUB2和GRUB Legacy区别

目前 GRUB 分成 GRUB legacy 和 GRUB 2。版本号是 0.9x 以及之前的版本都称为 GRUB Legacy ,从 1.x 开始的就称为 GRUB 2,目前没有特别说明GRUB版本一般是指GRUB 2,查看GRUB版本方法为grub-install --version

GRUB 2 是源自于一个名为 PUPA 的项目,目的是建立下一代的 boot loader

GRUB 2 几乎是从零开始开始开发的,它和 GRUB Legacy 不同的地方有很多,例如支持 scripts、国际化语言、动态加载模块、带有 resuce 模式等等,这些都是 GRUB Legacy 所没有的.

虽然GRUB 2是重写的GRUB ,但是他借鉴了grub的一些特征,grub2改进如下:

  1. 引导配置文件采用新名字grub.cfg,新的语法,加入许多新的命令

  2. grub.cfg 是用grub-mkconfig自动产生的,由update-grub维护,在执行update-grub之前修改的配置都不会 生效,这样可以容易的应对内核升级这样情况。

  3. grub2中的分区号不再是以0开始,而是以1开始。

  4. 配置文件是不可写的,而是修改文件后用命令自动更新

  5. grub2有更可靠的方法在磁盘上有多系统时发现文件和目标内核,可以用命令发现系统设备号或者UUID。

  6. 更多的文件系统支持,如ext4 hfs ntfs

  7. grub2可以直接从lvm和raid读取文件

  8. 在grub中的stage1 stage1.5 stage2已经被取消

  9. grub2引入很多设备模块,允许core镜像更小

  10. 支持脚本,包括简单的语法

  11. 在启动时没有选择菜单的话,按住shift即可强制显示菜单

  12. 可以使用grub-install -v来查看系统的grub版本

三、GRUB2配置
  1. 主要配置文件

/boot/grub/grub.cfg -即使是root也不要编辑它,它在每次update-grub后自动生成
/etc/default/grub - 改变引导菜单外观的主要配置文件
/etc/grub.d/ - 各种用于生成grub.cfg的脚本文件,每次update-grub时会执行里面的文件

  1. 通过/etc/default/grub文件生成grub.cfg

grub-mkconfig是根据/etc/default/grub文件来创建配置文件的。该文件中定义的是grub的全局宏,修改内置的宏可以快速生成grub配置文件。实际上在/etc/grub.d/目录下还有一些grub配置脚本,这些shell脚本读取一些脚本配置文件(如/etc/default/grub),根据指定的逻辑生成grub配置文件。

在/etc/default/grub中,使用"key=vaule"的格式,key全部为大小字母,如果vaule部分包含了空格或其他特殊字符,则需要使用引号包围;完全没有必要直接改/boot/grub/grub.cfg或者/etc/grub.d/下的文件

更多关于GRUB可以参考这个官方文档https://help.ubuntu.com/community/Grub2

以下是常见的GRUB配置全局宏:

# If you change this file, run 'update-grub' afterwards to update

GRUB_DEFAULT=0
#设置默认启动项,按menuentry顺序如果要默认从第四个菜单项启动,数字改为3,若改为 saved,则默认为上次启动项

GRUB_TIMEOUT="10"
#设置进入默认启动项的等候时间,默认值10秒,按自己需要修改,单位为秒改改为零和负值为无限等待操作

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` 
#获得发行版名称(比如Ubuntu, Debian,也可以自定义为其他名称)

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#选择启动的环境,“quiet splash”为图像界面,“text”为文本界面

#GRUB_CMDLINE_LINUX="noresume" 
#手动添加内核启动参数,比如 acpi=off noapic 等可在这里添加
# 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
#设定图形介面分辨率,如不使用默认。把前面#去掉,把分辨率改为800x600或1024x768

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
#取消注释以阻止GRUB将传递参数 "root=UUID=xxx" 传递给 Linux内核

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"
#定是否创建修复模式菜单项,前面有#注释(建立修复模式).前面没有#注释(不建立修复模式

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1" #当GRUB菜单出现时发出鸣音提醒,户无法看到屏幕特别有用,默认关闭
四、 GRUB工具命令
命令说明
grub-install生成 Grub 的配置文件(通常是 /boot/grub/grub.cfg),根据系统中已安装的操作系统和内核生成引导菜单。它会扫描系统中的可引导文件并生成菜单项。
grub-mkconfig生成 Grub 的配置文件(通常是 /boot/grub/grub.cfg),根据系统中已安装的操作系统和内核生成引导菜单。它会扫描系统中的可引导文件并生成菜单项。
grub-editenv用于编辑 Grub 的环境变量。这些环境变量包括默认启动项、引导选项和其他配置参数。
grub-mkrelpath生成相对路径,特别是在配置多重引导时使用。它可用于生成可用于配置文件中的相对路径
grub-mkimage生成 Grub 的镜像文件。镜像文件是包含 Grub 模块和配置文件的单个文件,可用于在无法直接访问文件系统的情况下引导系统。
grub-reboot设置下一次引导时要使用的默认引导项。使用该命令,您可以设置系统下一次启动时自动选择的引导项。
grub-set-default设置默认的引导项。它允许您将特定的引导项设置为默认选项,以便在引导时自动选择该项。
grub-probe用于探测系统中的设备和文件系统。它可以识别硬盘、分区和文件系统类型。
update-grub用于更新 Grub 的配置文件并重新生成引导菜单。它会扫描系统中已安装的操作系统和内核,并根据配置文件的规则重新生成 Grub 的引导菜单
五、 定制GRUB的步骤

修改/etc/default/grub文件(Ubuntu16等系统修改该配置文件)

vim /etc/default/grub
增加或者修改已有GRUB参数设置,例如 GRUB_TIMEOUT="10"
保存退出

执行命令sudo update-grub, 更新/boot/grub/grub.cfg文件中,然后生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GrubLinux系统中的引导程序,它是一种可以在启动时让用户选择操作系统的程序。 Grub可以用来启动多个不同的操作系统,包括Linux、Windows和BSD等。Grub的配置文件位于/boot/grub/grub.cfg。 以下是一些常见的Grub设置: 1.设置默认启动项:在 grub.cfg 文件中,使用 set default="X" 命令,将 X 设置为默认启动项的编号。 2.设置超时时间:在 grub.cfg 文件中,使用 set timeout=Y 命令,将 Y 设置为超时时间,单位为秒。如果用户没有选择启动项,Grub会自动选择默认启动项。 3.添加新的启动项:在 grub.cfg 文件中,使用 menuentry 命令来添加新的启动项。例如,要添加一个名为“Ubuntu”的启动项,可以使用以下命令: menuentry "Ubuntu" { set root=(hd0,1) linux /vmlinuz root=/dev/sda1 initrd /initrd.img } 这个命令将创建一个名为“Ubuntu”的启动项,并指定内核和根文件系统。 4.修改启动项:在 grub.cfg 文件中,找到要修改的启动项,并修改参数。例如,要修改“Ubuntu”启动项的内核参数,可以使用以下命令: menuentry "Ubuntu" { set root=(hd0,1) linux /vmlinuz root=/dev/sda1 new_param=value initrd /initrd.img } 这个命令将修改“Ubuntu”启动项的内核参数,将 new_param 设置为 value。 5.设置分辨率:在 grub.cfg 文件中,使用 set gfxpayload=1024x768 命令,将分辨率设置为 1024x768。这个命令将设置 Grub 的图形界面分辨率。 以上是一些常见的Grub设置,可以根据需要进行修改。但是,在修改 Grub 配置文件之前,请先备份原始文件,以防出现问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值