标签 - grub2

grub2    2020-02-02 09:54:08    236    0    0

环境变量

root

根目录名称,如

  1. grub> set root=(hd0,msdos1)

设置root为第一个硬盘的第一个MBR分区,之后文件名就无需指定设备名:

  1. grub> linux /vmlinuz-4.18

prefix

  • prefix变量是/boot/grub的绝对路径,一般prefix变量在GRUB2启动时赋值,由grub2-install提供的信息获取,root变量由prefix变量确定。
  • 例如GRUB安装在第一块硬盘的第一个分区,prefix可能被设置为(hd0,msdos1)/boot/grub,root就会被设置为(hd0,msdos1)。
  • 由于root变量由prefix变量设置,是prefix的根目录,所以一般将内核文件和ramdisk文件放在/boot目录,GRUB相关的目录和文件都在该目录下,ESP分区在/boot/efi。

pager

如果设置为1,则输出占满屏幕后会等待键盘输入后翻页,默认会一直滚动到结束。

chosen

执行一个菜单入口后,chosen变量被设置为菜单标题。如果选择的是子菜单,父级标题和子标题用">"隔开。

timeout

设置在启动默认内核之前的超时秒数,有键盘输入就会中断倒计时。
设置为0表示不显示菜单,直接启动;设置为-1表示无限等待。

gfxpayload

控制Linux内核启动时的视频模式,替代内核的"vga="引导选项。
可以设置为text,以通常的文字模式启动;设置为keep可以预留"gfxmode"设置的图形模式;也可以设置为"gfxmode"的任何允许值以图形模式启动。
该变量默认值是和平台相关的,在本地是文字模式的平台,如PC BIOS平台,默认值是text;其他情况下是auto或特定的视频模式。
可以通过/etc/default/gru

grub2    2020-02-01 07:03:33    240    0    0

GRUB简介

  • 简单来说,bootloader(引导加载程序)是计算机启动时执行的第一个程序,这种说法其实不太准确,bootloader一般是说嵌入式的引导程序,bootloader=PC BIOS+GRUB/LILO/Bootmgr等引导程序,像开源的嵌入式引导加载程序u-boot可以称为两阶段引导程序(嵌入式Linux中没有BIOS,所以u-boot直接从flash中运行),GRUB为单阶段bootloader。
  • bootloader将控制权转交给操作系统内核(如Linux),操作系统内核是操作系统的最基本部分,负责管理内存、进程、设备驱动程序、文件系统、网络等。
  • GRUB非常灵活,广泛支持各种操作系统,还可以识别文件系统和内核文件的格式,用户只需要指定内核的文件名以及内核所在的磁盘驱动器、分区。
  • GRUB支持菜单模式和命令行模式。

GRUB2和之前版本的区别

  • GRUB2重写了GRUB,保留了之前版本(现在叫做Legacy GRUB)的很多特性。
  • GRUB2的配置文件为grub.cfg,之前的配置文件为menu.lst或grub.conf,增加了新的语法和命令。grub.cfg由grub-mkconfig自动生成,使内核版本升级更容易。
  • 分区序号现在从1开始,而不是原来的从0开始。
  • 配置文件现在更像脚本语言,支持变量、条件和循环。
  • GRUB刻意不实现对文件系统的写入,以便将引导加载程序导致文件系统损坏的可能性降到最低,因此GRUB不能靠写普通文件来保存信息,所以就提供了environment block机制来存储少量信息,environment block是预先分配的1024字节文件,通常在/boot/grub/grubenv,在重新启动时可以使用少量的永久存储,通过在GRUB中使用save_envload_env或在运行的操作系统中使用grub-editenv工具实现环境变量的保存和读取。
  • GRUB2有更可靠的方法找到自己的文件和多个磁盘上的目标内核,并且有命令通过文件系统标签或通用唯一标识符(UUID)查找设备。
  • GRUB Legacy仅支持PC BIOS,GRUB2支持PC BIOS、PC EFI、PC coreboot、