跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 疑難排解 / 常見問題及其解決方案
適用範圍 SUSE Linux Enterprise Server 15 SP4

48 常見問題及其解決方案

本章介紹一些可能會發生的問題及其解決方案。即使這裡沒有與您完全相同的情況,或許可以從類似情況中獲得一些提示,來解決您遇到的問題。

48.1 尋找並收集資訊

Linux 會非常詳細地報告事件。當系統發生問題時,可以從幾個地方查看相關資訊,主要是 Linux 系統的標準記錄檔案,也有與 SUSE Linux Enterprise Server 系統相關的記錄檔案。大部分記錄檔案都可以透過 YaST (其他 ›  檢視開機記錄 」) 進行檢視。

使用 YaST 可以收集支援團隊所需的所有系統資訊。使用其他 › 支援,然後選取問題類別。在收集到所有資訊之後,將此份資訊連結到您的支援要求。

以下是最常查看的記錄檔案清單,以及它們各自的一般用途。包含 ~ 的路徑表示目前使用者的主目錄。

表 48.1︰ 記錄檔

記錄檔案

描述

~/.xsession-errors

來自目前執行中桌上應用程式的訊息。

/var/log/apparmor/

來自 AppArmor 的記錄檔案,請參閱Part V, “Confining privileges with AppArmor 以獲得詳細資訊。

/var/log/audit/audit.log

來自 Audit 的記錄檔案,可追蹤對檔案、目錄或系統資源的存取,並追蹤系統呼叫。請參閱Part VII, “The Linux Audit Framework”以獲得詳細資訊。

/var/log/mail.*

來自郵件系統的訊息。

/var/log/NetworkManager

NetworkManager 中的記錄檔案,用於收集網路連接性的問題

/var/log/samba/

目錄包含 Samba 伺服器和用戶端記錄訊息。

/var/log/warn

來自核心和系統記錄精靈的所有訊息,均為警告或以上等級。

/var/log/wtmp

二進位檔案包含使用者對於目前機器工作階段的登入記錄。請以 last 檢視。

/var/log/Xorg.*.log

來自 X Window System 的多種啟動和執行時期記錄檔案。對於 X 啟動失敗的除錯非常實用。

/var/log/YaST2/

目錄包含 YaST 的動作和其結果。

/var/log/zypper.log

Zypper 的記錄檔案。

與記錄檔不同的是,您的機器亦提供您執行中系統的資訊。請參閱表格 48.2: /proc 檔案系統的系統資訊

表 48.2︰ /proc 檔案系統的系統資訊

檔案

描述

/proc/cpuinfo

包含處理器資訊,如類型、廠商、型號與效能。

/proc/dma

顯示目前使用的 DMA 頻道。

/proc/interrupts

顯示使用中的岔斷,以及每種岔斷正在使用的數量。

/proc/iomem

顯示 I/O (輸入/輸出) 記憶體的狀態。

/proc/ioports

顯示此時正在使用的 I/O 連接埠。

/proc/meminfo

顯示記憶體狀態。

/proc/modules

顯示個別模組。

/proc/mounts

顯示目前掛接的裝置。

/proc/partitions

顯示所有硬碟的分割區。

/proc/version

顯示目前的 Linux 版本。

除了 /proc 檔案系統,Linux 核心還會輸出 sysfs 模組 (記憶體內檔案系統) 的相關資訊。此模組代表核心物件及其屬性和關係。如需有關 sysfs 的詳細資訊,請參閱第 29 章 「使用 udev 進行動態核心裝置管理 中 udev 的相關內容。表格 48.3 提供了 /sys 下最常用目錄的綜覽。

表 48.3︰ /sys 檔案系統的系統資訊

檔案

描述

/sys/block

包含系統中探查到之每個區塊裝置的子目錄。一般情況下,大部分裝置都是磁碟類型的裝置。

/sys/bus

包含每種實體匯流排類型的子目錄。

/sys/class

包含組合為功能型裝置 (如圖形、網路和印表機等) 的多個子目錄

/sys/device

包含全域裝置階層。

Linux 隨附多種工具可進行系統分析和監控。請參閱Chapter 2, System monitoring utilities以取得用於系統診斷最重要的選項。

下面的每種情境所採用的編排順序是,先在標題中描述問題,隨後用一兩個段落提供建議的解決方案、詳細解決方案的參考資料,以及對其他相關情境的交叉參照。

48.2 開機問題

開機問題指的是您的系統無法正常開機的狀況 (無法開機進入預期的目標和登入螢幕)。

48.2.1 GRUB 2 開機載入程式無法載入

若硬體運作正常,則可能是開機載入程式已損毀,Linux 無法在機器上啟動。若是這樣的話,必須修復開機載入程式。為此,您需要依第 48.5.2 節 「使用救援系統」中所述啟動救援系統,然後遵照第 48.5.2.4 節 「修改和重新安裝開機載入程式」中的指示。

此外,您可以依照以下方式使用救援系統來修復開機載入程式。從安裝媒體將機器開機。在開機螢幕中,選擇更多 › 將 Linux 系統開機。使用預設核心選項選取包含所安裝系統和核心的磁碟。

