audk/ShellPkg/DynamicCommand/VariablePolicyDynamicCommand/VariablePolicy.uni

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

87 lines
4.9 KiB
Plaintext
Raw Normal View History

ShellPkg: Add varpolicy dynamic shell command and app Adds a new module (dynamic shell command) to ShellPkg that lists variable policy information for all UEFI variables on the system. Some other UEFI variable related functionality is also included to give a greater sense of platform UEFI variable state. This command is intended to help make variable policies more transparent and easier to understand and configure on a platform. Like all dynamic shell commands, a platform only needs to include `VariablePolicyDynamicCommand.inf` in their flash image to have the command registered in their UEFI shell. Include the following lines in platform DSC (in DXE components section): ``` ShellPkg/DynamicCommand/VariablePolicyDynamicCommand/VariablePolicyDynamicCommand.inf { <PcdsFixedAtBuild> gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE } ``` Include the following line in platform FDF: ``` INF ShellPkg/DynamicCommand/VariablePolicyDynamicCommand/VariablePolicyDynamicCommand.inf ``` A standalone UEFI application can also be built that uses the same underlying functional code as the dynamic shell command. The path to use in the DSC and FDF for the app: ``` ShellPkg/DynamicCommand/VariablePolicyDynamicCommand/VariablePolicyApp.inf ``` Cc: Zhichao Gao <zhichao.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Zhichao Gao <zhichao.gao@intel.com> Message-Id: <20231030203112.736-3-mikuback@linux.microsoft.com>
2023-10-30 21:31:10 +01:00
// /**
// String definitions for the Variable Policy ("varpolicy") shell command/app.
//
// Copyright (c) Microsoft Corporation.
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/
/=#
#langdef en-US "english"
// General Strings
#string STR_GEN_PROBLEM #language en-US "%H%s%N: Unknown flag - '%H%s%N'\r\n"
#string STR_GEN_TOO_MANY #language en-US "%H%s%N: Too many arguments.\r\n"
#string STR_GEN_NO_VARS #language en-US "No UEFI variables found!\r\n"
#string STR_GEN_LINE_BREAK #language en-US "\r\n"
#string STR_GEN_HEX_DUMP_LINE #language en-US "%B%08X%N: %-48a %V*%a*%N\r\n"
#string STR_VAR_POL_POLICY_INT_ERR #language en-US "%EInternal Application Error Getting Policy Info!%N\r\n"
#string STR_VAR_POL_POLICY_NO_PROT #language en-US "%EVariable Policy Protocol Was Not Found!%N\r\n"
#string STR_VAR_POL_POLICY_NOT_INIT #language en-US "%EUEFI Variable Policy is Not Initialized!%N\r\n"
#string STR_VAR_POL_POLICY_NOT_FOUND #language en-US "%EVariable Policy Not Found for This Variable!%N\r\n"
#string STR_VAR_POL_POLICY_UNEXP_ERR #language en-US "%EUnexpected Error Getting Policy Info!%N - %H%r%N\r\n"
#string STR_VAR_POL_POLICY_HEADER_1 #language en-US "+-----------------------------------------------------------------------------+\r\n"
#string STR_VAR_POL_POLICY_HEADER_2 #language en-US "| Variable Policy Info |\r\n"
#string STR_VAR_POL_POLICY_VERSION #language en-US "| Version: 0x%-8x |\r\n"
#string STR_VAR_POL_POLICY_VARIABLE #language en-US "| Variable: % -64s |\r\n"
#string STR_VAR_POL_POLICY_NAMESPACE #language en-US "| Namespace: {%g} |\r\n"
#string STR_VAR_POL_POLICY_MIN_SIZE #language en-US "| Minimum Size: 0x%-8x |\r\n"
#string STR_VAR_POL_POLICY_MAX_SIZE #language en-US "| Maximum Size: 0x%-8x |\r\n"
#string STR_VAR_POL_POLICY_ATTR_MUST #language en-US "| Required Attributes: |\r\n"
#string STR_VAR_POL_POLICY_ATTR_NOT #language en-US "| Disallowed Attributes: |\r\n"
#string STR_VAR_POL_POLICY_ATTR_GEN #language en-US "| %73-.73s |\r\n"
#string STR_VAR_POL_POLICY_LOCK_TYPE #language en-US "| Lock Type: % -64s |\r\n"
#string STR_VAR_POL_POLICY_STATE_NS #language en-US "| Namespace: {%g} |\r\n"
#string STR_VAR_POL_POLICY_STATE_VAL #language en-US "| Value: 0x%-8x |\r\n"
#string STR_VAR_POL_POLICY_STATE_NAME #language en-US "| Name: % -64s |\r\n"
#string STR_VAR_POL_POLICY_STATS_PASS #language en-US " %V%d/%d UEFI variables have policy%N\r\n"
#string STR_VAR_POL_POLICY_STATS_FAIL #language en-US " %E%d/%d UEFI variables have policy%N\r\n"
#string STR_VAR_POL_VAR_TYPE #language en-US "%H% -70s%N\r\n"
#string STR_VAR_POL_VAR_NAME #language en-US "Name: % -70s\r\n"
#string STR_VAR_POL_VAR_SIZE #language en-US "Size: 0x%-16x (%-,d) bytes\r\n"
#string STR_VAR_POL_VAR_ATTR #language en-US "Attributes: % -60s\r\n"
#string STR_VAR_POL_STATS_HEADER_1 #language en-US "+----------------------------------------------------------------+\r\n"
#string STR_VAR_POL_STATS_HEADER_2 #language en-US "| UEFI Variable Statistics |\r\n"
#string STR_VAR_POL_STATS_TOTAL_VARS #language en-US " Total UEFI Variables: %,d\r\n"
#string STR_VAR_POL_STATS_TOTAL_SIZE #language en-US " Total UEFI Variable Size: 0x%x (%,d) bytes\r\n"
#string STR_GET_HELP_VAR_POLICY #language en-US ""
".TH varpolicy 0 "Lists UEFI variable policy information."\r\n"
".SH NAME\r\n"
"Lists UEFI variable policy information.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"VARPOLICY [-p] [-s] [-v]\r\n"
".SH OPTIONS\r\n"
" \r\n"
" -p - The policy flag will print variable policy info for each variable.\r\n"
" \r\n"
" -s - The stats flag will print overall UEFI variable policy statistics.\r\n"
" \r\n"
" -v - The verbose flag indicates all known information should be printed.\r\n"
" \r\n"
" This includes a dump of the corresponding UEFI variable data in\r\n"
" addition to all other UEFI variable policy information.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
" * To dump all active UEFI variables:\r\n"
" fs0:\> varpolicy\r\n"
"\r\n"
" * To include UEFI variable policy information:\r\n"
" fs0:\> varpolicy -p\r\n"
"\r\n"
" * To include UEFI variable statistics:\r\n"
" fs0:\> varpolicy -s\r\n"
"\r\n"
" * To include a hexadecimal dump of data for each variable\r\n"
" and all other variable information:\r\n"
" fs0:\> varpolicy -v\r\n"