搜尋此網誌

2012年9月6日 星期四

EFI/UEFI Shell commands list(指令集)

下列的指令集是依照不同的主機板廠商,提供不同的指令集:
?             - Displays the EFI Shell command list or verbose command help
alias         - Displays, creates, or deletes EFI Shell aliases
attrib        - Displays or changes the attributes of files or directories
cd            - Displays or changes the current directory
cls           - Clears standard output and optionally changes background color
comp          - Compares the contents of two files
connect       - Connects one or more EFI drivers to a device
cp            - Copies one or more files or directories to another location
date          - Displays or changes the current system date
dblk          - Displays one or more blocks from a block device
devices       - Displays the list of devices managed by EFI drivers
devtree       - Displays the EFI Driver Model compliant device tree
dh            - Displays EFI handle information
disconnect    - Disconnects one or more EFI drivers from a device
dmem          - Displays the contents of memory
dmpstore      - Displays all EFI NVRAM variables
drivers       - Displays the EFI driver list
drvcfg        - Invokes the Driver Configuration Protocol
drvdiag       - Invokes the Driver Diagnostics Protocol
echo          - Controls batch file command echoing or displays a message
edit          - Full screen editor for ASCII or UNICODE files
eficompress   - Compress a file
efidecompress - Decompress a file
err           - Displays or changes the error level
exit          - Exits the EFI Shell environment
for           - Executes commands for each item in a set of items
goto          - Forces batch file execution to jump to specified location
guid          - Displays all registered EFI GUIDs
help          - Displays the EFI Shell command list or verbose command help
hexedit       - Full screen hex editor
if            - Executes commands in specified conditions
ifconfig      - Modify the default IP address of UEFI network stack
ipconfig      - Displays or modifies the current IP configuration
load          - Loads and optionally connects one or more EFI drivers
loadpcirom    - Loads a PCI Option ROM
ls            - Displays a list of files and subdirectories in a directory
map           - Displays or defines mappings
mem           - Displays the contents of memory
memmap        - Displays the memory map
mkdir         - Creates one or more directories
mm            - Displays or modifies MEM/MMIO/IO/PCI/PCIE address space
mode          - Displays or changes the console output device mode
mount         - Mounts a file system on a block device
mv            - Moves one or more files or directories to another location
openinfo      - Displays the protocols and agents associated with a handle
pause         - Prints a message and waits for keyboard input
pci           - Displays PCI device list or PCI function configuration space
ping          - Ping a target machine with UEFI network stack
reconnect     - Reconnects one or more EFI drivers to a device
reset         - Resets the system
rm            - Deletes one or more files or directories
sermode       - Sets serial port attributes
set           - Displays or modifies EFI Shell environment variables
shift         - Shifts batch file input parameter positions
smbiosview    - Displays SMBIOS information
stall         - Stalls the processor for the specified number of microseconds
telnetmgmt    - Change terminal type
time          - Displays or changes the current system time
timezone      - Displays or sets time zone information
touch         - Updates filename timestamp with current system date and time
type          - Displays file contents
unload        - Unloads a EFI driver
ver           - Displays EFI Firmware version information
vol           - Displays or changes a file system volume label

Shell 2.0(UDK2010) 增加的指令
else      -Else identifies the portion of the code executed if the if was FALSE.
endif     -Ends the block of a script controlled by an 'if' statement.
endfor    -Ends a 'for' loop.
getmtc    -Gets the MTC from BootServices and displays it.
bcfg      -Manages the boot and driver options that are stored in NVRAM.
setsize   -Adjusts the size of a file.
setvar    -Changes the value of a UEFI variable.

UDK2014 增加的指令