系統開機後,啟動 YaST 並切換到系統 › 開機載入程式。確定啟用了將一般開機碼寫入 MBR 選項,然後按一下確定。如此會透過重寫來修復損毀的開機載入程式,或者安裝缺失的開機載入程式。

另一個機器無法開機的原因可能跟 BIOS 有關:

BIOS 設定

檢查與您硬碟相關的 BIOS 設定。若在目前的 BIOS 設定下找不到硬碟本身,則可能只是未啟動 GRUB 2。

BIOS 開機順序

檢查您系統的開機順序是否包含硬碟。若未啟用硬碟選項,您的系統可能已正確安裝,但在需要存取硬碟時無法開機。

48.2.2 無圖形登入

如果機器能啟動,但無法開機進入圖形登入管理員,則問題可能出在預設的 systemd 目標選項或 X Window System 的組態上。若要檢查目前的 systemd 預設目標,請執行指令 sudo systemctl get-default。如果傳回的值為 not graphical.target,請執行指令 sudo systemctl isolate graphical.target。如果圖形登入螢幕已啟動,請登入並啟動YaST ›  系統 ›  服務管理員,然後將預設系統目標設定為圖形介面。此後,系統應該能夠開機進入圖形登入螢幕。

如果即使已開機或者切換到圖形目標,圖形登入螢幕也不啟動,則原因可能是您的桌面或 X Window 軟體設定錯誤或者已毀損。檢查 /var/log/Xorg.*.log,以瞭解 X 伺服器嘗試啟動時發出的詳細消息。如果啟動期間桌面發生錯誤,可能會在系統日誌中記錄錯誤訊息,您可以使用指令 journalctl 查詢該日誌 (如需詳細資訊,請參閱第 21 章 「journalctl:查詢 systemd 日誌)。若這些錯誤訊息指出 X 伺服器中有組態問題,請嘗試修復這些問題。若仍然未出現圖形系統,請考慮重新安裝圖形桌面。

48.2.3 無法掛接 Btrfs 根分割區

如果 btrfs 根分割區已毀損,請嘗試以下選項:

  • 使用 -o recovery 選項掛接該分割區。

  • 如果不起作用,請在您的根分割區上執行 btrfs-zero-log

48.2.4 強制檢查根分割區

如果根分割區損毀,請在開機提示符處使用 forcefsck 參數:如此即可將選項 -f (force) 傳遞給 fsck 指令。

48.2.5 停用交換以啟用開機

當某個交換裝置不可用且系統在開機期間無法啟用該裝置時,開機可能會失敗。透過將以下選項附加到核心指令行,來嘗試停用所有交換裝置:

systemd.device_wants_unit=off systemd.mask=swap.target

您也可以嘗試停用特定的交換裝置:

systemd.mask=dev-sda1.swap

48.2.6 GRUB 2 在雙重開機系統上重新開機時失敗

如果 GRUB 2 在重新開機期間失敗,請停用 BIOS 中的快速開機設定。

48.3 登入問題

登入問題是指機器雖然開機到預期的歡迎畫面或登入提示介面,卻拒絕接受使用者名稱和密碼,或者雖然接受了使用者名稱和密碼,但是行為異常 (無法啟動圖形桌面、發生錯誤或移到了指令行等)。

48.3.1 有效的使用者名稱和密碼組合失敗

這種情形常發生於系統設定為使用網路驗證或目錄服務時,且基於某些原因,會無法從其所設定的伺服器取得結果。只有 root 使用者 (做為唯一的本地使用者) 仍能登入這些機器。下面是機器看似運作良好卻無法正確執行登入的一些常見原因:

  • 網路未作用。如須對此情況的進一步指示,請參閱第 48.4 節 「網路問題」

  • DNS 此時未運作(這樣會阻礙 GNOME 運作,也會妨礙系統驗證安全伺服器的要求)。若機器花費過久的時間回應任何動作的話,表示可能是這種情況。如需此主題的詳細資訊,請參閱第 48.4 節 「網路問題」

  • 若系統設定為使用 Kerberos,則系統的本地時間有可能超過了 Kerberos 伺服器時間所容許的時間差 (一般為 300 秒)。若 NTP (網路時間協定) 未正確運作,或本地 NTP 伺服器未運作,則 Kerberos 驗證會停止作用,因為它必須仰賴網路上同步的共同時脈才可運作。

  • 系統的驗證組態設定錯誤。請檢查 PAM 組態檔案是否有錯字或指示詞順序錯誤。如需關於 PAM 和所包含組態檔案語法的其他背景資料,請參閱Chapter 2, Authentication with PAM

  • 主分割區已加密。如需此主題的詳細資訊,請參閱第 48.3.3 節 「登入至加密的主分割區失敗」

