Linux 上極端啟動時間故障排除

Linux 上極端啟動時間故障排除

我不確定這是否是詢問此類技術支援相關問題的正確位置,但這似乎肯定是一個 Linux 問題,或者至少是關於 Linux 與我的硬體互動的方式。

我有一台由 HP Z800 工作站建置的桌上型電腦,該系統可能與不是支援 UEFI,因此所有作業系統都使用舊版 BIOS 和 MBR 分割區方案。

我通常會雙啟動 Windows 10 和 Linux 發行版(目前是 Linux Mint 20.2,但此問題存在於全部我嘗試過的發行版,包括 Debian 11、Ubuntu 20.04-21.10、Fedora 33-35、OpenSUSE Tumbleweed 和 Arch Linux)。

由於我主要是非技術用戶,我不確定正確的術語是什麼,但為了能夠正確描述我的問題,我必須將啟動過程分為三個階段(這些是我自己的術語以及我與現有術語的衝突我不知道!

  • 第 1 階段:從按下電源按鈕開始到進入開機載入程式 (GRUB2) 結束的部分。
  • 第 2 階段:從進入引導程式開始,到實際作業系統開始引導時結束,即當我收到控制台/systemd 訊息、普利茅斯螢幕等。
  • 第 3 階段:從第 2 階段結束開始的部分在作業系統完全啟動並且我位於顯示管理器上時結束。

問題是第二階段需要非常長的時間。因此,一旦我進入引導程式並選擇(或自動選擇)一個Linux 條目,螢幕就會完全空白(根據發行版,這裡可能會有一個閃爍的提示,在Mint 上它是完全空白的,但例如在Fedora 上我通常會得到一個閃爍提示),系統在此閒置時間極長(我上次測量了大約 1 分 44 秒),然後第 3 階段開始。

由於第 3 階段沒有出現任何問題,因此我不知道如何解決此問題。例如 systemd-analyze 給出Startup finished in 16.129s (kernel) + 2.863s (userspace) = 18.993s graphical.target reached after 2.120s in userspace,這對我來說似乎很正常,而且絕對不能解釋引導程式和作業系統開始啟動之間的 1 分鐘以上的空白。

更多資訊:

  • 視窗才不是這樣做。如果我在開機載入程式中選擇 Windows 10 條目,它會立即啟動開機程序(即使快速啟動已關閉)。
  • 它並不總是這樣。我不確定這種行為何時開始(可能大約一年前),我想我在 PC 上完全重新安裝了兩個作業系統,就像我清除所有硬碟並安裝 W10 和 Linux 發行版一樣從頭開始。但沒有發生什麼異常的事情可以讓人想到這個問題的根本原因。
  • 除了細微的差別(例如我之前提到的閃爍提示)之外,從那時起我嘗試過的所有 Linux 發行版的行為方式都是相同的。不過,我沒有測量不同發行版的啟動時間的差異。但在每種情況下,等待時間都遠遠超過了適當的時間,並且在第 2 階段和第 3 階段之間總是相同的。
  • 我的電腦有三個硬碟、兩個 SSD 和一個旋轉 HDD。我通常將一個 SSD 用於 Windows C:,另一個 SSD 用於 Linux / 分割區,而旋轉 HDD 用於 Linux /home 和 Windows D: 分割區。我嘗試過在將 Linux 安裝到每個磁碟的過程中編寫 MBR 引導程式碼,並且在所有情況下都會出現相同的問題。所以看來哪個是啟動碟並不重要。

我不一定期望有神奇的修復,但正如我所說,我完全不知道如何開始解決此問題,因為在等待期間沒有給我任何反饋,而且這個問題很難搜索(例如搜索緩慢的啟動時間通常假設存在第3 階段問題)。

編輯:

  • 我已經刪除了quietsplash新增systemd.show_status=yes到啟動參數。問題仍然存在,即之前有一分鐘+等待時間任何出現訊息。
  • 的輸出dmesg | grep command[ 0.064784] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.11.0-38-generic root=UUID=78354078-8fcd-4223-8fb0-9137207cb415 ro systemd.show_status=yes.
  • 關於 LED 燈:在「等待時間」期間,我的電源按鈕旁的綠燈會持續發光,沒有閃爍。這是我在機殼上看到的唯一 LED 燈。
  • fdisk -l和的輸出lsblk貼如下:
Disk /dev/sda: 447,13 GiB, 480103981056 bytes, 937703088 sectors
Disk model: CT480BX500SSD1  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00a879e5

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048    104447    102400    50M  7 HPFS/NTFS/exFAT
/dev/sda2          104448 936654957 936550510 446,6G  7 HPFS/NTFS/exFAT
/dev/sda3       936656896 937697279   1040384   508M 27 Hidden NTFS WinRE


Disk /dev/sdb: 1,84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: WDC WD20EZRX-00D
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfc1366de

Device     Boot      Start        End    Sectors  Size Id Type
/dev/sdb1  *          2048 2833283071 2833281024  1,3T  7 HPFS/NTFS/exFAT
/dev/sdb2       2833283072 3907028991 1073745920  512G 83 Linux


Disk /dev/sdc: 223,58 GiB, 240057409536 bytes, 468862128 sectors
Disk model: KINGSTON SA400S3
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x143a208b

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sdc1       452857856 468860927  16003072  7,6G 82 Linux swap / Solaris
/dev/sdc2  *         2048 452857855 452855808  216G 83 Linux

Partition table entries are not in disk order.

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 447,1G  0 disk 
├─sda1   8:1    0    50M  0 part 
├─sda2   8:2    0 446,6G  0 part 
└─sda3   8:3    0   508M  0 part 
sdb      8:16   0   1,8T  0 disk 
├─sdb1   8:17   0   1,3T  0 part 
└─sdb2   8:18   0   512G  0 part /Storage
sdc      8:32   0 223,6G  0 disk 
├─sdc1   8:33   0   7,6G  0 part [SWAP]
└─sdc2   8:34   0   216G  0 part /

相關內容