跳至主要内容

Operating System

Harvester 執行於基於 OpenSUSE 的作業系統。該作業系統是由 elemental-toolkit 產生的成品。以下章節包含協助使用者對作業系統相關問題進行故障排除的資訊和提示。

如何登入 Harvester 節點​

使用者可以使用使用者名稱 rancher 以及安裝期間提供的密碼或 SSH 金鑰對登入 Harvester 節點。 使用者 rancher 可以在不輸入密碼的情況下執行特權命令:

# 執行特權命令
rancher@node1:~> sudo blkid

# 或成為 root
rancher@node1:~> sudo -i
node1:~ # blkid

如何安裝套件?為什麼某些路徑是唯讀的?​

作業系統檔案系統類似於容器映像檔,是基於映像檔的且不可變的,除了某些目錄。

我們建議使用 toolbox 容器來執行未封裝在 Harvester OS 中的程式以進行除錯。請參閱此文章以了解如何建立和執行 toolbox 容器。

Harvester OS 也提供了一種暫時啟用讀寫模式的方法。請按照以下步驟操作:

警告

啟用讀寫模式可能會在修改檔案時破壞您的系統。請自行承擔風險使用。

  • 對於版本 v0.3.0,我們需要先套用解決方法,以在啟用讀寫模式後使某些目錄不被覆蓋。在執行中的 Harvester 節點上,以 root 身分執行以下命令:

    cat > /oem/91_hack.yaml <<'EOF'
    name: "Rootfs Layout Settings for debugrw"
    stages:
    rootfs:
    - if: 'grep -q root=LABEL=COS_STATE /proc/cmdline && grep -q rd.cos.debugrw /proc/cmdline'
    name: "Layout configuration for debugrw"
    environment_file: /run/cos/cos-layout.env
    environment:
    RW_PATHS: " "
    EOF
  • 重新啟動系統到 GRUB 選單。按 ESC 停留在選單上。

  • 在第一個選單項目上按 e。將 rd.cos.debugrw 附加到 linux (loop0)$kernel $kernelcmd 行。按 Ctrl + x 啟動系統。

如何永久編輯核心參數​

備註

以下步驟是一個解決方法。一旦有永久解決方案,Harvester 將通知社群。

  • 以讀寫模式重新掛載狀態目錄:
    # blkid -L COS_STATE
    /dev/vda2
    # mount -o remount,rw /dev/vda2 /run/initramfs/cos-state
  • 編輯 grub 配置檔案並將參數附加到 linux (loop0)$kernel $kernelcmd 行。以下範例新增了 nomodeset 參數:
    # vim /run/initramfs/cos-state/grub2/grub.cfg
    menuentry "${display_name}" --id cos {
    # label is kept around for backward compatibility
    set label=${active_label}
    set img=/cOS/active.img
    loopback $loopdev /$img
    source ($loopdev)/etc/cos/bootargs.cfg
    linux ($loopdev)$kernel $kernelcmd ${extra_cmdline} ${extra_active_cmdline} nomodeset
    initrd ($loopdev)$initramfs
    }
  • 重新啟動以使變更生效。

如何變更預設 GRUB 開機選單項目​

要變更預設項目,請先檢查選單項目的 --id 屬性。Grub 選單項目位於以下檔案中:

  • /run/initramfs/cos-state/grub2/grub.cfg:包含預設、備援和恢復項目
  • /run/initramfs/cos-state/grubcustom:包含除錯項目

在以下範例中,項目的 id 是 debug。

# cat \
/run/initramfs/cos-state/grub2/grub.cfg \
/run/initramfs/cos-state/grubcustom

<...>
menuentry "${display_name} (debug)" --id debug {
search --no-floppy --set=root --label COS_STATE
set img=/cOS/active.img
set label=COS_ACTIVE
loopback loop0 /$img
set root=($root)
source (loop0)/etc/cos/bootargs.cfg
linux (loop0)$kernel $kernelcmd ${extra_cmdline} ${extra_passive_cmdline} ${crash_kernel_params}
initrd (loop0)$initramfs
}

您可以透過執行以下命令來配置預設項目:

# mount -o remount,rw /run/initramfs/cos-state
# grub2-editenv /run/initramfs/cos-state/grub_oem_env set saved_entry=debug

如有必要,您可以透過執行命令 grub2-editenv /run/initramfs/cos-state/grub_oem_env unset saved_entry 來復原變更。

如何對系統當機或掛起進行除錯​

收集當機日誌​

如果系統當機時核心恐慌追蹤未記錄在系統日誌中,一種可靠的定位當機日誌的方法是使用串列埠控制台。

要啟用核心訊息輸出到串列埠控制台,請使用以下步驟:

  • 啟動系統到 GRUB 選單。按 ESC 停留在選單上。

  • 在第一個選單項目上按 e。將 console=ttyS0,115200n8 附加到 linux (loop0)$kernel $kernelcmd 行。按 Ctrl + x 啟動系統。

備註

根據您的環境調整控制台選項。確保在行末尾附加 console= 字串。

  • 連接到串列埠以擷取日誌。

收集當機傾印檔​

對於核心恐慌當機,您可以使用 kdump 來收集當機傾印檔。

預設情況下,作業系統啟動時未啟用 kdump 功能。使用者可以透過在啟動時選擇 debug 選單項目來啟用該功能,如以下範例所示:

當系統當機時,當機傾印檔將儲存在 /var/crash/<time> 目錄中。向開發人員提供當機傾印檔有助於他們排除故障並解決問題。