對於所有非外部網路造成的問題,解決方案就是重新開機進入單一使用者模式,並修復組態後再次開機進入操作模式,以嘗試重新登入。若要開機進入單一使用者模式:

  1. 重新啟動系統。會出現開機畫面及提示。

  2. Esc 離開開頭顯示畫面,並前往 GRUB 2 文字式功能表。

  3. B 進入 GRUB 2 編輯器。

  4. 將以下參數新增到包含核心參數的行中:

    systemd.unit=rescue.target
  5. 「F10」

  6. 輸入 root 的使用者名稱與密碼。

  7. 進行必要的所有變更。

  8. 在指令行中輸入 systemctl isolate graphical.target,開機進入完整多重使用者及網路模式。

48.3.2 有效的使用者名稱和密碼不被接受

這顯然是使用者最常遇到的問題,其發生的原因有很多。根據您使用本地使用者管理和驗證,或使用網路驗證,會有不同原因造成登入失敗。

本地使用者管理可能因為下列原因而失敗:

  • 使用者輸入的密碼有誤。

  • 使用者包含桌面組態檔的主目錄損毀或有防寫保護。

  • X Window System 可能無法驗證此特定使用者,尤其是在安裝目前版本的 Linux 之前,此使用者的主目錄已用於其他 Linux 版本的情況下。

若要找出本地登入失敗的原因,請執行下列步驟:

  1. 進行整個驗證機制的除錯之前,請先確認使用者所記的密碼正確無誤。如果使用者記錯了密碼,請使用「YaST 使用者管理」模組變更其密碼。請注意 Caps Lock 鍵的使用,並根據需要進行切換。

  2. root 身分登入,並使用 journalctl -e 檢查系統日誌,找出登入程序和 PAM 的錯誤訊息。

  3. 嘗試從主控台登入 (使用 CtrlAltF1)。如果成功,表示問題不在 PAM,因為它能夠在此機器上驗證此使用者。嘗試找出 X Window System 或 GNOME 桌面的任何問題。若需更多資訊,請參閱第 48.3.4 節 「GNOME 桌面有問題」

  4. 若使用者的主目錄已由其他 Linux 版本使用,請移除使用者主目錄中的 Xauthority 檔案。使用主控台透過 CtrlAltF1 登入,並以此使用者身份執行 rm .Xauthority。這樣應可排除此使用者的 X 驗證問題。重新嘗試圖形登入。

  5. 若由於組態檔案毀損導致桌面無法啟動,請繼續執行第 48.3.4 節 「GNOME 桌面有問題」

下面列出了特定使用者在特定機器上網路驗證失敗的一些常見原因:

  • 使用者輸入的密碼有誤。

  • 機器的本地驗證檔案中已存在使用者名稱,但網路驗證系統也提供了,兩者產生了衝突。

  • 主目錄是存在的,但損毀或無法使用。或許此目錄設為防止寫入,或位於此時無法存取的伺服器上。

  • 使用者沒有登入驗證系統特定主機的許可。

  • 機器的主機名稱已因某種原因而變更,而使用者沒有登入該主機的許可。

  • 機器無法聯繫驗證伺服器,或是含有使用者資訊的目錄伺服器。

  • X Window System 可能無法驗證此特定使用者,尤其是在安裝目前版本的 Linux 之前,此使用者的主目錄已用於其他 Linux 版本的情況下。

若要找出登入發生網路驗證失敗的原因,請執行下列步驟:

  1. 進行整個驗證機制的除錯之前,請先確認使用者所記的密碼正確無誤。

  2. 確定機器賴以進行驗證的目錄伺服器,並確定該伺服器已啟動且正在執行,而且能夠與其他機器正常進行通訊。

  3. 確定使用者的使用者名稱和密碼可以在其他機器上使用,以確定其驗證資料存在,而且已正確配送。

  4. 再看看在運作不正常的機器上,可否讓其他使用者登入。若其他使用者可以正常登入,或 root 可以登入的話,請登入並使用 journalctl -e> 檔案檢驗系統日誌。找出嘗試登入所對應的時間戳記,並判斷 PAM 是否已產生任何錯誤訊息。

  5. 嘗試從主控台登入 (使用 CtrlAltF1)。若是成功,說明問題不是出在 PAM 或使用者主目錄所在的目錄伺服器,因為能夠在此機器上驗證此使用者。嘗試找出 X Window System 或 GNOME 桌面的任何問題。若需更多資訊,請參閱第 48.3.4 節 「GNOME 桌面有問題」

  6. 若使用者的主目錄已由其他 Linux 版本使用,請移除使用者主目錄中的 Xauthority 檔案。使用主控台透過 CtrlAltF1 登入,並以此使用者身份執行 rm .Xauthority。這樣應可排除此使用者的 X 驗證問題。重新嘗試圖形登入。

  7. 若由於組態檔案毀損導致桌面無法啟動,請繼續執行第 48.3.4 節 「GNOME 桌面有問題」

48.3.3 登入至加密的主分割區失敗

建議對筆記型電腦使用加密的主分割區。如果無法登入您的筆記型電腦,通常只是因為無法解除鎖定您的分割區。

開機期間,您需要輸入密碼片語以解除鎖定加密的分割區。如果不輸入密碼片語,則開機程序會繼續,但分割區將處於鎖定狀態。

