使用EC2序列主控台疑難排解 Amazon EC2 執行個體 - Amazon Elastic Compute Cloud

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

使用EC2序列主控台疑難排解 Amazon EC2 執行個體

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

請使用執行個體作業系統以及您在執行個體上設定之工具的指示。

注意

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

GNUGRUB(GNUGRand統一引導加載程序的簡稱,通常稱為GRUB)是大多數 Linux 操作系統的默認引導加載程序。您可以從GRUB功能表中選擇要開機的核心,或修改功能表項目以變更核心的開機方式。這在疑難排解失敗的執行個體時非常有用。

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

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

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

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

    [ec2-user ~]$ sudo reboot
  3. 在重新啟動期間,當GRUB菜單出現時,按任意鍵停止引導過程。

  4. 在GRUB菜單中,使用箭頭鍵選擇要啟動的內核,然後按鍵盤e上的。

  5. 使用方向鍵將游標定位在包含核心的行上。該行以linux或開頭,linux16視用於啟動執行個體的項目而定。AMI對於 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

System Request (SysRq) 密鑰有時也被稱為 SysRq「魔術」,可以用來在 shell 之外直接向內核發送命令,無論內核在做什麼,內核都會響應。例如,如果執行個體已停止回應,您可以使用 SysRq 金鑰告知核心損毀或重新啟動。有關更多信息,請參見維基百科中的魔術 SysRq 密鑰

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

若要使用 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
若要 SysRq 在用SSH戶端中使用
  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 主控台運作。Amazon 上的 Windows EC2 啟動代理程式 (EC2Config、EC2Launch v1 和 EC2Launch v2) 依賴序列主控台來執行各種任務。當您在執行個體SAC上啟用時,這些工作無法順利執行。如需有關 Amazon EC2 啟動代理程式上 Windows 的詳細資訊,請參閱設定您的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. Connect 線至執行個體,並從提高權限的 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