Share via


使用序列主控台來存取 GRUB 和單一使用者模式

注意事項

本文中參考的 CentOS 是 Linux 發行版,並會到達生命周期結束 (EOL) 。 請考慮您的使用並據以規劃。 如需詳細資訊,請 參閱 CentOS 生命週期結束指引

GRand Unified Bootloader (GRUB) 可能是您在 VM) (啟動虛擬機時看到的第一件事。 因為它會在操作系統啟動之前顯示,所以無法透過 SSH 存取 GRUB。 在 GRUB 中,您可以修改開機設定,以開機進入單一使用者模式,以及其他事項。

單一使用者模式是功能最少的最低環境。 其可用於調查開機問題、文件系統問題或網路問題。 在背景中執行的服務較少,而且根據 Runlevel,可能甚至不會自動掛接文件系統。

在 VM 可能設定為只接受 SSH 金鑰進行登入的情況下,單一使用者模式也很有用。 在此情況下,您可以使用單一使用者模式來建立具有密碼驗證的帳戶。

注意事項

序列主控台服務只允許 具有參與者 層級或更高許可權的使用者存取 VM 的序列主控台。

若要進入單一使用者模式,請在 VM 開機時輸入 GRUB,然後在 GRUB 中修改開機設定。 請參閱下一節中輸入 GRUB 的詳細指示。 一般而言,如果您的 VM 已設定為顯示 GRUB,您可以使用 VM 序列主控台內的 [重新啟動] 按鈕來重新啟動 VM 並顯示 GRUB。

工具列中顯示 [重新啟動 VM] 按鈕的螢幕快照。

一般 GRUB 存取

若要存取 GRUB,請在 [序列控制台] 窗格開啟時重新啟動 VM。 某些散發套件需要鍵盤輸入來顯示 GRUB,有些則會自動顯示 GRUB 幾秒鐘,以允許使用者鍵盤輸入取消逾時。

若要能夠存取單一使用者模式,您想要確保您的 VM 上已啟用 GRUB。 視您的散發而定,可能需要進行一些設定工作,以確保 GRUB 已啟用。 如需散發特定資訊,請參閱下一節。

重新啟動 VM 以存取序列控制台中的 GRUB

您可以將滑鼠停留在 [ 重新啟動 ] 按鈕上,然後選取 [ 重新啟動 VM],以在序列控制台內重新啟動 VM。 有關重新啟動的通知會顯示在窗格底部。

如果已啟用 SysRq ,您也可以執行 SysRq “b” 命令來重新啟動 VM。 若要了解當您重新啟動時,GRUB 會發生什麼情況,請參閱下一節中的散發特定指示。

動畫 GIF 顯示命令行介面。使用者在工具列中選取 [重新啟動 VM],然後重新啟動序列主控台內的 V M。

一般單一使用者模式存取

當您尚未設定具有密碼驗證的帳戶時,您可能需要手動存取單一使用者模式。 修改 GRUB 組態以手動進入單一使用者模式。 完成此動作之後,請參閱一節,以取得進一步的指示。

如果 VM 無法開機,散發套件通常會自動讓您進入單一使用者模式或緊急模式。 不過,其他散發套件需要額外的設定,例如設定根密碼,才能讓您自動進入單一使用者或緊急模式。

使用單一使用者模式重設或新增密碼

在您處於單一使用者模式之後,請執行下列動作來新增具有sudo許可權的新使用者:

  1. 執行 useradd <username> 以新增使用者。
  2. 執行 sudo usermod -a -G sudo <username> 以授與新的使用者根許可權。
  3. 使用 passwd <username> 來設定新用戶的密碼。 然後,您可以以新的使用者身分登入。

Red Hat Enterprise Linux (RHEL) 的存取權

如果 RHEL 無法正常開機,它會自動讓您進入單一使用者模式。 不過,如果您尚未設定單一使用者模式的根存取,則您沒有根密碼且無法登入。 There is a workaround (see the "Manually enter single-user mode in RHEL" section), but we suggest that you set up root access initially.

RHEL 中的 GRUB 存取

RHEL 隨附現用的 GRUB。 若要輸入 GRUB,請執行 來重新啟動 VM sudo reboot,然後按任意鍵。 應該會顯示 GRUB 窗格。 如果不是,請確定 GRUB 檔案中有下列幾行 (/etc/default/grub) :

針對 RHEL 8

注意事項

Red Hat 建議使用 Grubby 在 RHEL 8+ 中設定核心命令行參數。 目前無法使用 grubby 更新 grub 逾時和終端機參數。 若要修改更新所有開機專案的GRUB_CMDLINE_LINUX自變數,請執行 grubby --update-kernel=ALL --args="console=ttyS0,115200 console=tty1 console=ttyS0 earlyprintk=ttyS0"。 這裡提供更多詳細 數據

GRUB_TIMEOUT=5
GRUB_TERMINAL="serial console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"

針對 RHEL 7

GRUB_TIMEOUT=5
GRUB_TERMINAL_OUTPUT="serial console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 net.ifnames=0"

注意事項

Red Hat 也提供開機進入「救援模式」、「緊急模式」或「偵錯模式」的檔,以及重設根密碼的檔。 如需指示,請參閱 開機期間的終端機功能表編輯

在 RHEL 中設定單一使用者模式的根存取

根用戶預設為停用。 RHEL 中的單一使用者模式需要啟用根使用者。 如果您需要啟用單一使用者模式,請使用下列指示:

  1. 透過 SSH 登入 Red Hat 系統。
  2. 切換至根目錄。
  3. 執行下列動作來啟用根使用者的密碼:
    • 執行 passwd root (設定強式根密碼) 。
  4. 執行下列動作,確定根使用者只能透過ttyS0登入:a. 執行 vi /etc/ssh/sshd_config,並確定 PermitRootLogIn 設定為 no。 b. 執行 vi /etc/securetty file 以僅允許透過ttyS0登入。

現在,如果系統開機進入單一使用者模式,您可以使用根密碼登入。

或者,針對 RHEL 7.4+ 或 6.9+,若要在 GRUB 提示中啟用單一使用者模式,請參閱 開機進入單一使用者模式

在 RHEL 中手動進入單一使用者模式

如果您已使用上述指示來設定 GRUB 和根存取,您可以執行下列動作來進入單一使用者模式:

  1. 若要輸入 GRUB,請在重新啟動 VM 時按 Esc。

  2. 在 GRUB 中,按 E 以編輯您想要開機進入的 OS。 OS 通常會列在第一行。

  3. 尋找核心線。 在 Azure 中,它會從 linuxlinux16 開始

  4. 按 Ctrl+E 以移至行尾。

  5. 在行尾,新增 systemd.unit=rescue.target

    此動作會引導您進入單一使用者模式。 如果您想要使用緊急模式,請將 systemd.unit=emergency.target 新增至行尾 (,而不是 systemd.unit=rescue.target) 。

  6. 按 Ctrl+X,以套用的設定結束並重新啟動。

    系統會提示您輸入系統管理員密碼,才能進入單一使用者模式。 此密碼是您在先前指示中建立的密碼。

    動畫 GIF 顯示命令行介面。用戶選取伺服器、找出核心行的結尾,然後輸入指定的文字。

在 RHEL 中進入未啟用根帳戶的單一使用者模式

如果您未依照先前的指示啟用根使用者,您仍然可以執行下列動作來重設根密碼:

注意事項

如果您使用 SELinux,當您重設根密碼時,請務必遵循 Red Hat 檔中所述的其他步驟。

  1. 若要輸入 GRUB,請在重新啟動 VM 時按 Esc。

  2. 在 GRUB 中,按 E 以編輯您想要開機進入的 OS。 OS 通常會列在第一行。

  3. 尋找核心線。 在 Azure 中,它會從 linux16 開始

  4. 在行尾處,將 rd.break 新增至行尾。 在核心線與 rd.break 之間保留空格。

    此動作會在控件從 initramfs 傳遞至 systemd之前中斷開機程式,如 Red Hat 檔中所述。

  5. 按 Ctrl+X,以套用的設定結束並重新啟動。

    重新啟動之後,您會進入使用唯讀檔案系統的緊急模式。

  6. 在殼層中,輸入 mount -o remount,rw /sysroot 以重新掛接具有讀取/寫入許可權的根文件系統。

  7. 開機進入單一使用者模式之後,請輸入 chroot /sysroot 以切換到 sysroot 越獄。

  8. 您現在已在根目錄中,而且可以開始針對系統問題進行疑難解答。

  9. 在 RHEL 中,SELinux 強制執行模式可防止 OS 進行任何變更。 您可以在密碼變更後執行 touch /.autorelabel 以重新標記檔案系統。

  10. 完成之後,請輸入 reboot -f 以重新啟動。

動畫 GIF 顯示在命令行介面的 RHEL 中,不啟用根帳戶的情況下進入單一使用者模式的程式。

注意事項

透過上述指示執行 會將您放入緊急殼層,以便您也可以執行編輯 fstab之類的工作。 不過,我們通常建議您重設根密碼,並使用它來進入單一使用者模式。

CentOS 的存取權

與 Red Hat Enterprise Linux 非常類似,CentOS 中的單一使用者模式需要啟用 GRUB 和根使用者。

CentOS 中的 GRUB 存取

CentOS 隨附現用的 GRUB。 若要輸入 GRUB,請輸入 sudo reboot來重新啟動您的 VM,然後按任意鍵。 此動作會顯示 [GRUB] 窗格。

CentOS 中的單一使用者模式

若要在 CentOS 中啟用單一使用者模式,請遵循先前的 RHEL 指示。

Ubuntu 的存取權

Ubuntu 映像不需要根密碼。 如果系統開機進入單一使用者模式,您可以使用它,而不需要額外的認證。

Ubuntu 中的 GRUB 存取

若要存取 GRUB,請在 VM 開機時按住 Esc。

根據預設,Ubuntu 影像可能不會自動顯示 GRUB 窗格。 您可以執行下列動作來變更設定:

  1. 在文本編輯器中,開啟 /etc/default/grub.d/50-cloudimg-settings.cfg 檔案。

  2. GRUB_TIMEOUT 值變更為非零值。

  3. 在文本編輯器中,開啟 /etc/default/grub

  4. 將這一行批注 GRUB_HIDDEN_TIMEOUT=1 化。

  5. 請確定有一 GRUB_TIMEOUT_STYLE=menu 行。

  6. 執行 sudo update-grub

Ubuntu 中的單一使用者模式

如果Ubuntu無法正常開機,它會自動讓您進入單一使用者模式。 若要手動進入單一使用者模式,請執行下列動作:

  1. 在 GRUB 中,按 E 以編輯開機專案 (Ubuntu 專案) 。
  2. 尋找以 linux開頭的行,然後尋找 ro
  3. ro 之後新增一,確保一前後有空格。
  4. 按 Ctrl+X 以使用這些設定重新啟動,然後進入單一使用者模式。

使用 GRUB 在 Ubuntu 中叫用 bash

嘗試上述指示之後,可能會有一種 (,例如忘記根密碼) 您仍然無法在Ubuntu VM中存取單一使用者模式。 您也可以告訴核心以 init 身分執行 /bin/bash ,而不是系統 init。 此動作提供Bash殼層,並允許系統維護。 使用下列指示:

  1. 在 GRUB 中,按 E 以編輯開機專案 (Ubuntu 專案) 。

  2. 尋找以 linux開頭的行,然後尋找 ro

  3. ro 取代為 rw init=/bin/bash

    此動作會將您的文件系統掛接為讀寫,並使用 /bin/bash 作為 init 程式。

  4. 按 Ctrl+X 以使用這些設定重新啟動。

適用於 CoreOS 的存取

CoreOS 中的單一使用者模式需要啟用 GRUB。

CoreOS 中的 GRUB 存取

若要存取 GRUB,請在 VM 開機時按任意鍵。

CoreOS 中的單一使用者模式

如果 CoreOS 無法正常開機,它會自動讓您進入單一使用者模式。 若要手動進入單一使用者模式,請執行下列動作:

  1. 在 GRUB 中,按 E 編輯開機專案。

  2. 尋找以 linux$開頭的行。 線條應該有兩個實例,每個實例封裝在不同的 if...else 子句。

  3. coreos.autologin=ttyS0 附加至每個 linux$ 行的結尾。

  4. 按 Ctrl+X 以使用這些設定重新啟動,然後進入單一使用者模式。

SUSE SLES 的存取權

如果系統開機進入緊急模式,則 SLES 12 SP3+ 的新版映像允許透過序列控制台進行存取。

SUSE SLES 中的 GRUB 存取

SLES 中的 GRUB 存取需要透過 YaST 的開機載入器設定。 若要建立組態,請執行下列動作:

  1. 使用 SSH 登入您的 SLES VM,然後執行 sudo yast bootloader。 按 Tab 鍵,按 Enter 鍵,然後使用箭頭鍵瀏覽功能表。

  2. 移至 [核心參數],然後選取 [ 使用序列控制台] 複選框。

  3. 將新 serial --unit=0 --speed=9600 --parity=no 增至 主控台 自變數。

  4. 按 F10 儲存您的設定並結束。

  5. 若要輸入 GRUB,請重新啟動您的 VM,並在開機順序期間按任意鍵,讓 GRUB 窗格保持顯示。

    GRUB 的預設逾時為 1s。 您可以變更 /etc/default/grub 檔案中的 變數來修改此設定GRUB_TIMEOUT

動畫 GIF 顯示透過 YaST 建立開機載入器設定的程式。

SUSE SLES 中的單一使用者模式

如果 SLES 無法正常開機,系統會自動將您放入緊急殼層。 若要手動輸入緊急殼層,請執行下列動作:

  1. 在 GRUB 中,按 E 以編輯開機專案 (SLES 專案) 。

  2. 尋找以 linux開頭的核心行。

  3. systemd.unit=emergency.target 附加至核心行的結尾。

  4. 按 Ctrl+X 以使用這些設定重新啟動,然後輸入緊急殼層。

    注意事項

    此動作會將您放入具有唯讀檔案系統的緊急殼層。 若要編輯任何檔案,請使用讀寫許可權重新掛接文件系統。 若要這樣做,請在殼層中輸入 mount -o remount,rw /

Oracle Linux 的存取權

與 Red Hat Enterprise Linux 非常類似,Oracle Linux 中的單一使用者模式需要啟用 GRUB 和根使用者。

Oracle Linux 中的 GRUB 存取

Oracle Linux 隨附現成啟用的 GRUB。 若要輸入 GRUB,請執行 來重新啟動您的 VM sudo reboot,然後按 Esc 鍵。此動作會顯示 [GRUB] 窗格。 如果未顯示 [GRUB] 窗格,請確定該行的 GRUB_TERMINAL 值包含 序列控制台 (也就是 GRUB_TERMINAL="serial console") 。 使用 grub2-mkconfig -o /boot/grub/grub.cfg重建 GRUB。

Oracle Linux 中的單一使用者模式

若要在 Oracle Linux 中啟用單一使用者模式,請遵循先前的 RHEL 指示。

後續步驟

若要深入瞭解序列主控台,請參閱:

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群