若要解除鎖定加密的分割區,請執行以下步驟:

  1. CtrlAltF1 切換到文字主控台。

  2. root 使用者身分登入。

  3. 使用以下指令重新啟動解除鎖定程序:

    # systemctl restart home.mount
  4. 輸入可解除鎖定加密分割區的密碼片語。

  5. AltF7 離開文字主控台並切換回登入畫面。

  6. 像往常一樣登入。

48.3.4 GNOME 桌面有問題

如果您遇到 GNOME 桌面問題,可以使用幾種方法對行為異常的圖形桌面環境進行疑難排解。下面所述的建議程序提供了修復損壞的 GNOME 桌面的最安全選項。

程序 48.1︰ GNOME 疑難排解
  1. 啟動 YaST 並切換到保全性與使用者

  2. 開啟使用者和組管理對話方塊並按一下新增

  3. 填寫必要欄位,然後按一下確定以建立新使用者。

  4. 登出並以新使用者身分登入。這將為您提供一個全新的 GNOME 環境。

  5. 將舊使用者帳戶的 ~/.local/~/.config/ 目錄中的個別子目錄複製到新使用者帳戶的相應目錄。

    每次複製操作之後,登出並以新使用者身分再次登入,以檢查 GNOME 是否仍正常工作。

  6. 重複上一步,直至找到損壞 GNOME 的組態檔案。

  7. 以舊使用者身分登入,並將有問題的組態檔案移到其他位置。登出並以舊使用者身分再次登入。

  8. 刪除之前建立的使用者。

48.4 網路問題

您系統的許多問題可能都與網路有關,但可能一開始看不出來。例如,系統不允許使用者登入,可能就是某種網路問題所致。本節會介紹簡單的檢查清單,可讓您用來辨識所遇到網路問題的原因。

程序 48.2︰ 如何識別網路問題

