目录

GRUB2 环境变量

优质
小牛编辑
149浏览
2023-12-01

GRUB2的环境变量大致可以分为两类,第一类是自动设置的变量,也就是这些变量的初始值由GRUB2自动设置,其值必定存在且不为空。第二类是手动设置的变量,它们没有初始值(或者初始值为空),需要经过手动明确设置之后才能使用。

大多数有特定含义的环境变量都是附属于特定附加模块的,只有加载了这些模块之后,这些环境变量才变得有意义。所以从模块的角度看,GRUB2的环境变量又可以分为三类:(1)核心变量,GRUB2核心提供的变量,不依赖于任何可加载模块,这样的变量只有"cmdpath prefix root"三个,而且它们的初始值都由GRUB2自动设置。(2)模块变量,绝大多数有特定含义的环境变量都属此类。(3)脚本变量,这是为了方便编写grub.cfg脚本而设置的变量,没有特殊含义,也不依赖于特定模块,与一般的bash脚本中的变量类似。有关GRUB2脚本的完整说明可以参考GRUB2手册中的"Writing full configuration files directly"部分,基本上其语法与bash脚本完全一致,上手非常容易。

特殊变量

下面列出的变量都是有特定含义的变量,这里只列出常用的一些变量,完整的列表可以参考GRUB2手册中的"Special environment variables"部分。

?
上一条命令的返回值,零表示成功,非零表示失败[与bash一样]。由GRUB2自动设置。你只能使用此变量,而不能修改它。
check_signatures
是否在加载文件时强制验证签名,可以设为'enforce'或'no'
chosen
当前被执行的菜单项名称(紧跟"menuentry"命令之后的字符串或者'--id'选项的参数),例如'Windows 7'。由GRUB2自动设置。你只应该使用此变量,而不应该修改它。
cmdpath
当前被加载的"core.img"所在目录(绝对路径)。例如:UEFI启动可能是'(hd0,gpt1)/EFI/UBUNTU'或'(cd0)/EFI/BOOT',BIOS启动可能是'(hd0)'。由GRUB2自动设置。你只应该使用此变量,而不应该修改它。
debug
设为'all'时表示开启调试输出[会显示大量信息,谨慎开启]
default
默认选中第几个菜单项(从'0'开始计数)
fallback
如果默认菜单项启动失败,那么就启动第几个菜单项(从'0'开始计数)
gfxmode
设置"gfxterm"模块所使用的视频模式,可以指定一组由逗号或分号分隔的模式以供逐一尝试:每个模式的格式必须是:'auto'(自动检测),'宽x高','宽x高x色深'之一,并且只能使用VBE标准指定的模式[640x480,800x600,1024x768,1280x1024]x[16,24,32]。可以在GRUB SHELL中使用"videoinfo"命令列出当前所有可用模式。默认值是'auto'。
gfxpayload
设置Linux内核启动时的视频模式,可以指定一组由逗号或分号分隔的模式以供逐一尝试:每个模式的格式必须是:'text'(普通文本模式,不能用于UEFI平台),'keep'(继承"gfxmode"的值),'auto'(自动检测),'宽x高','宽x高x色深'之一,并且只能使用VBE标准指定的模式[640x480,800x600,1024x768,1280x1024]x[16,24,32]。在BIOS平台上的默认值是'text',在UEFI平台上的默认值是'auto'。除非你想明确设置Linux控制台的分辨率(要求内核必须"CONFIG_FRAMEBUFFER_CONSOLE=y"),或者打算在BIOS平台上使用图形控制台(要求内核必须"CONFIG_FRAMEBUFFER_CONSOLE=y"),否则不要设置此变量。
gfxterm_font
设置"gfxterm"模块所使用的字体,默认使用所有可用字体
grub_cpu
此GRUB所适用的CPU类型。例如:'i386', 'x86_64'。由GRUB2自动设置。你只应该使用此变量,而不应该修改它。
grub_platform
此GRUB所适用的平台类型。例如:'pc', 'efi'。由GRUB2自动设置。你只应该使用此变量,而不应该修改它。
lang
设置GRUB2的界面语言,必须搭配"locale_dir"变量一起使用。简体中文应设为'zh_CN'。
locale_dir
设置翻译文件(*.mo)的目录,通常是'$prefix/locale',若未明确设置此目录,则禁止国际化。
pager
如果设为'1',那么每一满屏后暂停输出,等待键盘输入。缺省是'',表示不暂停。
prefix
绝对路径形式的'/boot/grub'目录位置(也就是GRUB2的安装目录),例如'(hd0,gpt1)/grub'或'(hd0,msdos2)/boot/grub'。初始值由GRUB在启动时根据"grub-install"在安装时提供的信息自动设置。你只应该使用此变量,而不应该修改它。
root
设置"根设备"。任何未指定设备名的文件都视为位于此设备。初始值由GRUB在启动时根据"prefix"变量的值自动设置。在大多数情况下,你都需要修改它。
superusers
设置一组"超级用户"(使用空格/逗号/分号进行分隔),以开启安全认证的功能。
theme
设置菜单界面的主题风格文件的位置,例如:"/boot/grub/themes/starfield/theme.txt"。关于如何定制界面风格(背景图片/字体/颜色/图标等)的细节,可以参考GRUB2手册中的"Theme file format"部分。
timeout
在启动默认菜单项前,等待键盘输入的秒数。默认值是'5'秒。'0'表示直接启动默认菜单项(不显示菜单),'-1'表示永远等待。