27 則留言:

  1. 不好意思我想請問如何use EFI/UEFI Shell commands install windows xp
    因為我的作業系統是WIN8,如果要在虛擬器裝windows xp一定要在EFI自己手動下指令,我在國外找到指令http://technet.microsoft.com/en-us/library/cc749064%28v=ws.10%29.aspx
    但是我連FS0都沒有用,我出現的第一行是 2.0 shell:>
    2.0跟其他shell我也都不會......所以上來請教要輸入什麼才可以像網址內一樣一步一步輸入...
    http://www.oschina.net/question/59932_90654
    以上網址是有關只能手動的相關問題
    謝謝

    回覆刪除
    回覆
    1. 目前Windows XP好像沒有支援UEFI;據我所知微軟支援的作業系統Windows Vista(64 Bits), 7(64 Bits), 8(32 and 64 bits),還有8.1(32 and 64 bits)。一般的平台只要用Legacy BIOS都可以裝Windows XP,只要進入System Setup(Press Del or F2 Key),選擇Legacy BIOS only就可以了。

      刪除
  2. 我想請問一下 我在SHELL下要執行EFI檔案,可是執行後直接跳下一行,沒有任何反應該如何處理?

    回覆刪除
    回覆
    1. 應該是版本不同。可以先執行你的版本的shell.efi,在執行你的.efi執行擋。

      刪除
  3. 請問如何抓pci configuration space 100h以後的AER

    回覆刪除
    回覆
    1. Add "-i" to display the configuration space of Bus 4, Device 0, Function 0 which includes configuration space more than 0x100.

      Shell> PCI 00 00 00 -i -b

      刪除
  4. 請問如何查詢PCI configuration space 100h以後的AER

    回覆刪除
    回覆
    1. Add "-i" to display the configuration space of Bus 4, Device 0, Function 0 which includes configuration space more than 0x100.

      Shell> PCI 00 00 00 -i -b

      刪除
  5. Hi版主你好,我現在有用EFI作業系統,現在如何讓顯示作業區,變成全螢幕呢?有這種指令嗎?
    我聯絡資訊
    dow.hua@cova-tech.com或加我賴 dowhua 謝謝

    回覆刪除
    回覆
    1. 這可能需要寫一個程式去切換它的螢幕模式,目前無現成指令可用。

      Status = gST->ConOut->SetMode(gST->ConOut, mode);

      mode = 0: { 80 x 25 }
      mode = 1: { 80 x 50 }
      mode = 2: { 80 x 43 }
      mode = 3: { 100 x 100 }
      mode = 4: { 100 x 999 }

      刪除
    2. 謝謝楊先生你的回覆,我的面板是 XGA (1024 x 768 pixels) resolution ,也是要在shell:> 打入你的程式 (如虛線區)?

      -----------------------------------
      Status = gST->ConOut->SetMode(gST->ConOut, mode);

      mode = 0: { 80 x 25 }
      mode = 1: { 80 x 50 }
      mode = 2: { 80 x 43 }
      mode = 3: { 100 x 100 }
      mode = 4: { 100 x 999 }
      -----------------------------

      刪除
    3. 1. 您必須自行撰寫程式,去改變顯示模式。
      2. 或在System BIOS中(按Del Key),尋找是否有支援Set Console Output Mode <80 x 25>
      如果有,更改它的設定即可。

      刪除
  6. 請問可以讓螢幕作業區變成全螢幕的指令嗎?
    或者其他方式。
    dow.hua@cova-tech.com or賴 dowhua thanks

    回覆刪除
    回覆
    1. 這可能需要寫一個程式去切換它的螢幕模式,目前無現成指令可用。

      Status = gST->ConOut->SetMode(gST->ConOut, mode);

      mode = 0: { 80 x 25 }
      mode = 1: { 80 x 50 }
      mode = 2: { 80 x 43 }
      mode = 3: { 100 x 100 }
      mode = 4: { 100 x 999 }

      刪除
  7. 作者已經移除這則留言。

    回覆刪除
  8. 版主您好
    如果我要在UEFI 下執行一個程式後 自動加1的計次這要如何寫呢
    謝謝您

    回覆刪除
  9. 版主 您好
    在UEFI 執行程式後累加計數
    這要如何鑽寫呢?

    回覆刪除
    回覆
    1. 請參考:http://samfreetime.blogspot.tw/2011/10/efi-shell-commands-for.html?showComment=1469175379819#c3515723386278848157"

      刪除
    2. 請參考[EFI Shell commands -- FOR(在一個項目集合中,去行一個或多個指令對於每個項目)]下的留言範例。

      刪除
  10. 版主 您好
    不好意思 看了文章後不是很懂
    可以簡單 說明每行的意思嗎
    沒有底子 實在很抱歉
    謝謝您

    回覆刪除
    回覆
    1. 存成test1.nsh檔案, 從外部輸入一個數字。\>test1.nsh 50

      echo -off
      if not exist %1% then
      echo [[%1]]
      set myval %1%
      endif
      if exist %myval% then
      set myval 0
      endif
      for %b in 0 1 2 3
      for %a run (0 19999)
      if %myval% == %a then
      echo "[ %a ]"
      set mylock 1
      else
      if %mylock% == 1 then
      set mylock 0
      set myval %a
      goto Leave_For
      endif
      endif
      endfor
      :Leave_For
      echo "%myval%"
      set -d mylock
      endfor
      echo -on


      範例如下: (請先切換到Shell command line)
      \>test1.nsh 50 #設定一個數字
      [[50]]
      [50]
      51
      [51]
      52
      [52]
      53
      [53]
      54
      \>test1.nsh #再執行一次
      [54]
      55
      [55]
      56
      [56]
      57
      [57]
      58

      刪除
  11. 版主你好

    想請問一下,
    Status = gST->ConOut->SetMode(gST->ConOut, mode);

    mode = 0: { 80 x 25 }
    mode = 1: { 80 x 50 }
    mode = 2: { 80 x 43 }
    mode = 3: { 100 x 100 }
    mode = 4: { 100 x 999 }
    這個部分是哪裡的資料呢? 在EFI spec沒有看到
    80 x 25, 80 x 50等等這些數值是解析度的意思嗎?

    回覆刪除
    回覆
    1. 這是從EDK source擷取,80 x 25文字模式解析度。

      刪除
    2. 代表
      由左到右 一列可以80字
      由上到下一行可以25字的意思嗎?

      刪除
  12. 作者已經移除這則留言。

    回覆刪除