檢查機器網路連接時,請如下執行:

  1. 若使用乙太網路連線,請先檢查硬體。確定您的網路電纜已正確插入電腦和路由器 (或集線器等)。正常情況下,乙太網路連接器旁的兩個控制燈都會亮起。

    若連接失敗,請檢查網路線在其他機器上可否使用。若可以的話,就是您的網路卡造成的問題。若您的網路設定中包含集線器或交換器,也可能是這些裝置的問題。

  2. 若使用無線連接的話,請檢查可否由其他機器建立無線連結。若無法建立,請聯絡無線網路管理員。

  3. 完成對基本網路連接性的檢查後,請嘗試找出無回應的服務。收集您設定中所需所有網路伺服器的位址資訊。您可在適當的 YaST 模組中查詢,或詢問您的系統管理員。下列清單提供了設定中所包含的一些基本的網路伺服器,以及其故障的症狀。

    DNS (名稱服務)

    名稱服務損壞或故障會從許多方面影響網路的運作。如果本地機器依賴任意網路伺服器進行驗證,而這些伺服器由於名稱解析問題而無法找到,則使用者甚至還不能登入。網路中由故障名稱伺服管理的機器將無法看到彼此,也不能相互通訊。

    NTP (時間服務)

    NTP 服務的損壞或完全故障會影響 Kerberos 驗證以及 X 伺服器的功能。

    NFS (檔案服務)

    若應用程式所需的資料儲存於掛接 NFS 的目錄中,萬一此服務關閉或設定錯誤,該應用程式將無法啟動或無法正常運作。最糟糕的情況是,如果因 NFS 伺服器出現故障,而找不到包含 .gconf 子目錄的使用者主目錄,則使用者的個人桌面組態將無法起作用。

    Samba (檔案服務)

    若應用程式所需的資料儲存於出現故障之 Samba 伺服器的目錄中,該應用程式將無法啟動或無法正常運作。

    NIS (使用者管理)

    若您的 SUSE Linux Enterprise Server 系統依賴出現故障之 NIS 伺服器提供使用者資料,使用者將無法登入這部機器。

    LDAP (使用者管理)

    若您的 SUSE Linux Enterprise Server 系統依賴出現故障之 LDAP 伺服器提供使用者資料,使用者將無法登入這部機器。

    Kerberos (驗證)

    不進行驗證,也無法登入任何機器。

    CUPS (網路列印)

    使用者無法列印。

  4. 請檢查網路伺服器是否運作,且您的網路設定可否讓您建立連接:

    重要
    重要:限制

    下述偵錯程序只適用於不涉及任何內部路由的簡易網路伺服器/用戶端設定。假設伺服器和用戶端都是相同子網路的成員,不需要其他路由。

    1. 使用 ping IP_ADDRESS/HOSTNAME (以伺服器的主機名稱或 IP 位址取代該項) 來檢查各伺服器是否在正常運作,且能夠回應網路。若此指令成功的話,就會告知您的主機您正在尋找並執行它,且您網路的名稱服務設定是正確的。

      若 ping 的結果失敗且傳回 destination host unreachable (無法聯繫目的地主機),則您的系統或想找的伺服器可能設定錯誤或故障。從另一部機器執行 ping IP addressYOUR_HOSTNAME 指令,以檢查是否可連接您的系統。如果您可以從另一台機器存取您的機器,可能是伺服器未執行或設定錯誤。

      若 ping 失敗且傳回 unknown host,則是名稱服務設定錯誤,或使用的主機名稱不正確。如須對此問題做進一步檢查,請參閱步驟 4.b。若 ping 仍然失敗,則是您的網路卡未設定正確,或網路硬體故障。

    2. 請使用 host HOSTNAME 來檢查您嘗試連接的伺服器的主機名稱是否正確地轉譯為 IP 位址,反之亦然。若此指令傳回主機的 IP 位址,則名稱服務是啟動且執行中的。如果 host 指令失敗,請在您的主機上檢查所有與名稱及位址解析有關的網路組態檔案:

      /var/run/netconfig/resolv.conf

      此檔案用於追蹤您目前使用的名稱伺服器與領域。它是 /run/netconfig/resolv.conf 的符號連結,YaST 或 DHCP 通常會自動對其進行調整。請確定此檔案的結構如下,且所有的網路位址與網域名稱均正確:

      search FULLY_QUALIFIED_DOMAIN_NAME
      nameserver IPADDRESS_OF_NAMESERVER

      此檔案會包含多個名稱伺服器位址,其中至少有一個必須是正確的,才能為您的主機提供名稱解析。需要時,請使用 YaST 的「網路設定」模組 (「主機名稱/DNS」索引標籤) 調整此檔案。

      若您是透過 DHCP 處理網路連接的,請在 YaST 的「網路設定」模組 (「主機名稱/DNS」索引標籤) 中選取透過 DHCP 設定主機名稱 (可針對所有介面全域設定,也可以逐個介面設定) 和透過 DHCP 更新名稱伺服器和搜尋清單,以允許 DHCP 變更主機名稱和名稱服務資訊。

      /etc/nsswitch.conf

      此檔案會告知 Linux 何處可找到名稱服務資訊。其內容如下:

       ...
      hosts: files dns
      networks: files dns
      ...

      dns 項目是必備的。這會告訴 Linux 使用外部名稱伺服器。正常情況下,YaST 會自動管理這些項目,但檢查很謹慎。

      若主機上所有相關的項目都正確的話,請要求您的系統管理員檢查 DNS 伺服器組態是否具備正確的時區資訊。如需 DNS 的詳細資訊,請參閱第 39 章 「網域名稱系統如果您確定主機和 DNS 伺服器的 DNS 組態正確無誤,請繼續檢查網路和網路裝置的組態。

    3. 若您的系統無法建立與網路伺服器的連接,且您已經從問題可能原因清單中排除名稱服務的問題,則請檢查網路卡的組態。

      使用 ip addr show NETWORK_DEVICE 指令來檢查是否已正確設定此裝置。確定已正確設定帶有網路遮罩 (/MASK) 的 inet address。IP 位址有錯誤或網路遮罩有位元遺失的話,都可能造成網路組態無法使用。必要的話,請一併於伺服器上執行此檢查。

    4. 如果已正確設定且正在執行名稱服務和網路硬體,但有些外部網路連接仍然長時間逾時或完全失敗,請使用 traceroute FULLY_QUALIFIED_DOMAIN_NAME 指令 (以 root 使用者的身分執行) 來追蹤這些要求所採用的網路路由。此指令會列出請求從您機器傳送到其目的地所經的所有閘道 (躍程)。其會列出各躍程的回應時間,以及是否可連接此躍程。請使用 traceroute 加上 ping 找出問題的原因,並告知管理員。

當您確定了網路故障的原因後,便可自行解決 (如果問題出在您自己的機器上),或告訴網路系統管理員您的發現,以便其重新設定服務或修復必要的系統。

48.4.1 NetworkManager 問題

若您有網路連接的問題,請依程序 48.2 「如何識別網路問題」所述將範圍調窄。若 NetworkManager 似乎有問題,請執行下列步驟,取得 NetworkManager 故障原因的提示記錄:

  1. 開啟外圍程序並以 root 身份登入。

  2. 重新啟動 NetworkManager:

    > sudo systemctl restart NetworkManager
  3. 以一般使用者身分開啟網頁,例如 http://www.opensuse.org,看看是否可以連接。

  4. /var/log/NetworkManager 中收集 NetworkManager 狀態的所有相關資訊。

如需關於 NetworkManager 的詳細資訊,請參閱第 31 章 「使用 NetworkManager

48.5 資料問題

資料問題是指,機器或許可以 (或無法) 正確開機,但系統上有著明顯的資料損毀,且需要修復。遇到這些情況時,需要用到您重要資料的備份檔案,以讓您的系統回復到故障前的狀態。

48.5.1 管理分割區影像

有時,您需要對整個分割區甚至是硬碟執行備份。Linux 附帶 dd 工具,可為磁碟建立完全一致的副本。結合 gzip,還能為您節省一些空間。

