1. 程式人生 > >GRUB2命令和環境變數列表

GRUB2命令和環境變數列表

摘取自GRUB2中文手冊

環境變數

biosnum

當鏈式載入時,GRUB 需要知道根裝置的 BIOS 驅動器號。如果 BISONUM 變數正確設定,GRUB 就
不需要猜測驅動器號了。它會改變 BIOS 驅動器在鏈式載入系統中的對映關係。

chosen

當執行選單項時,GRUB 自動設定 CHOSEN 變數為當前選單項標題。如果當前在單項是某個選單的子
選單,那麼 CHOSEN 會包含它的父選單標題,各個父選單之間使用 > 分割 。例如 :
“other>fedora>fedora_16” ,表示當前選單標題是 fedora_16,它的 級選單是 fedora,更 級選單是
other。依此類推。

color_highlight

這個選項包含了終端的高亮顯示的前景色和背景色的設定,她們之間使用斜線 / 分割。改變這個選項可
以改變預設的基本色彩。預設值是:”black/white”

color_normal

這個變數包含了普通顯示時的前景和背景色。由斜線分割。預設是:”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

debug

開啟這個變數可以從 GRUB 的各個元件會輸出除錯資訊。變數的值是除錯選項,它們之間使用空格或者
逗號分割。使用 all 表示開啟所有除錯選項。

default

變數值可以設定為某個選單項的標題或者索引。如果設定了這個選項,那麼它所指定的選單項預設被選中。並且作為自動載入選單項。

如果某個選單項含有子選單那麼它必須使用 > 分割各個 級選單:

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 變數間接設定。

fallback

類似於 default ,這個選項用來指定一個選單項。當 default 選單項載入失敗的時候,會載入 fallback 的
選單項。值的格式同 default 選項。

gfxmode

它設定 gfxterm 圖形終端的解析度。你只能在你的顯示卡通過 VESA BIOS Extensions 支援圖形終端的時
候才能使用它。例如:LCD 面板的解析度可能不能使用這個變數控制。預設值是”auto”。

變數值可以通過逗號或者分號指定多個。GRUB 會依次嘗試這些解析度。分別率的格式應該是:

WIDTHxHIEGHT 或者 WIDTHxHEIGHTxDEPTH

gfxpayload

這個變數設定後控制 linux 核心啟動後的顯示方式。它用來替換 vga= 核心引數。可以設定為:”text” 強
制 linux 以文字模式啟動, “keep” 使用 gfxmode 變數的設定。或者所有被 gfxmode 接受的值。

根據你的核心、發行版、顯示卡和一些不確定因素,使用這個選項可能導致 GNU/linux 發生顯示問題。此
時應該設定為 “text” 。
這個選項的預設值因平臺而異。在 PC BIOS預設值為 “text” ,其他情況可能是 “auto” 或者是某個有 效的圖形模式。
這個選項通常使用 GRUB_GFXPAYLOAD_LINUX 變數設定。

gfxterm_font

設定 gfxterm 圖形終端的預設字型。

icondir

這個選項設定 GRUB 搜尋圖示使用的路徑。

lang

這個選項設定 gettext 命令使用的語言編碼,它用來翻譯字串 。 通常法語應該設為 “fr” ,簡體中文設
為 “zh_CN” 。

grub2-mkconfig 程式會根據當前 OS 的語言設定自動設定這個變數。

locale_dir

這個變數設定翻譯檔案所在路徑 。通常是 /boot/grub2/locale 。如果沒有設定此變數,那麼國際化選項
是關閉的。

這個變數包含被選中的選單項文字的前景色和背景色。使用 / 分割前景色和背景色,預設值等於
color_highlight 變數。

這個變數設定未選中選單項的前景色和背景色。使用 / 分割前景和背景。預設值等於 color_normal 變數。

pager

如果設定為 1 那麼每當輸出充滿螢幕時自動暫停,按下任意鍵後繼續檢視下一頁。預設是不暫停。

