使用EC2序列主控台對 Amazon EC2執行個體進行故障診斷 - Amazon Elastic Compute Cloud

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

使用EC2序列主控台對 Amazon EC2執行個體進行故障診斷

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

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

注意

開始之前,請確定您已完成先決條件 ,包括設定您選擇的疑難排解工具。

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

GRUB 功能表會在開機程序期間顯示。選單無法透過正常 存取SSH,但您可以透過EC2序列主控台存取。

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

開機至單一使用者模式
  1. 連線到執行個體的序列主控台。

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

    [ec2-user ~]$ sudo reboot
  3. 重新啟動期間,當GRUB選單出現時,按任何鍵停止開機程序。

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

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

  6. 在該行的末尾,添加單詞 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
  7. Ctrl+X 以開機進入單一使用者模式。

  8. login提示中,輸入您先前設定的密碼型使用者的使用者名稱,然後按 Enter

  9. 出現 Password 提示時,輸入密碼,然後按 Enter

 

若要開機進入緊急模式

請遵循與單一使用者模式相同的步驟,但在步驟 6 中新增單字emergency而非 single

系統請求 (SysRq) 金鑰有時稱為「巨型 SysRq」,可用於直接將命令傳送到 Shell 外的 核心,無論核心正在執行什麼操作,核心都會回應。例如,如果執行個體已停止回應,您可以使用 SysRq 金鑰來告知核心當機或重新啟動。如需詳細資訊,請參閱 Wikipedia 中的魔術 SysRq 金鑰

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

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

Browser-based client
在序列主控台瀏覽器型用戶端 SysRq 中使用
  1. 連線到執行個體的序列主控台。

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

    [ec2-user ~]$ CTRL+0
  3. 若要發出 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. 連線到執行個體的序列主控台。

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

    [ec2-user ~]$ ~B
  3. 若要發出 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) 功能提供對 Windows 執行個體進行疑難排解的方法。透過連線至執行個體的序列主控台並使用 SAC,您可以中斷開機程序並在安全模式下開機 Windows。

注意

如果您在執行個體SAC上啟用 ,依賴密碼擷取EC2的服務將無法從 Amazon EC2主控台運作。Windows on Amazon EC2啟動代理程式 (EC2Config、EC2Launchv1 和 EC2Launch v2) 依賴序列主控台來執行各種任務。當您在執行個體SAC上啟用 時,這些任務無法成功執行。如需有關 Windows on Amazon EC2啟動代理程式的詳細資訊,請參閱 設定您的EC2視 Amazon 執行個體。如果您啟用 SAC,則可以稍後停用它。如需詳細資訊,請參閱停用 SAC 和開機選單

使用 SAC

若要使用 SAC
  1. 連接至序列主控台。

    如果在執行個體上啟用 SAC ,序列主控台會顯示SAC>提示。

    SAC 在序列主控台中顯示的提示。
  2. 若要顯示SAC命令,請輸入 ?,然後按 Enter

    預期的輸出結果

    輸入問號以顯示SAC命令。
  3. 若要建立命令提示通道 (例如 cmd0001cmd0002),請輸入 cmd,然後按 Enter

  4. 若要檢視命令提示頻道,請按 ESC,然後按 TAB

    預期的輸出結果

    命令提示通道。
  5. 若要切換頻道,請同時按下 ESC+TAB+ 頻道號碼。例如,若要切換至cmd0002頻道 (如果已建立),請按 ESC+TAB+2

  6. 輸入命令提示通道所需的憑證。

    命令提示字元需要憑證。

    命令提示字元與您在桌面上取得的完整功能命令 Shell 相同,但是除了它,不允許讀取已經輸出的字元。

    功能齊全的命令 Shell。

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

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

PowerShell 在命令提示字元內。

使用開機功能表

如果執行個體已啟用開機選單,並在透過 連線後重新啟動SSH,您應該會看到開機選單,如下所示。

命令提示字元中的開機功能表。

開機功能表命令

ENTER

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

TAB

切換至「工具」功能表。

ESC

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

ESC 後面加上 8

相當於按下 F8 。顯示所選項目的進階選項。

ESC 鍵 + 向左箭頭

回到初始開始功能表。

注意

僅ESC金鑰不會帶您返回主功能表,因為 Windows 正在等待查看逸出序列是否正在進行中。

進階開機選項。

停用 SAC 和開機選單

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

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

PowerShell
在 Windows 執行個體上停用 SAC和開機選單
  1. 連線至您的執行個體,並從提升的 PowerShell 命令列執行下列步驟。

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

    bcdedit /set '{bootmgr}' displaybootmenu no
  3. 然後將 值SAC變更為 以停用 off

    bcdedit /ems '{current}' off
  4. 透過重新啟動執行個體來套用更新的組態。

    shutdown -r -t 0
Command prompt
在 Windows 執行個體上停用 SAC和開機選單
  1. 連接到您的執行個體,並從命令提示字元執行下列步驟。

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

    bcdedit /set {bootmgr} displaybootmenu no
  3. 然後將 值SAC變更為 以停用 off

    bcdedit /ems {current} off
  4. 透過重新啟動執行個體來套用更新的組態。

    shutdown -r -t 0