程序 48.3︰ 備份和還原硬碟
  1. root 使用者身分啟動外圍程序。

  2. 選取來源裝置。一般類似 /dev/sda (標示為 SOURCE)。

  3. 決定要儲存影像 (標示為 BACKUP_PATH) 的位置。此位置必須不同於來源裝置的位置。換言之,如果您對 /dev/sda 進行備份,就不能將影像檔案儲存在 /dev/sda 下。

  4. 執行以下指令建立壓縮影像檔:

    # dd if=/dev/SOURCE | gzip > /BACKUP_PATH/image.gz
  5. 使用以下指令還原硬碟:

    # gzip -dc /BACKUP_PATH/image.gz | dd of=/dev/SOURCE

如果您只需備份分割區,請使用各個分割區取代指令中預留的 SOURCE。如此,您的影像檔便會存放於同一個硬碟的不同分割區中。

48.5.2 使用救援系統

系統無法啟動並正常運作的原因可能有幾種。最常見的原因是系統當機後檔案系統損毀、組態檔案損毀,或開機載入程式組態損毀。

為了幫助您解決這些狀況,SUSE Linux Enterprise Server 包含可以開機的救援系統。救援系統是一個小型的 Linux 系統,可以載入到 RAM 磁碟上並裝載為根目錄檔案系統,好讓您從外部存取 Linux 分割區。藉由此救援系統,您可以復原或修改任何重要的系統項目。

  • 操作任何類型的組態檔案。

  • 檢查檔案系統有無缺失並啟動自動修復程序。

  • 變更根目錄環境中存取已安裝的系統.

  • 檢查、修改和重新安裝開機載入程式組態。

  • 從錯誤安裝的裝置驅動程式或無法使用的核心復原。

  • 使用 Parted 指令來調整分割區大小。如需此工具的詳細資訊,請造訪 GNU Parted 網站 http://www.gnu.org/software/parted/parted.html

救援系統可以從各種來源與位置載入。最簡單的方法就是從原始安裝媒體將救援系統開機。

注意
注意:IBM Z:啟動救援系統

在 IBM Z 上,可將安裝系統用於救援目的。若要啟動救援系統,請遵照第 48.6 節 「IBM Z:使用 initrd 做為救援系統」中的指示。

  1. 將安裝媒體插入 DVD 光碟機。

  2. 重新啟動系統。

  3. 在開機畫面中按 F4,然後選擇DVD-ROM。之後從主功能表中選擇救援系統

  4. Rescue: 提示輸入 root。無須輸入密碼。

如果硬體設定沒有包含 DVD 光碟機,您可以從網路來源將救援系統開機。以下範例適用於遠端開機案例 — 如果使用其他開機媒體 (例如 DVD),請相應修改 info 檔案,並按照一般安裝方式開機。

  1. 進入 PXE 開機設定的組態中,新增下面的行:install=PROTOCOL://INSTSOURCErescue=1。如果需要啟動系統修復,請使用 repair=1。如同正常的安裝一樣,PROTOCOL 代表任何受支援的網路通訊協定 (NFS、HTTP、FTP 等),INSTSOURCE 代表網路安裝來源的路徑。

  2. 使用網路喚醒啟動系統 (如第 17.5 節 「使用網路喚醒進行遠端喚醒」中所述)。

  3. Rescue: 提示輸入 root。無須輸入密碼。

進入該救援系統後,可透過 AltF1AltF6 鍵來使用虛擬主控台。

/bin 目錄中提供了一個外圍程序和其他有用的公用程式,如 mount 程式。/sbin 目錄中包含重要的檔案與網路公用程式,以便檢視及修復檔案系統。此目錄中也有最重要的二進位系統維護程式,例如 fdiskmkfsmkswapmountshutdown,以及維護網路的 ipss。目錄 /usr/bin 包含 vi 編輯器、find、less 和 SSH。

若要檢視系統訊息,請使用指令 dmesg,或者使用 journalctl 來檢視系統記錄。

48.5.2.1 檢查和操作組態檔案

為了舉例說明使用救援系統如何修正組態檔案,請想像系統由於組態檔案損毀而無法正常開機。您可以使用救援系統來解決這個問題。

若要操作組態檔案,請執行下列步驟:

  1. 使用上述的其中一個方法啟動救援系統。

  2. 若要將 /dev/sda6 下的開機檔案系統裝載到救援系統,請使用下列指令:

    > sudo mount /dev/sda6 /mnt

    系統的所有目錄現在都存放在 /mnt

  3. 將此目錄變更到裝載的開機檔案系統中:

    > sudo cd /mnt
  4. 在 vi 編輯器中開啟有問題的組態檔案。調整並儲存設定。

  5. 從救援系統解除裝載開機檔案系統:

    > sudo umount /mnt
  6. 將機器重新開機。

48.5.2.2 修復和檢查檔案系統

一般而言,檔案系統無法在執行中的系統上修復。如果發生了嚴重的問題,您可能甚至無法裝載開機檔案,而且系統可能會因為核心異常而無法開機。在此情況下,唯一的方法就是從外部修復系統。該系統包含的公用程式可檢查並修復 btrfsext2ext3ext4xfsdosfsvfat 檔案系統。尋找指令 fsck.FILESYSTEM。例如,如果需要對 btrfs 進行檔案系統檢查,請使用 fsck.btrfs

