什么是UEFI Shell
UEFI Shell是一种特殊对待UEFI_APPLICATION。提供用户和UEFI系统之间的一个接口。它有很强大的功能,但是正常启动计算机系统时,不会用到UEFI Shell,只有当系统启动出现问题,或者用户就是喜欢UEFI Shell(就像博主我一样,深深的爱着UEFI),主动进入UEFI Shell来对计算机系统进行配置,那么就到了UEFI Shell 大显身手,炫酷吊炸天的时候来了。
玩儿转UEFI Shell
Shell提供了丰富的内部命令。可以分为几大类:调试(Debug1),驱动(Driver1),网路(NetWork1),安装(Install1),Level1,Level2,Level3。没错,万能的help指令,在这里也是适用的,哪里不懂,就在哪里help一下就行了,比如指令:help ifconfig,就可以查看ifconfig的帮助信息,单独的help,就会输出所有的显示指令。另外,若不特殊说明,Shell内置命令的命令行参数中的数值使用十六进制,Shell命令和Linux指令不同,不区分大小写。
Shell命令的通用选项
命令行参数 | 意思 | 命令行参数 | 意义 |
-b,-break | 输出信息分屏显示 | -t,-terse | 用简洁格式输出信息 |
-q,-quit | 不输出任何信息 | -v,-verbose | 输出辅助信息 |
-sfo | 用标准格式输出 | -? | 输出帮助信息 |
1.调试设备的相关命令
调试设备的相关指令主要用于查询,读取或写设备。
Dmem命令用于查看内存或设备内存,指令如下:
Dmem [-b] [adress] [size] [-MMIO](说明:[]中的内容可以又或者没有的参数。)
其中address,size都是十六进制,-MMIO指定地址为设备内存。
不带参数的dmem将会输出EFI系统表。
Mm命令用于查看或修改MEM(系统内存),MMIO(设备内存),IO(寄存器),PCI(PCI配置空间)和PCIE(PCIE配置空间)
命令如下:
Mm address [value] [-w 1|2|4|8] [-MEM| -MMIO | -IO|-PCI|-PCIE] [-n]
在上面的代码中,address为地址,value为要写入的值,-w后跟访问宽度,-n表示非交互式模式,如果不指定-n,则该命令进入交互模式。
2.驱动相关的命令
驱动类命令主要用于加载,卸载,查询驱动和驱动设备控制器。
Dh命令用于列出系统中所有设备的信息,或某个设备的相关信息。格式如下:
Dh [-l<lang>] [handle | -p <prot_id>] [-d] [-v]
说明:
[-l<lang>] 表示指定的语言显示
handle 是指UEFI Handle在系统中的编号。若没有指明handle,dh命令将列出所有设备的信息
-p <prot_id>列出所有安装了Protocol prot_id的设备信息
-d用于列出驱动相关的信息
-v用于输出verbose的信息
Device命令用于显示所有被驱动的设备信息。
Driver命令用于列出系统中的driver。
Connect用于加载驱动到设备上并启动加载的驱动。该命令的格式:
Connect [[DeviceHandle] [DriverHandle] | [-c] | [-r]]
-c用于连接控制台设备
-r用于递归扫描所有handle,发现匹配的设备和驱动就加进来,没有-r,新产生的设备将不会被连接。
Disconnect用于将驱动从设备上卸载下来。命令格式如下:
Disconnect DeviceHandle [DriverHandle [ChildHandle]] [-r]
Load命令御用加载驱动
Unload用于将驱动从内存清楚
3.网络相关命令
Ifconfig用于配置网络设备,该命令的格式如下:
Ifconfig [-?] [-c [Name]] [-l [Name]] [-s <Name> dhcp | <static <IP><MASK><Geteway>> [permanent]]
Name是网络适配器的名字,如etho0等
-c用于清除网络适配器的配置
-l用于列出网络适配器的配置
-s用于设备网络适配器的IP地址
Ping命令用于ping目标及其。格式如下:
Ping [ -n number] [-l size] TargetIP
-l size用于发送size字节的数据
-n number表示发送数据的次数。
Shell内置命令表
Shell命令 | 功能 | Shell命令 | 功能 |
Alias | 显示,创建,删除别名 | Dh | 显示设备句柄 |
Attrib | 显示,更改文件或目录属性 | Discount | 从指定设备卸载驱动 |
Bcfg | 管理启动项 | Dmem | 显示系统或设备内存的内容 |
Cd | 更改当前目录 | Dmpstore | 管理UEFI NVRAM变量 |
Cls | 清空标准输出;更爱背景颜色 | Drivers | 显示设备驱动 |
Comp | 比较两个文件 | Drvcfg | 配置驱动 |
Connect | 将driver绑定到指定的设备并启动driver | Drvdiag | 调动Driver Disgnostis Protocol |
Cp | 将文件或文件夹复制到另一个位置 | Echo | 回显 |
Date | 显示或设置日期 | Edit | 编辑ASCII或UCS-2文件 |
Dblk | 显示块设备里的块 | Eficopress | 压缩文件 |
Devices | 列出所有设备 | Efidecompre | 解压文件 |
Devtree | 显示设备树 | Exit | 退出Shell或脚本 |
Help | 显示帮助 | Reconnect | 重新连接驱动与设备 |
Hexedit | 二进制编辑器,可编辑文件,块设备或内存 | Reset | 重启系统 |
Ifconfig | 配置IP地址 | Rm | 删除文件或目录 |
Load | 加载UEFI驱动 | Setmode | 设置串口属性 |
Loadpcirom | 加载PCI ROM | Set | 显示或修改Shell中的环境变量 |
Ls | 列出目录内容或文件信息 | Setzize | 调整文件大小 |
Map | 显示Mapping | Setvar | 设置UEFI变量 |
Memmap | 显示目录映射 | Smbiosview | 显示SMBIOS信息 |
Mkdir | 创建目录 | Stall | 在指定的时间内暂停执行 |
Mm | 列出或修改MEM/MMIO/IO/PCI/PCIE地址空间 | Time | 显示/设置时区 |
Mode | 列出或修改输出设备的模式 | Timezone | 显示/设置时区 |
Mv | 移动文件或目录 | Touch | 更新文件时间设置 |
Openinfo | 显示ProtocolS打开信息 | Type | 显示文件类型 |
Pause | 暂停执行脚本,等待用户输入 | Unload | 卸载驱动 |
PCI | 显示PCI设备 | Vol | 显示/设置卷标 |
Ping | ping |
|
|