prefix

設定 grub 模組和配置檔案的路徑。通常是 “$root/boot/grub2” 。它通常由 grub2-install 在安裝 grub 時
就寫在內嵌的配置檔案內。grub2-mkrescue 建立的可引導光碟也已經自動設定 root 和 prefix,使用者配
置檔案內無需設定 prefix 的值。GRUB 模組會根據 prefix 載入,所以它必須正確設定。否則就會提示
error: file not found 。

root

設定 GRUB 根裝置。任何路徑中沒有指定裝置的,都會使用根裝置作為預設分割槽。這個變數應該在
GRUB 啟動時由配置檔案決定。

例如,如果 GRUB 安裝到第一塊硬碟的第一個分割槽,那麼 root 應該設為 (hd0,1) ;prefix 應該為
“$root/boot/grub”

superusers

這個變數設定一個超級使用者列表。參考:許可權管理 50

theme

這個變數為包含 GRUB 圖形選單主題的路徑。

通常使用變數:GRUB_THEME 設定。

timeout

它指定自動載入倒計時時限,單位為秒。GRUB 成功載入選單配置檔案後就立刻開始倒計時,如果在這
段時間內沒有任何鍵盤操作那麼載入預設選單項。如果 unset 這個變數或者設為 -1 那麼不自動載入預設
選單項。

這個變數通常使用 GRUB_TIMEOUT 或者 GRUB_HIDDEN_TIMEOUT 變數設定。

GRUB環境區塊

這個功能用來在一次引導時記錄下一些資訊,下一次啟動 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 》

只用於選單的命令

配置檔案的語法遵守以下規則:

  • 檔案必須是純文字
  • #開始的行作為註釋行
  • 選項之間使用空格隔開
  • 所有的數字都可以是十進位制或者是 16 進位制(字首 0x 或者
    0X)。

語法:

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

語法:

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

語法:

terminal_input [`--append'|`--remove'] [terminal1] [terminal2] 
顯示/設定輸入終端。當不使用引數的時候顯示當前啟用的可用的輸入終端。 
--append  新增指定終端到啟用的輸入終端列表中。列表中的任意終端都可以給 GRUB 提供輸入。 
--remove ,從輸入終端列表中刪除指定終端。 

因為計算機內部採用並行資料,不能直接把資料發到 Modem,必須經過 UART 整理才能進行非同步傳輸,
其過程為:CPU 先把準備寫入序列裝置的資料放到 UART 的暫存器(臨時記憶體塊)中,再通過
FIFO(First Input First Output,先入先出佇列)
傳送到序列裝置,若是沒有 FIFO,資訊將變得雜亂無章, 不可能傳送到 Modem。
如果沒有使用 –append 和 –remove 但是提供了終端,那麼只顯示指定終端。

terminfo

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

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

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

blocklist file 

顯示 file 的區塊列表。

boot

已經載入核心或者已經執行了 chainloader 命令後,執行 boot 會開始引導。通常 boot 會在選單內的命令
結束後自動執行。

background_image

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

cat [--dos] file 

顯示 FILE 的內容。例項:

grub> cat /etc/fstab 

如果設定了–dos 選項那麼按照 dos 格式,把 \r\n 解釋為一個換行。否則\r 會被顯示為一個特殊字元,\n 會被當作換行。

chainloader

chainloader [--force] file 

鏈式載入指定檔案。通常 file 使用區塊列表指定,例如:

chainloader  (hd0,msdos1)+1 

如果指定了–force 那麼強行載入,而不去檢查檔案是否有正確的標記。這個通常用於載入其他有缺陷的
載入器,例如 SCO UnixWare 7.1。

cmp

cpm file1 file2 

比較檔案 file1 和 file2 。如果二者大小不同那麼顯示:

Differ in size: 0x1234 [foo], 0x4321 [bar] 

如果二者大小相同但是某些位元組不同,那麼會顯示那個位元組的地址:

Differ at the offset 777: 0xbe [foo], 0xef [bar] 

如果兩個檔案完全相同那麼不顯示任何東西。

configfile

configfile file 

載入一個配置檔案。如果 FILE 內包含了選單定義,那麼在載入完畢後立刻進入選單顯示模式。

cpuid

cpuid [-l] 

檢查 CPU 特性,這個命令只用於 x86 cpu。當使用了 -l 選項 如果 CPU 支援 long 模式 (64bit),那麼返
回 true。

如果沒有包含-l 選項,此命令的行為類似與 -l 選項。會在隨後的 GRUB 版本中升級它。

crc

crc FILE 

顯示檔案 FILE 的 CRC32 校檢和。

date

date [[year-]month-day] [hour:minute[:second]] 

如果沒有任何引數那麼顯示當前的日期和時間。

其他情況下會修改當前時間或者日期。但是隻改動指定引數,其他的保持不變。例如:

date 01-01 

會改變月和日,但是年和 時分秒 都保持不變。

drivemap

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

echo [-n] [-e] string ... 

顯示指定的文字,並且在行尾新增換行。如果使用了-n 不新增換行。如果有多個 word 傳入那麼各個字
符串之間使用空格分割(類似於 shell 中的命令引數分割)。當然雙引號字串可以使用變數擴充套件。

echo "root=$root" 

顯示當前的根裝置

-e 選項,解析字串中的轉義序列。 

`\\'   反斜線 
`\a'  警告音 
`\c'  靜止新增換行 
`\f'   進紙符 
`\n'  換行符 
`\r'   回車符 
`\t'   橫向製表符 
`\v'  豎直製表符 

export

export envvar 

匯出變數 ENVVAR,被匯出的變數會自動在 configfile 命令載入的子指令碼中定義。

false

false 

這個命令不做任何事情,只是退出狀態非 0 。 它可以在流程控制語句中使用。

gettext

gettext string 

翻譯 string 到當前語言。

當前語言編碼在 GRUB lang 環境變數。翻譯檔案從 locale_dir 指定的目錄中搜索 MO 檔案。

gptsync

gptsync device [partition[+/-[type]]] ... 

使用 GUID 分割槽表的磁碟也支援傳統的 MBR 分割槽表稱作 legacy MBR。legacy MBR 只是 GPT 的一個
子集。

這個命令在指定裝置的指定分割槽 新增一個 legacy MBR。TYPE 是 MBR 分割槽的型別程式碼。可以是 10
進位制也可以是 16 進位制(字首 0x)。在 PARTITION 和 TYPE 之間如果是+號代表此分割槽啟用,- 代表此分
區非啟用。只有一個分割槽可以處在啟用狀態。如果 + - 和 TYPE 都省略了,那麼此分割槽設定為非啟用。

halt

halt `--no-apm' 

這個命令關閉計算機,然後關閉電源。如果使用了 –no-apm 那麼關閉計算機後不使用 BISO 的 APM
關閉電源。

help

help [pattern] 

顯示關於匹配指定模式的命令名的詳細幫助檔案。如果省略 pattern 你會看到所有的命令簡短的列表。

initrd

initrd FILE 

為已經載入的 linux 核心,載入 initrd,並且設定 linux 核心記憶體中的引數。這個選項必須在 linux 命令
之後使用。

initrd16

inttrd16 FILE 

在 16bit 模式下載入 initrd,這個命令必須在 linux16 命令後面使用。

insmod

insmod MODULE 

動態載入名為 MODULE 的 GRUB 模組。不要跟字尾:

insmod fat       #正確 
insmod fat.mod   #錯誤 

keystatus

keystatus  [--shift] [--ctrl]  [--alt] 

如果 Shift 或者 alt 或者 ctrl 按鍵處在按下狀態,那麼退出狀態為 0,否則為 1。這個功能對在指令碼中使用
特殊控制鍵很有用。

這個功能只在某些平臺 支援。如果 keystatus 不使用任何選項,在支援 keystatus 的平臺 退出狀態為
0 否則為 1 。

linux

linux FILE .. ... 

以 32bit 模式載入 linux 核心 FILE。命令列中剩下的引數都會被作為核心引數傳遞給核心。注意,每次
使用 linux 命令後,都必須重新載入 initrd。

在 x86 系統 ,核心必須使用 32bit 引導協議。這意味著 vga= 選項無效。如果你希望設定顯示模式,你
需要使用 set gfxpayload=1024x768 或者 set gfxpayload=”keep” 。通常 GRUB 發現 vga 命令列引數
時會自動設定 gfxpayload 。linux16 命令可以沒有這個限制。

linux16

16bit 模式下載入 linux 核心。命令列中剩下的引數都會被作為核心引數傳遞給核心。注意,每次使用
linux16 命令後,都必須重新使用 initrd16 命令。

核心會使用傳統的 16bit 引導協議。它不會導致 vga 核心引數無效。也可以用來載入其他的類 linux 核心
的映象程式。

這個命令只用於 x86 平臺。

list_env

list_env  [-f  FILE] 

顯示環境區塊檔案中的變數。如果使用了 -f FILE ,那麼顯示指定區塊檔案中的變數。

load_env

load_env  [-f  FILE] 

從環境區塊檔案中載入變數,如果使用了 -f FILE ,那麼載入指定區塊檔案中的變數。

loopback

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

ls   [arg ...] 

類似與 linux ls 命令,顯示裝置或者檔案。

無引數時顯示所有 GRUB 已知的裝置。
如果引數是一個裝置名那麼顯示指定裝置的屬性,如果是個絕對目錄那麼顯示目錄內容:

loopback fd0 /Ghost82.img 
ls  (fd0) 
ls  (fd0)/ 

normal

normal  [FILE] 

進入 normal 模式,並且載入配置檔案,然後顯示 GRUB 選單。

如果指定了配置檔案 FILE 那麼載入指定配置檔案,否則載入 $prefix/grub.cfg 配置檔案。

在 normal 模式,命令、檔案系統模組 和加密模組都已經自動載入,並且擁有完整的語法解析器。其他
的模組可以在配置檔案中使用 insmod 命令載入。

normal 命令可以巢狀執行。即在 normal 模式下依然可以呼叫 normal 。它類似於 configfile 命令。

normal_exit

normal_exit 

退出當前的 normal 模式。如果當前是最後一個 normal 模式,那麼退回到命令列救援模式。

parttool

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

password USER clear-password 

定義一個使用者 USER,並且用明文指定他的密碼。

password father  hello 
password mother boy 

這個命令添加了兩個使用者,並且分別指定它的密碼為 hello 和 boy。參考:許可權管理 50

password_pbkdf2

password_pbkdf2  USER  hashed-PASSWORD 

定義一個使用者 USER,並且用雜湊後的密文指定他的密碼。呼叫 grub2-mkpasswd-pbkdf2 計算密文的
雜湊。參考:許可權管理 50

play

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_unload 

解除安裝 PXE 環境,此命令只在 PC BIOS 平臺有效。

read

read  [var] 

等待使用者輸入,按下 enter 後,輸入的行不包括換行符被儲存到名為 var 的變數中。

reboot

重啟電腦。

save_env

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

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

set [envvar=value] 

設定環境變數 envvar 的值為 value。envvar 可以是任何變數名。如果沒有指定引數,那麼顯示當前的環
境變數和它們的值。

true

命令退出狀態為 0,不做任何事情。它用於流程控制。

unset

unset envvar 

從記憶體中刪除 envvar 變數。envvar 可以是任何有效的變數名。

uppermem

GRUB2 中暫未實現,它正在計劃之中。