48.5.2.3 存取已安裝系統

如果需要從救援系統存取已安裝的系統,您需要在變更根目錄環境中執行此操作。例如,若要修改開機載入程式組態或執行硬體組態公用程式。

若要根據已安裝的系統設定變更根目錄環境,請執行下列步驟:

  1. 提示
    提示:輸入 LVM 磁碟區群組

    如果您使用的是 LVM 設定 (如需更多一般性詳細資料,請參閱第 II 部分 「邏輯磁碟區 (LVM)」),請輸入所有現有的磁碟區群組,以便能夠尋找和掛接裝置:

    rootvgimport -a

    執行 lsblk 以檢查哪個節點對應於根分割區。在本例中,該節點為 /dev/sda2

    > lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    sda           8:0    0 149,1G  0 disk
    ├─sda1        8:1    0     2G  0 part  [SWAP]
    ├─sda2        8:2    0    20G  0 part  /
    └─sda3        8:3    0   127G  0 part
      └─cr_home 254:0    0   127G  0 crypt /home
  2. 從安裝的系統掛接根分割區:

    > sudo mount /dev/sda2 /mnt
  3. 掛接 /proc/dev/sys 分割區:

    > sudo mount -t proc none /mnt/proc
    > sudo mount --rbind /dev /mnt/dev
    > sudo mount --rbind /sys /mnt/sys
  4. 現在可以變更根分割區為新的環境,並保留 bash 外圍程序:

    > chroot /mnt /bin/bash
  5. 最後,從已安裝的系統裝載其餘分割區:

    > mount -a
  6. 現在您可以存取已安裝的系統。重新啟動系統之前,請先使用 umount -a 來解除裝載分割區,並以 exit 離開變更根目錄環境。

警告
警告:限制

雖然您可以完全存取已安裝系統的檔案和應用程式,但必須遵守某些限制。執行中的核心是使用救援系統啟動的核心,而不是使用變更根目錄環境啟動的核心。它只支援基本硬體,而且無法從已安裝系統新增核心模組,除非核心版本完全一致。一律使用 uname -r 檢查目前執行的 (救援) 核心,然後確定變更根目錄環境的 /lib/modules 目錄中是否有相符的子目錄。如果有,您便可以使用已安裝的模組,否則,需要在其他媒體 (例如快閃磁碟機) 上提供模組的正確版本。多數情況下,救援核心版本與已安裝的版本並不相同,因此,舉例來說,您便不能像平常一樣存取聲卡。您也無法啟動圖形使用者介面。

另外請注意,當您使用 AltF1 - AltF6 來切換主控台時,將會離開變更根目錄環境。

48.5.2.4 修改和重新安裝開機載入程式

有時候系統無法開機是因為開機載入程式組態已損毀。譬如說,開機載入程式若未執行,啟動常式便無法將實體磁碟機轉譯為 Linux 檔案系統中的實際位置。

若要檢查開機載入程式組態和重新安裝開機載入程式,請執行下列步驟:

  1. 執行存取已安裝系統所需的必要步驟,如 第 48.5.2.3 節 「存取已安裝系統」 所述。

  2. 檢查系統上是否已安裝 GRUB 2 開機載入程式。如果未安裝,請安裝 grub2 套件並執行

    > sudo grub2-install /dev/sda
  3. 根據第 18 章 「開機載入程式 GRUB 2中概述的 GRUB 2 組態原則,檢查下列檔案是否正確設定,並在必要時加以修正。

    • /etc/default/grub

    • /boot/grub2/device.map (選用檔案,手動建立後才存在)

    • /boot/grub2/grub.cfg (此檔案是產生的,不要編輯)

    • /etc/sysconfig/bootloader

  4. 依序使用下列指令來重新安裝開機載入程式:

    > sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. 卸載分割區,登出變更根目錄環境,並將系統重新開機:

    > umount -a
    exit
    reboot

48.5.2.5 修復核心安裝

核心更新可能會帶來新的錯誤,進而會影響系統作業。例如,系統中某個硬體的驅動程式可能有錯誤,致使您無法存取和使用系統。在這種情況下,請復原至上回正常運作的核心 (如果系統中提供的話),或者從安裝媒體安裝原始核心。

提示
提示:如何在更新後保留最後幾個核心

為了防止在錯誤的核心更新後無法開機,請使用核心多版本功能,並告知 libzypp 您要在更新後保留哪些核心。

例如,若要永遠保留最後兩個核心和目前執行中的核心,請新增

multiversion.kernels = latest,latest-1,running

/etc/zypp/zypp.conf 檔案。如需詳細資訊,請參閱第 27 章 「安裝多個核心版本

另一個類似的情況是,當您需要重新安裝或更新 SUSE Linux Enterprise Server 不支援之裝置的已損毀驅動程式時。例如,當硬體廠商使用特定裝置時,比如使用硬體 RAID 控制器,這就要求作業系統能夠識別二進位驅動程式。廠商一般會發行「驅動程式更新磁碟」(DUD),內含所需驅動程式的修復或更新版本。

