

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 EC2 序列主控台進行 Amazon EC2 執行個體疑難排解
<a name="troubleshoot-using-serial-console"></a>

透過使用 EC2 序列主控台，您可以連接到執行個體的序列埠來疑難排解開機、網路設定和其他問題。

針對執行個體的作業系統和您在執行個體上設定的工具，使用相關指示。

**Topics**
+ [GRUB (Linux)](#grub)
+ [SysRq (Linux)](#SysRq)
+ [SAC (Windows)](#troubleshooting-sac)

**先決條件**  
在開始之前，請確定您已完成[先決條件](ec2-serial-console-prerequisites.md)，包括設定您所選的疑難排解工具。

## (Linux 執行個體) 使用 GRUB 對執行個體進行疑難排解
<a name="grub"></a>

GNU GRUB (GNU Grand 統一開機載入程式的簡稱，通常稱為 GRUB) 是大多數 Linux 作業系統的預設開機載入程式。從 GRUB 功能表中，您可以選擇要開機的核心，或修改功能表項目以變更核心的開機方式。這在疑難排解失敗的執行個體時非常有用。

GRUB 功能表會在開機過程中顯示。該功能表無法透過一般 SSH 存取，但您可以使用 EC2 序列主控台存取。

您可以開機至單一使用者模式或緊急模式。單一使用者模式會以較低的執行層級啟動核心。例如，它可能掛載檔案系統，但不會啟動網路，讓您有機會執行修復執行個體所需的維護。緊急模式與單一使用者模式類似，不同之處在於核心以最低的執行層級執行。

**開機至單一使用者模式**

1. [連線](connect-to-serial-console.md)到執行個體的序列主控台。

1. 使用下列命令重新啟動執行個體。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 在重新開機期間，當 GRUB 功能表出現時，按任意鍵停止啟動過程。

1. 在 GRUB 功能表中，使用方向鍵選取要開機的核心，然後按鍵盤上的 `e`。

1. 使用方向鍵將游標定位在包含核心的行上。該行以 `linux` 或 `linux16` 開頭，取決於用於啟動執行個體的 AMI。對於 Ubuntu，兩行以 `linux` 開頭，必須在下一個步驟中修改這兩行。

1. 在該行的末尾，添加單詞 `single`。

   以下是 Amazon Linux 2 的範例。

   ```
   linux /boot/vmlinuz-4.14.193-149.317.amzn2.aarch64 root=UUID=d33f9c9a-\
   dadd-4499-938d-ebbf42c3e499 ro  console=tty0 console=ttyS0,115200n8 net.ifname\
   s=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.she\
   ll=0 single
   ```

1. 按 ** Ctrl\$1X ** 以開機進入單一使用者模式。

1. 出現 `login` 提示時，輸入您[先前設定](configure-access-to-serial-console.md#set-user-password)之密碼型使用者的使用者名稱，然後按 **Enter**。

1. 出現 `Password` 提示時，輸入密碼，然後按 ** Enter**。

 

**開機進入緊急模式**  
遵循與單一使用者模式相同的步驟，但在步驟 6 中新增字詞 `emergency`，而非 `single`。

## (Linux 執行個體) 使用 SysRq 對執行個體進行疑難排解
<a name="SysRq"></a>

系統要求 (SysRq) 金鑰，有時稱為「神奇 SysRq」，可以用來在 shell 之外直接向核心傳送命令，無論核心正在執行什麼操作，都會回應。例如，如果執行個體已停止回應，您可以使用 SysRq 金鑰告訴核心當機或重新開機。如需詳細資訊，請參閱 Wikipedia 中的[神奇 SysRq 金鑰](https://en.wikipedia.org/wiki/Magic_SysRq_key)。

您可以在以 EC2 序列主控台瀏覽器為基礎的用戶端或 SSH 用戶端中使用 SysRq 命令。每個用戶端傳送中斷請求的命令是不同的。

若要使用 SysRq，請根據您所使用的用戶端選擇下列其中一個程序。

------
#### [ Browser-based client ]

**在序列主控台瀏覽器型用戶端中使用 SysRq**

1. [連線](connect-to-serial-console.md)到執行個體的序列主控台。

1. 若要傳送中斷請求，請按 `CTRL+0` (零)。如果您的鍵盤支援，您也可以使用「暫停」或「Break」鍵來傳送中斷請求。

   ```
   [ec2-user ~]$ CTRL+0
   ```

1. 若要發出 SysRq 命令，請按鍵盤上對應至所需命令的按鍵。例如，若要顯示 SysRq 命令清單，請按 `h`。

   ```
   [ec2-user ~]$ h
   ```

   `h` 命令會輸出類似下列內容。

   ```
   [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems
   (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r
   ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
   ```

------
#### [ SSH client ]

**在 SSH 用戶端中使用 SysRq**

1. [連線](connect-to-serial-console.md)到執行個體的序列主控台。

1. 若要傳送中斷請求，請按下 `~B` (波狀符號，後面接著大寫 `B`)。

   ```
   [ec2-user ~]$ ~B
   ```

1. 若要發出 SysRq 命令，請按鍵盤上對應至所需命令的按鍵。例如，若要顯示 SysRq 命令清單，請按 `h`。

   ```
   [ec2-user ~]$ h
   ```

   `h` 命令會輸出類似下列內容。

   ```
   [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems
   (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r
   ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
   ```
**注意**  
根據您使用的 SSH 用戶端，您用於傳送中斷請求的命令可能會有所不同。

------

## (Windows 執行個體) 使用 SAC 為您的執行個體進行疑難排解
<a name="troubleshooting-sac"></a>

Windows 的特殊管理主控台 (SAC) 功能提供了一種疑難排解 Windows 執行個體的方法。透過連線到執行個體的序列主控台並使用 SAC，您可以中斷開機程序並以安全模式啟動 Windows。

**注意**  
如果您在執行個體上啟用 SAC，則依賴密碼擷取的 EC2 服務將無法從 Amazon EC2 主控台運作。Amazon EC2 上的 Windows 啟動代理程式 (EC2Config、EC2Launch v1 和 EC2Launch v2) 倚賴序列主控台執行各種任務。在執行個體上啟用 SAC 時，這些任務不會成功執行。如需 Amazon EC2 啟動代理程式的詳細資訊，請參閱 [設定您的 Amazon EC2 Windows 執行個體](ec2-windows-instances.md)。如果您啟用 SAC，可以稍後停用它。如需詳細資訊，請參閱[停用 SAC 和開機選單](#disable-sac-bootmenu)。

**Topics**
+ [使用 SAC](#use-sac)
+ [使用開機功能表](#use-boot-menu)
+ [停用 SAC 和開機選單](#disable-sac-bootmenu)

### 使用 SAC
<a name="use-sac"></a>

**使用 SAC**

1. [連接至序列主控台。](connect-to-serial-console.md)

   如果執行個體上已啟用 SAC，序列主控台會顯示 `SAC>` 提示。  
![\[序列主控台中顯示的 SAC 提示。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/win-boot-3.png)

1. 若要顯示 SAC 命令，請輸入「?」，然後按 **Enter**。

   預期的輸出結果  
![\[輸入問號以顯示 SAC 命令。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/win-boot-4.png)

1. 若要建立命令提示通道 (例如 `cmd0001` 或 `cmd0002`)，請輸入「cmd」，然後按 **Enter**。

1. 若要檢視命令提示通道，請按 **ESC**，然後按 **TAB**。

   預期的輸出結果  
![\[命令提示通道。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/win-boot-5.png)

1. 若要切換通道，請同時按 **ESC\$1TAB\$1通道號碼**。例如，若要切換至 `cmd0002` 頻道 (如果已建立)，請按 **ESC\$1TAB\$12**。

1. 輸入命令提示通道所需的憑證。  
![\[命令提示字元需要憑證。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/win-boot-6.png)

   命令提示字元與您在桌面上取得的完整功能命令 Shell 相同，但是除了它，不允許讀取已經輸出的字元。  
![\[功能齊全的命令 Shell。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/win-boot-7.png)

**也可以從命令提示字元使用 PowerShell。**

請注意，您可能需要將進度偏好設定設定為無訊息模式。

![\[命令提示字元中的 PowerShell。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/win-boot-8.png)


### 使用開機功能表
<a name="use-boot-menu"></a>

如果執行個體啟用了開機功能表，且透過 SSH 連線後重新啟動，您應該會看到開機功能表，如下所示。

![\[命令提示字元中的開機功能表。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/win-boot-1.png)


**開機功能表命令 **

ENTER  
啟動選取的作業系統項目。

TAB  
切換至「工具」功能表。

ESC  
取消並重新啟動執行個體。

ESC 後跟 8  
相當於按下 ** F8 **。顯示所選項目的進階選項。

ESC 鍵 \$1 向左箭頭  
回到初始開始功能表。  
單獨的 ESC 鍵不會帶您回到主功能表，因為 Windows 正在等待查看是否正在進行逸出序列。

![\[進階開機選項。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/win-boot-2.png)


### 停用 SAC 和開機選單
<a name="disable-sac-bootmenu"></a>

如果您啟用 SAC 和開機選單，可以稍後停用這些功能。

使用下列其中一種方法來停用執行個體上的 SAC 和開機功能表。

------
#### [ PowerShell ]

**在 Windows 執行個體上停用 SAC 和開機功能表**

1. [連線](connecting_to_windows_instance.md)到您的執行個體，並從提高權限的 PowerShell 命令列執行下列步驟。

1. 首先透過將值變更為 `no` 來停用開機選單。

   ```
   bcdedit /set '{bootmgr}' displaybootmenu no
   ```

1. 然後透過將值變更為 `off` 來停用 SAC。

   ```
   bcdedit /ems '{current}' off
   ```

1. 透過重新啟動執行個體來套用更新的組態。

   ```
   shutdown -r -t 0
   ```

------
#### [ Command prompt ]

**在 Windows 執行個體上停用 SAC 和開機功能表**

1. [連接](connecting_to_windows_instance.md)到您的執行個體，並從命令提示字元執行下列步驟。

1. 首先透過將值變更為 `no` 來停用開機選單。

   ```
   bcdedit /set {bootmgr} displaybootmenu no
   ```

1. 然後透過將值變更為 `off` 來停用 SAC。

   ```
   bcdedit /ems {current} off
   ```

1. 透過重新啟動執行個體來套用更新的組態。

   ```
   shutdown -r -t 0
   ```

------