摘取自GRUB2中文手册
当链式加载时,GRUB 需要知道根设备的 BIOS 驱动器号。如果 BISONUM 变量正确设置,GRUB 就
不需要猜测驱动器号了。它会改变 BIOS 驱动器在链式加载系统中的映射关系。
当执行菜单项时,GRUB 自动设置 CHOSEN 变量为当前菜单项标题。如果当前在单项是某个菜单的子
菜单,那么 CHOSEN 会包含它的父菜单标题,各个父菜单之间使用 > 分割 。例如 :
“other>fedora>fedora_16” ,表示当前菜单标题是 fedora_16,它的 级菜单是 fedora,更 级菜单是
other。依此类推。
这个选项包含了终端的高亮显示的前景色和背景色的设定,她们之间使用斜线 / 分割。改变这个选项可
以改变默认的基本色彩。默认值是:”black/white”
这个变量包含了普通显示时的前景和背景色。由斜线分割。默认是:”white/black”
色彩必须是以下之一:
black blue green cyan red magenta brown yellow white
light-gray drak-gray
light-blue light-green light-cyan light-red light-magenta
开启这个变量可以从 GRUB 的各个组件会输出调试信息。变量的值是调试选项,它们之间使用空格或者
逗号分割。使用 all 表示开启所有调试选项。
变量值可以设置为某个菜单项的标题或者索引。如果设置了这个选项,那么它所指定的菜单项默认被选中。并且作为自动加载菜单项。
如果某个菜单项含有子菜单那么它必须使用 > 分割各个 级菜单:
Submenu 1
Menu Entry 1
Menu Entry 2
Submenu 2
Submenu 3
Menu Entry 3
Menu Entry 4
Menu Entry 5
如果你想选中 Menu Entry 3 那么应该使用:
set default=”Submenu 2>Submenu 3>Menu Entry 3 ”
这个变量通常使用 GRUB_DEFAULT 变量间接设置。
类似于 default ,这个选项用来指定一个菜单项。当 default 菜单项加载失败的时候,会加载 fallback 的
菜单项。值的格式同 default 选项。
它设置 gfxterm 图形终端的分辨率。你只能在你的显卡通过 VESA BIOS Extensions 支持图形终端的时
候才能使用它。例如:LCD 面板的分辨率可能不能使用这个变量控制。默认值是”auto”。
变量值可以通过逗号或者分号指定多个。GRUB 会依次尝试这些分辨率。分别率的格式应该是:
WIDTHxHIEGHT 或者 WIDTHxHEIGHTxDEPTH
这个变量设置后控制 linux 内核启动后的显示方式。它用来替换 vga= 内核参数。可以设置为:”text” 强
制 linux 以文本模式启动, “keep” 使用 gfxmode 变量的设置。或者所有被 gfxmode 接受的值。
根据你的内核、发行版、显卡和一些不确定因素,使用这个选项可能导致 GNU/linux 发生显示问题。此
时应该设置为 “text” 。
这个选项的默认值因平台而异。在 PC BIOS默认值为 “text” ,其他情况可能是 “auto” 或者是某个有 效的图形模式。
这个选项通常使用 GRUB_GFXPAYLOAD_LINUX 变量设置。
设置 gfxterm 图形终端的默认字体。
这个选项设置 GRUB 搜索图标使用的路径。
这个选项设置 gettext 命令使用的语言编码,它用来翻译字符串 。 通常法语应该设为 “fr” ,简体中文设
为 “zh_CN” 。
grub2-mkconfig 程序会根据当前 OS 的语言设置自动设置这个变量。
这个变量设置翻译文件所在路径 。通常是 /boot/grub2/locale 。如果没有设置此变量,那么国际化选项
是关闭的。
这个变量包含被选中的菜单项文本的前景色和背景色。使用 / 分割前景色和背景色,默认值等于
color_highlight 变量。
这个变量设置未选中菜单项的前景色和背景色。使用 / 分割前景和背景。默认值等于 color_normal 变量。
如果设置为 1 那么每当输出充满屏幕时自动暂停,按下任意键后继续查看下一页。默认是不暂停。
设置 grub 模块和配置文件的路径。通常是 “$root/boot/grub2” 。它通常由 grub2-install 在安装 grub 时
就写在内嵌的配置文件内。grub2-mkrescue 创建的可引导光盘也已经自动设置 root 和 prefix,用户配
置文件内无需设置 prefix 的值。GRUB 模块会根据 prefix 加载,所以它必须正确设置。否则就会提示
error: file not found 。
设置 GRUB 根设备。任何路径中没有指定设备的,都会使用根设备作为默认分区。这个变量应该在
GRUB 启动时由配置文件决定。
例如,如果 GRUB 安装到第一块硬盘的第一个分区,那么 root 应该设为 (hd0,1) ;prefix 应该为
“$root/boot/grub”
这个变量设置一个超级用户列表。参考:权限管理 50
这个变量为包含 GRUB 图形菜单主题的路径。
通常使用变量:GRUB_THEME 设置。
它指定自动加载倒计时时限,单位为秒。GRUB 成功加载菜单配置文件后就立刻开始倒计时,如果在这
段时间内没有任何键盘操作那么加载默认菜单项。如果 unset 这个变量或者设为 -1 那么不自动加载默认
菜单项。
这个变量通常使用 GRUB_TIMEOUT 或者 GRUB_HIDDEN_TIMEOUT 变量设置。
这个功能用来在一次引导时记录下一些信息,下一次启动 GRUB 可以读取这些信息。假设你希望默认菜
单项为最后一次使用的那个。你就需要使用这个。由于空间限制,为了节省代码量同时也是为了防止文
件系统崩溃,GRUB 不能写入文件。因此 GRUB 不能创建或者修改自己的配置文件。因此 GRUB 提供
了环境区块的功能,它用来记录 GRUB 当前的状态,便于日后加载。
环境区块是一个 1024byte 的文件,它通常命名为 /boot/grub2/grubenv 。在 GRUB 中可以使用 load_
env 命令加载它,使用 save_env 写入当前 GRUB 环境变量到区块中。在 OS 中,可以使用 grub2-
editenv 程序编辑区块文件。
由于安全问题,这个功能只能应用在普通磁盘(非 LVM 和 RAID ),不使用文件系统校检 (非 ZFS
) ,使用 BIOS 或者 EFI( 非 ATA, USB 或者 IEEE1275 ) 的平台 。
GRUB_SAVEDEFAULT 变量就是使用环境区块完成自己的功能。
这一章里我们列举所有 GRUB 中的命令。命令被分割到不同的組。有一些只能被永在配置文件和菜单的
全局区域。大部分命令可以出现在任意位置,既可以使用 GRUB 命令行执行,也可以通过配置文件运行。
在救援模式下只有 insmod 、ls、set 和 unset 命令可用。如果你不知道在救援模式下应该干些什么。参
考《GRUB 救援 shell 》
配置文件的语法遵守以下规则:
#
开始的行作为注释行 语法:
menuentry TITLE [`--class=class' ...] [`--users=users'] [`--hotkey=key']
{ COMMAND; ... }
以 TITLE 为名字建立菜单项。当进入这个菜单项后 GRUB 会设定 CHOSEN 变量的值为 TITE,然后
执行花括号内的命令 。最后一条命令成功执行后,如果 OS 内核已经被加载,那么自动执行 boot 命令。
--class 选项可以使用任意次,它把此菜单项归类到某个菜单类别里。菜单类别决定了菜单使用的样式盒。
--users 选项,设置某个特殊的用户才能访问这个菜单。--users=user1 --users=user2 指定两个用户能访
问此菜单。参考:权限管理 50
--hotkey 选项,为菜单项设置一个快捷键,KEY 可以是 某个单个字母,或者是 "tab" "backspace" "
delete " 之一。
实例:
menuentry 'Windows XP' {
insmod fat
search -f /ntldr --set=root
chainloader +1
sendkey enter
}
语法:
submenu TITLE [`--class=class' ...] [`--users=users'] [`--hotkey=key']
{ MENU ENTRIES ... }
定义子菜单,添加一个名为 TITLE 的菜单项,但是这个菜单项包含下级菜单。当进入此菜单时,会显示
花括号内定义的菜单。
--class 选项可以使用任意次,它把此菜单项归类到某个菜单类别里。菜单类别决定了菜单使用的样式盒。
--users 选项,设置某个特殊的用户才能访问这个菜单。参考:权限管理 50
--hotkey 选项,为菜单项设置一个快捷键,KEY 可以是 某个单个字母,或者是 "tab" "backspace" "
delete " 之一。
实例:
menuentry 'Fedora' {
echo 'Fedora'
}
menuentry 'Redhat' {
echo 'Redhat'
}
menuentry 'BSD' {
echo 'Free BSD'
}
submenu 'Other OS' {
menuentry 'Windows 7' {
echo 'Windows 7'
}
menuentry 'Windows XP' {
echo 'Windows XP'
}
}
这些命令可以出现在任意位置,既可以使用 GRUB 命令行执行,也可以通过配置文件运行。
语法:
serial [`--unit=unit'] [`--port=port'] [`--speed=speed']
[`--word=word'] [`--parity=parity'] [`--stop=stop']
初始化串口设备。UNIT 是一个介于 0-3 的整数,它指定了串口端口。默认值为 0,它代表了 COM1 端
口。PORT 是搜索 UART1的 I/O 端口。 SPEED 是传输速率,默认为 9600 。WORD 和 STOP 是数据
的 bit 数和结束位 。数据 bit 数必须是 5 到 8,结束位必须是 1 或 2 。默认值是 8 数据位,1 结束位。
PARITY 可用值为:”no” “odd” “even” ,默认值为 “no”
如果不使用 terminal_out 和 terminal_input 指定 serial 为目标设备,串行端口并不用作信息传输。
语法:
terminal_input [`--append'|`--remove'] [terminal1] [terminal2]
显示/设置输入终端。当不使用参数的时候显示当前激活的可用的输入终端。
--append 添加指定终端到激活的输入终端列表中。列表中的任意终端都可以给 GRUB 提供输入。
--remove ,从输入终端列表中删除指定终端。
因为计算机内部采用并行数据,不能直接把数据发到 Modem,必须经过 UART 整理才能进行异步传输,
其过程为:CPU 先把准备写入串行设备的数据放到 UART 的寄存器(临时内存块)中,再通过
FIFO(First Input First Output,先入先出队列)
传送到串行设备,若是没有 FIFO,信息将变得杂乱无章, 不可能传送到 Modem。
如果没有使用 –append 和 –remove 但是提供了终端,那么只显示指定终端。
terminfo [-a|-u|-v] [term]
通过提供 terminfo 数据库中的项目名设置终端类型,它的值应该类似于 Unix 中 TERM 环境变量的值,
当前可用的终端类型: vt100、 vt100-color、 ieee1275、 dumb 。如果你需要其他的终端类型,请联
系我们,和我们讨论添加新的终端类型。
选项:-a’ (--ascii'),
-u’ (--utf8'), and
-v’ (`–visual-utf8’) ,控制非 ASCII 字符如何显示,-a 用于只
支持 ASCII 的终端,-u 指定 logically-ordered UTF-8 ,-v visually-ordered UTF-8 。(換句话说在不
支持双向文本的终端 会以合适顺序从左向右显示文本;这对 UTF-8 可能不是很合适,只是一个应急方案).
这些命令可以用于菜单或命令行。如果你忘记了某个命令可以输入 help 得到帮助。
acpi [`-1'|`-2']
[`--exclude=table1,...'|`--load-only=table1,...']
[`--oemid=id'] [`--oemtable=table'] [`--oemtablerev=rev']
[`--oemtablecreator=creator'] [`--oemtablecreatorrev=rev']
[`--no-ebda'] filename ...
现代 BIOS 系统通常都包含高级电源管理(ACPI),并且定义了大量表格用来描述 ACPI 兼容的 OS。
在这某些情况下,默认的 table 不适和你的 OS 。你需要使用这个命令去替换默认的表格。
通常这个命令会在 BIOS 的扩展数据段中修改 RSDP(root system description pointer)。使用了–no-
ebda 选项新的表只被 GRUB 知晓,这可以用于 GRUB 的 EFI 仿真。
badram addr,mask[,addr,mask...]
这个命令使用内存管理器筛选掉指定内存区域的错误内存(通常这意味着损坏)。它在 OS 内核正式启动
之前都有效。启动后的内核会从 GRUB 中得到内存映射。通常 Linux GnuMach FreeBSD 和其他多起
动 OS 都支持这个特性。
此命令的语法格式与 memtest86+ 工具相同。需要提供基地址和掩码。Given a page-aligned address
and a base address / mask pair, if all the bits of the page-aligned address that are enabled by the
mask match with the base address, it means this page is to be filtered.
blocklist file
显示 file 的区块列表。
已经加载内核或者已经执行了 chainloader 命令后,执行 boot 会开始引导。通常 boot 会在菜单内的命令
结束后自动执行。
background_image IMAGE
载入指定的图片作为背景. 使用这个命令需要载入 gfxterm 模块,并且输出终端要设置为 gfxterm
insmod png
insmod jpeg
insmod vbe
insmod vga
insmod gfxterm
loadfont /boot/wqy.pf2
#载入字体用来显示中文。参见 字体:17
set gfxmode=1024x768
terminal_output gfxterm
#应该在执行 terminal 命令之前设置 gfxterm 相关的变量。
menuentry "xfpm-general-settings.png" {
background_image (cd)/boot/theme/xfpm-general-settings.png
}
menuentry "grub-splash.png" {
background_image (cd)/boot/theme/grub-splash.png
}
cat [--dos] file
显示 FILE 的内容。实例:
grub> cat /etc/fstab
如果设置了–dos 选项那么按照 dos 格式,把 \r\n 解释为一个换行。否则\r 会被显示为一个特殊字符,\n 会被当作换行。
chainloader [--force] file
链式加载指定文件。通常 file 使用区块列表指定,例如:
chainloader (hd0,msdos1)+1
如果指定了–force 那么强行加载,而不去检查文件是否有正确的标记。这个通常用于加载其他有缺陷的
加载器,例如 SCO UnixWare 7.1。
cpm file1 file2
比较文件 file1 和 file2 。如果二者大小不同那么显示:
Differ in size: 0x1234 [foo], 0x4321 [bar]
如果二者大小相同但是某些字节不同,那么会显示那个字节的地址:
Differ at the offset 777: 0xbe [foo], 0xef [bar]
如果两个文件完全相同那么不显示任何东西。
configfile file
加载一个配置文件。如果 FILE 内包含了菜单定义,那么在加载完毕后立刻进入菜单显示模式。
cpuid [-l]
检查 CPU 特性,这个命令只用于 x86 cpu。当使用了 -l 选项 如果 CPU 支持 long 模式 (64bit),那么返
回 true。
如果没有包含-l 选项,此命令的行为类似与 -l 选项。会在随后的 GRUB 版本中升级它。
crc FILE
显示文件 FILE 的 CRC32 校检和。
date [[year-]month-day] [hour:minute[:second]]
如果没有任何参数那么显示当前的日期和时间。
其他情况下会修改当前时间或者日期。但是只改动指定参数,其他的保持不变。例如:
date 01-01
会改变月和日,但是年和 时分秒 都保持不变。
drivemap `-l'|`-r'|[`-s'] from_drive to_drive
没有使用任何选项那么映射 from_drive 到 to_drive 。某些 OS 不能从非第一块硬盘 引导,此时你需
要这个命令去把第二块硬盘映射成第一块。命令会忽略路径中的非设备的部分。因此你可以放心的使用
$root 或者 $prefix
-s 选项,交换映射。把 from_drive 映射成 to_drive 同时把 to_drive 映射成 from_drive ,也就是两个
设备调换。
-l 选项,显示当前的映射。
-r 选项,重置所有的映射到默认状态。
实例:
drivemap -s (hd0) (hd1)
他会调换第一块和第二块硬盘。
echo [-n] [-e] string ...
显示指定的文本,并且在行尾添加换行。如果使用了-n 不添加换行。如果有多个 word 传入那么各个字
符串之间使用空格分割(类似于 shell 中的命令参数分割)。当然双引号字符串可以使用变量扩展。
echo "root=$root"
显示当前的根设备
-e 选项,解析字符串中的转义序列。
`\\' 反斜线
`\a' 警告音
`\c' 静止添加换行
`\f' 进纸符
`\n' 换行符
`\r' 回车符
`\t' 横向制表符
`\v' 竖直制表符
export envvar
导出变量 ENVVAR,被导出的变量会自动在 configfile 命令加载的子脚本中定义。
false
这个命令不做任何事情,只是退出状态非 0 。 它可以在流程控制语句中使用。
gettext string
翻译 string 到当前语言。
当前语言编码在 GRUB lang 环境变量。翻译文件从 locale_dir 指定的目录中搜索 MO 文件。
gptsync device [partition[+/-[type]]] ...
使用 GUID 分区表的磁盘也支持传统的 MBR 分区表称作 legacy MBR。legacy MBR 只是 GPT 的一个
子集。
这个命令在指定设备的指定分区 添加一个 legacy MBR。TYPE 是 MBR 分区的类型代码。可以是 10
进制也可以是 16 进制(前缀 0x)。在 PARTITION 和 TYPE 之间如果是+号代表此分区激活,- 代表此分
区非激活。只有一个分区可以处在激活状态。如果 + - 和 TYPE 都省略了,那么此分区设置为非激活。
halt `--no-apm'
这个命令关闭计算机,然后关闭电源。如果使用了 –no-apm 那么关闭计算机后不使用 BISO 的 APM
关闭电源。
help [pattern]
显示关于匹配指定模式的命令名的详细帮助文件。如果省略 pattern 你会看到所有的命令简短的列表。
initrd FILE
为已经加载的 linux 内核,加载 initrd,并且设置 linux 内核内存中的参数。这个选项必须在 linux 命令
之后使用。
inttrd16 FILE
在 16bit 模式下加载 initrd,这个命令必须在 linux16 命令后面使用。
insmod MODULE
动态加载名为 MODULE 的 GRUB 模块。不要跟后缀:
insmod fat #正确
insmod fat.mod #错误
keystatus [--shift] [--ctrl] [--alt]
如果 Shift 或者 alt 或者 ctrl 按键处在按下状态,那么退出状态为 0,否则为 1。这个功能对在脚本中使用
特殊控制键很有用。
这个功能只在某些平台 支持。如果 keystatus 不使用任何选项,在支持 keystatus 的平台 退出状态为
0 否则为 1 。
linux FILE .. ...
以 32bit 模式加载 linux 内核 FILE。命令行中剩下的参数都会被作为内核参数传递给内核。注意,每次
使用 linux 命令后,都必须重新加载 initrd。
在 x86 系统 ,内核必须使用 32bit 引导协议。这意味着 vga= 选项无效。如果你希望设置显示模式,你
需要使用 set gfxpayload=1024x768 或者 set gfxpayload=”keep” 。通常 GRUB 发现 vga 命令行参数
时会自动设置 gfxpayload 。linux16 命令可以没有这个限制。
16bit 模式下加载 linux 内核。命令行中剩下的参数都会被作为内核参数传递给内核。注意,每次使用
linux16 命令后,都必须重新使用 initrd16 命令。
内核会使用传统的 16bit 引导协议。它不会导致 vga 内核参数无效。也可以用来加载其他的类 linux 内核
的镜像程序。
这个命令只用于 x86 平台。
list_env [-f FILE]
显示环境区块文件中的变量。如果使用了 -f FILE ,那么显示指定区块文件中的变量。
load_env [-f FILE]
从环境区块文件中载入变量,如果使用了 -f FILE ,那么载入指定区块文件中的变量。
loopback [-d] DEVICE FILE
把镜像文件 FILE 挂载到设备名 DEVICE 。以实现对镜像文件内容的访问。
实例:
loopback loop0 /WinPE.iso
ls (loop0)/
这个命令也可以在 iso 文件中读取文件。
实例,硬盘安装 Fedora-16-i386-DVD.iso:
假设文件放置在 winxp 下 F 盘根目录,设备号为 (hd0,msdos7):
loopback fedora /Fedora-16-i386-DVD.iso
set root='(fedora)'
linux /isolinux/vmlinuz
initrd /isolinux/initrd.img
boot
但是 loopback 和磁盘仿真暂时不是一个东西。所以你不能 chainloader (loop0)+1
若需要引导 img 或者 iso ,你需要使用 memdisk,参见 前言->准备 memdisk 1
ls [arg ...]
类似与 linux ls 命令,显示设备或者文件。
无参数时显示所有 GRUB 已知的设备。
如果参数是一个设备名那么显示指定设备的属性,如果是个绝对目录那么显示目录内容:
loopback fd0 /Ghost82.img
ls (fd0)
ls (fd0)/
normal [FILE]
进入 normal 模式,并且加载配置文件,然后显示 GRUB 菜单。
如果指定了配置文件 FILE 那么加载指定配置文件,否则加载 $prefix/grub.cfg 配置文件。
在 normal 模式,命令、文件系统模块 和加密模块都已经自动加载,并且拥有完整的语法解析器。其他
的模块可以在配置文件中使用 insmod 命令加载。
normal 命令可以嵌套执行。即在 normal 模式下依然可以调用 normal 。它类似于 configfile 命令。
normal_exit
退出当前的 normal 模式。如果当前是最后一个 normal 模式,那么退回到命令行救援模式。
parttool PART COMMANDS
对分区表进行操作。
COMMAND 以如下格式出现
CMD=VALUE :设置某个属性值 或者
CMD+ CMD- :表示开启或关闭某个分区属性,+-和 CMD 之间不能有空格。
目前 parttool 命令对使用 DOS 分区表,MBR 分区表的用户有用。
boot :当开启它激活选中分区(被激活的分区是可引导的),并且取消所有其他分区的激活状态。只能够对主分区 这么做。
parttool (hd0,1) boot+
parttool (hd0,1) boot-
type :改变分区类型,分区类型由一个介于 0x00 ~ 0xFF 的数指定:type=0x80
hidden
当开启这个选项,设置指定分区在分区表中的隐藏位。当关闭这个选项开启隐藏位。这对于 DOS Windos
系统和多个 Fat 格式的主分区同时存在的时候有意义。
password USER clear-password
定义一个用户 USER,并且用明文指定他的密码。
password father hello
password mother boy
这个命令添加了两个用户,并且分别指定它的密码为 hello 和 boy。参考:权限管理 50
password_pbkdf2 USER hashed-PASSWORD
定义一个用户 USER,并且用散列后的密文指定他的密码。调用 grub2-mkpasswd-pbkdf2 计算密文的
散列。参考:权限管理 50
play file | tempo [pitch1 duration1] [pitch2 duration2] ...
tempo 是所有 duration 的单位,设置为 60 代表基于 1 秒,120 代表基于半秒。 pitch 代表声音的频率,
设置为 0 表示声音衰减。duration 代表声音持续的时间。
实例:
play 60 100 2 200 3 300 1
以命令播放 100Hz 的声音持续 2 秒,200Hz 持续 3 秒 ,300Hz 持续 1 秒。
play 120 100 2 200 3 300 1
以命令播放 100Hz 的声音持续 1 秒,200Hz 持续 1.5 秒 ,300Hz 持续 0.5 秒。
如果参数是一个文件名,那么播放指定文件内的音频数据。文件是二进制格式,第一个 32bit 被作为无符
号 32bit 小端序数字读取它作为 tempo 使用。然后随后每个 32bit 被当作两个 16bit 无符号小端序数字,
分别作为 pitch 和 duration 使用。
pxe_unload
卸载 PXE 环境,此命令只在 PC BIOS 平台有效。
read [var]
等待用户输入,按下 enter 后,输入的行不包括换行符被保存到名为 var 的变量中。
重启电脑。
save_env [-f file] var ...
把指定的变量保存到区块文件中,如果指定了 -f file 那么保存到 file 文件中(file 必须是环境区块文件)。
search [--file FILE ] [--label LABEL] [--fs-uuid UUID ] [--set [var] ] [--no-floppy]
--file FILE 选项,那么在所有设备里搜索文件 FILE 。
--label LABEL 选项,搜索卷标为 LABEL 的设备。
--fs-uuid UUID 选项,查询指定 UUID 的设备。
如果指定–set var,那么在搜索成功后设置 var (var 可以是任意变量名)的值为目标设备名。
实例:
加载 Win Xp 的命令:
insmod ntfs
insmod fat
search --file /ntldr --set root
chainloader +1
boot
里面的 search 命令 搜索 /ntldr 文件,并且把找到的第一个包含这个文件的设备设为根设备。
search.file search.fs_label 和 search.fs_uuid 是 search –file ,search –label ,search –fs-uuid 的简写。
sendkey [--num|--caps|--scroll|--insert|
--pause|--left-shift|--right-shift|
--sysrq|--numkey|--capskey|--scrollkey|
--insertkey|--left-alt|--right-alt|
--left-ctrl|--right-ctrl on|off]... [no-led]
keystroke
发送指定的按键序列到键盘缓冲区。某些 OS 或者加载器需要特殊的键盘操作,例如 进入安全模式 。使
用 sendkey 可以由 GRUB 发送按键给被引导的文件,可以避免用户操作。
你最多可以提供 16 个按键,因为 BIOS 的键盘缓冲就这么大。按键名可以是大写或者小写单个字母, 单个数字。
具体列表不在这里提供了
sendkey 命令支持多种选项,它们影响 BIOS 的键盘状态字节。接受 on 或 off 参数,用来开或者关掉
对应的状态位。提供选项但是省略参数,不对状态位产生影响。 –num –caps –scroll –insert 选项,
虚拟开启对应的键盘模式。 –numkey –cpaskey –scrollkey –insertkey 分别仿真对应的键保持按下的
状态。其他的状态标记和选项的字面含义相同。
–no-led 选项,在改变其他选项的状态位时不改变键盘 LED 灯。
如果多次执行 sendkey 命令,那么只有最后一次有效。由于 sendkey 会改变 BIOS 键盘缓冲区,在某些
系统下会导致挂起、重启、其他意外行为。如果 OS 或者加载器使用自己的驱动程序控制键盘,那么
sendkey 不会发生作用。
set [envvar=value]
设置环境变量 envvar 的值为 value。envvar 可以是任何变量名。如果没有指定参数,那么显示当前的环
境变量和它们的值。
命令退出状态为 0,不做任何事情。它用于流程控制。
unset envvar
从内存中删除 envvar 变量。envvar 可以是任何有效的变量名。
GRUB2 中暂未实现,它正在计划之中。