2019/11/18

EFI/UEFI Shell 的常用命令列表 Command list

早期Legacy BIOS會在DOS環境下, 透過指令方式, 或集結成批次檔 *.bat 以完成特定的自動化需求; 現在推動UEFI環境, 這是Built-in的 EFI shell, 要自動化也是需要批次檔 *nsh

當系統開機到 EFI shell時, 此時嵌入式作業系統會透過搜尋已定義好的path 找尋此檔 startup.nsh, 所以基本上來說Startup.nsh相當於DOS/Windows環境下的autoexec.bat,當跑完這個startup script之後, 會顯示如下的指令提示介面: (翻譯引用自Intel文件:Basic Instructions for Using the Extensible Firmware Interface (EFI))
Shell>

下表引用自UEFI和Legacy BIOS的差異

Legacy BIOSUEFI
發明年代1975 by IBM2002 by Intel
程式語言組合語言C語言
CPU mode16-bit mode(Real mode)32/64-bit mode(Flat mode)
記憶體定址空間~1 MB>4 GB
支援硬碟分割格式MBRGPT
支援硬碟最大容量~2 TB~9 ZetaBytes
支援硬碟主分割區數量4128
Boot Speed
Boot ManagerBoot loader in MBRBoot loaders in ESP
硬體擴充方式Option ROMEFI driver
硬體資源控制InterruptProtocol/Driver
安全機制TPMSecure Boot
VGA BIOSVBIOSGOP
Bootable USB  Flash driveDOSEFI Shell

統一可延伸韌體介面(Unified Extensible Firmware Interface, UEFI)是一種個人電腦系統規格,用來定義作業系統與系統韌體之間的軟體介面,作為BIOS的替代方案。可延伸韌體介面負責加電自檢(POST)、連繫作業系統以及提供連接作業系統與硬體的介面。(參考自wiki)

可擴展韌體介面在軟體堆疊裡的位置

EFI開機管理員與 EFI drivers的溝通方式

EFI/UEFI Shell Command

列出EFI/UEFI 裡面 EFI Shell界面支持的命令。
對這些命令無法執行或出錯,在EFI shell提示符下輸入help命令。

可以使用的一些命令如下:

“Boot Commands — EFI Shell”.
“Configuration Commands — EFI Shell”.
“Device, Driver, and Handle Commands — EFI Shell”.
“Filesystem Commands — EFI Shell”.
“Memory Commands — EFI Shell”.
“Shell Navigation and Other Commands — EFI Shell”.
“Shell Script Commands / Programming Constructs — EFI Shell”.

CommandDescription
Boot Commands — EFI Shell. 

Commands related to nPartition booting. n分區啟動的相關命令

autobootSet/view autoboot timeout variable.
bcfgDisplay/modify the driver/boot configuration.
boottestSet/view BootTest bits.
dbprofileDisplay/modify direct boot profiles for use by lanboot.
lanbootBoot over the LAN.
reconfigresetReset the system (nPartition) for reconfiguration; the nPartition remains inactive, in the shutdown for reconfig state.
resetReset the system (nPartition).
searchConnect drivers for bootables devices.
Configuration Commands — EFI Shell. 

Commands for changing and retrieving system (nPartition) information.

acpiconfigSet/view ACPI configuration mode.
cellconfigDeconfigure/reconfigure cells. (Set cell use-on-next-boot values.)
cpuconfigDeconfigure/reconfigure processors and processor cores..
dateDisplay the current date or set the date of the system (nPartition).
dimmconfigDeconfigure/reconfigure memory (DIMMs).
errDisplay/change the error level.
errdumpView/clear logs.
fruView FRU data.
infoDisplay hardware information.
monarchSet/view a monarch processor.
palprocMake a PAL call.
romdriversEnable/disable PCI expansion ROM drivers.
rootcellSet/view preferred root cells. (Set nPartition core cell choices.)
salprocMake a SAL call.
tftpPerforms TFTP operation to a bootp/DHCP enabled Unix boot server.
timeDisplay the current time or set the time of the system (nPartition). EFI time is set and presented in GMT (Greenwich mean time).
variableSave/restore specific EFI variables.
verDisplay the version information.
Device, Driver, and Handle Commands — EFI Shell. 

Commands for managing devices, drivers, and handles.

baudView serial port com settings.
connectBind a driver to a device.
dblkHex dump of BlkIo devices.
devicesDisplay devices managed by EFI drivers.
devtreeDisplay tree of devices.
dhDump handle info.
disconnectDisconnect driver(s) from device(s).
driversDisplay list of drivers.
drvcfgInvoke the Driver Config Protocol.
drvdiagInvoke the Driver Diagnostics Protocol.
guidDump known GUID IDs.
lanaddressDisplay MAC address.
loadLoad EFI drivers.
mapMap shortname to device path.
openinfoDisplay the open protocols for given handle.
pciDisplay PCI devices or PCI function configuration space.
reconnectReconnect driver(s) from a device.
unloadUnload a protocol image.
Filesystem Commands — EFI Shell. 

Commands for managing files, directories, and attributes.

attribDisplay/change the attributes of files/directories.
cdUpdate/view the current directory.
compCompare the contents of two files.
cpCopy one or more files/directories to another location.
editEdit an ASCII or UNICODE file in full screen.
eficompressCompress infile and write to outfile.
efidecompressDecompress infile and write to outfile.
hexeditEdit a file, block device, or memory region using hex.
lsDisplay a list of files and subdirectories in a directory.
mkdirCreate one or more directories.
mountMount a filesystem on a block device.
rmDelete one or more files/directories.
setsizeSet the size of a file.
touchUpdate time of file/directory with current time.
typeDisplay the contents of a file.
volDisplay volume information of the file system.
Memory Commands — EFI Shell. 

Commands for listing and managing memory, EFI variables, and NVRAM details.

defaultSet the default NVRAM values.
dmemDump memory or memory mapped IO.
dmpstoreDisplay all EFI variables.
memmapDisplay the memory map.
mmDisplay/modify MEM/IO/PCI.
pdtView/clear nPartition or cell memory page deallocation table (PDT).
Shell Navigation and Other Commands — EFI Shell. 

Commands for basic EFI Shell navigation and customization.

aliasSet/get alias settings.
clsClear the standard output with an optional background color.
exitExit EFI Shell environment.
getmtcDisplay current monotonic counter value.
help or ?Display help.
modeDisplay the mode of the console output device.
setSet/Get environment variable.
xcharTurn on/off extended character features.
Shell Script Commands / Programming Constructs — EFI Shell. 

EFI shell-script commands.

echoEcho message to stdout or toggle script echo.
elseScript-only: Use with IF THEN.
endforScript-only: Delimiter for FOR loop construct.
endifScript-only: Delimiter for IF THEN construct.
forScript-only: Loop construct.
gotoScript-only: Jump to label location in script.
ifScript-only: IF THEN construct.
inputTake user input and place in EFI variable.
pauseScript-only: Prompt to quit or continue.
stallStall the processor for some microseconds.

其他指令

STALL (以微秒為單位的延遲)

Note:
1. STALL in emulation NT environment will sleep for ‘microseconds’.
2. STALL in some other platforms will wait for ‘microseconds’.
3. Microseconds is in decimal units.
Examples:
Shell> stall 1000000 //表示Stall for 1000000 uS