共用方式為


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

適用於: ✔️ Linux VM

注意

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

Grand Unified Bootloader (GRUB) 會在 Linux 虛擬機 (VM) 開機程式的早期階段運作。 它會在Linux核心載入之前運作,以及在啟動任何系統服務(例如網路或SSH)之前運作,因此無法透過SSH存取 GRUB。 您必須使用序列主控台來存取 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> 來設定新用戶的密碼。 然後,您可以以新使用者身分登入。

RHEL 中的 GRUB 存取

RHEL 隨附現用的 GRUB。 若要輸入 GRUB,請執行 sudo reboot重新啟動您的 VM,然後按任何按鍵。 應該會顯示 [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 6.9+ 和 7.4+ 中的 Single-User 模式

若為 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 的命令行介面中,不啟用 root 帳戶輸入單一使用者模式的過程。

注意

執行上述指示會將您放入緊急殼層,以便您也可以執行編輯 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 的預設逾時為 1 秒。 您可以藉由變更 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,請執行 sudo reboot重新啟動您的 VM,然後按 Esc 鍵。此動作會顯示 [GRUB] 窗格。 如果未顯示 GRUB 窗格,請確定 GRUB_TERMINAL 行的值包含 串列控制台 (也就是 GRUB_TERMINAL="serial console")。 使用 grub2-mkconfig -o /boot/grub/grub.cfg重建 GRUB。

Oracle Linux 中的單一使用者模式

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

下一步

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

與我們連絡,以取得說明

如果您有疑問,可以詢問 Azure 社群支援。 您也可以將產品意見反應提交至 Azure 意見反應社群