在這兩種情況下,您都需要以救援模式存取安裝的系統,並修正與核心相關的問題,否則系統可能無法正常開機:

  1. SUSE Linux Enterprise Server 安裝媒體開機。

  2. 如果您要在錯誤的核心更新之後復原,請跳過此步驟。如果需要使用驅動程式更新磁碟 (DUD),請在開機功能表出現之後按 F6 以載入驅動程式更新,並選擇驅動程式更新的路徑或 URL,然後按一下確認。

  3. 從開機功能表中選擇救援系統,然後按 Enter。如果您之前選擇使用 DUD,系統將會要求您指定儲存驅動程式更新的位置。

  4. Rescue: 提示輸入 root。無須輸入密碼。

  5. 手動將目標系統和變更根目錄掛接至新環境:如需詳細資訊,請參閱 第 48.5.2.3 節 「存取已安裝系統」

  6. 如果使用 DUD,請安裝/重新安裝/更新錯誤的裝置驅動程式套件。請務必確定已安裝的核心版本與要安裝的驅動程式版本完全相符。

    如果要修正錯誤的核心更新安裝,可以按照以下程序從安裝媒體安裝原始核心。

    1. 使用 hwinfo --cdrom 識別 DVD 裝置,並使用 mount /dev/sr0 /mnt 掛接裝置。

    2. 導覽到 DVD 上儲存核心檔案的目錄,例如 cd /mnt/suse/x86_64/

    3. 使用 rpm -i 指令根據您的偏好安裝所需的 kernel-*kernel-*-basekernel-*-extra 套件。

  7. 根據需要更新組態檔,然後重新啟動開機載入程式。如需詳細資訊,請參閱 第 48.5.2.4 節 「修改和重新安裝開機載入程式」

  8. 從系統磁碟機中取出任何可開機的媒體,然後重新開機。

48.6 IBM Z:使用 initrd 做為救援系統

如果升級或修改了 SUSE® Linux Enterprise Server for IBM Z 的核心,可能會意外地將系統重新開機為不一致的狀態,這樣會使已安裝系統的標準 IPL 程序失敗。在這種情況下,您可以使用安裝系統來提供救援。

第 5.3 節 「安裝準備工作」中所述,對 SUSE Linux Enterprise Server for IBM Z 安裝系統執行 IPL。選擇開始安裝,然後輸入所有需要的參數。載入安裝系統後,系統會詢問您要使用哪個顯示類型來控制安裝,此時請選取 SSH。現在,您可以不輸入密碼直接以 root 身分透過 SSH 登入系統。

在此狀態下,尚未設定任何磁碟。您必須先設定磁碟,才能繼續。

程序 48.4︰ 設定 DASD
  1. 使用下列指令來設定 DASD:

    dasd_configure 0.0.0150 1 0

    0.0.0150 是連接 DASD 的通道。1 表示啟用磁碟 (此處的 0 會停用磁碟)。0 表示磁碟的無 DIAG 模式 (此處的 1 會啟用磁碟的 DAIG 存取)。

  2. 現在 DASD 已經上線 (請使用 cat /proc/partitions 來檢查),而且可以用於後續指令。

程序 48.5︰ 設定 zFCP 磁碟
  1. 若要設定 zFCP 磁碟,您必須先設定 zFCP 介面卡。使用下列指令來執行此動作:

    zfcp_host_configure 0.0.4000 1

    0.0.4000 是連接介面卡的通道,而 1 表示啟動 (此處的 0 會停用介面卡)。

  2. 啟用介面卡之後,便可以設定磁碟。使用下列指令來執行此動作:

    zfcp_disk_configure 0.0.4000 1234567887654321 8765432100000000  1

    0.0.4000 是之前使用的通道 ID,1234567887654321 是 WWPN (全球連接埠號碼),而 8765432100000000 則是 LUN (邏輯單元編號)。1 表示啟用磁碟 (此處的 0 會停用磁碟)。

  3. 現在 zFCP 磁碟已經上線 (請使用 cat /proc/partitions 來檢查),而且可以用於後續指令。

現在,救援系統已完全設定好,您可以開始修復安裝的系統。如需關於如何解決最常見問題的指示,請參閱第 48.5.2 節 「使用救援系統」

48.7 IBM Z:更新核心後,系統開機到先前的核心

在 IBM Z 系統上安裝新的核心版本時不會自動更新「stage 1」zipl 載入程式。這表示系統重新啟動後會開機到舊核心。如果啟用了安全開機,當使用透過某個 shim 更新收回的簽署金鑰來簽署舊核心時 (假如 shim 更新和簽署同時發生),開機將會失敗。

若要解決此問題,請重新整理 zipl,以使其瞭解新核心版本。為此,請在安裝新核心後執行以下指令:

grub2-emu --kexec

在 grub2 開機功能表中,選取要重新開機的新核心。再次執行以上指令,以使變更生效。最後,執行以下指令以重新安裝開機載入程式:

update-bootloader --reinit