使用 SSD 緩慢載入 Grub
從昨天開始,我在我的 PC 中添加了一個全新的 SSD,並且我從 grub 菜單體驗到了非常快速的啟動。問題是在到達此菜單之前,我必須等待很長時間(大多數情況下約為 30 秒)。我在 SSD 上安裝了 grub。在 BIOS 之後,我有時會立即看到“Grub loading”,有時只是一個閃爍的游標,但到達菜單的時間似乎是一樣的。我嘗試將 debug=disk(甚至 debug=all 添加到我的 grub.cfg),但日誌僅在無法解釋的等待時間結束後出現。
我有 3 個磁碟: - sda,標記為可引導,上面有一個 Windows 引導載入程序 - sdb,它是 SSD - sdc,它保存交換分區和數據分區。直到昨天它才安裝了我之前安裝的 Fedora 18
分開說明:
Model: ATA ST3250410AS (scsi) Disk /dev/sda: 250GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 32.3kB 250GB 250GB primary ntfs boot Model: ATA M4-CT128M4SSD2 (scsi) Disk /dev/sdb: 128GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1075MB 1074MB primary ext4 boot 2 1075MB 11.8GB 10.7GB primary ext4 3 11.8GB 33.7GB 21.9GB primary ext4 Model: ATA ST3160827AS (scsi) Disk /dev/sdc: 160GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 2149MB 2147MB primary linux-swap(v1) 2 52.4GB 160GB 107GB primary fat32 lba
在 Windows 下(在 sda1 上)時,我在關閉時也有無法解釋的掛起時間,但這首先發生在一年前。
編輯 拔下 250GB 驅動器會使延遲消失。HDD LED 在等待期間不閃爍。
到底是怎麼回事?
嘗試將 SSD 插入第一個 SATA 埠並在 BIOS 中選擇它作為第一個引導設備。否則,通常是擺弄驅動器並確保
GRUB
配置與實際驅動器編號匹配,即在 BIOS 等中hd0
指定。HD0
我很確定我知道根本原因和解決這個問題的方法,因為我的一台筆記型電腦上也有同樣的問題,但是我還沒有找到一個像樣的長期修復方法。
請檢查 grub.cfg 所在的 /boot/grub2 文件夾。如果我是對的,grub.cfg 的文件非常大。對於資訊,正常的 grub.cfg 大約是 10k(在真正的重度多重引導上可能高達 50k),但兆字節或以上的文件大小絕對是損壞的跡象。
根本原因是:在安裝或重大升級之後,最後一步是執行 grub2-mkconfig,它會重新生成 grub.cfg 文件。這是一個掃描所有磁碟等的嚴肅過程,因此需要一些時間。寫入此文件後,系統幾乎總是直接重新啟動,以便啟動您的所有更改。SSD 磁碟發生的情況是磁碟由於重新啟動而硬重置,而寫入 grub.cfg 的數據尚未安全地送出到其 NAND 單元。在大多數情況下,數據是存在的,但文件關閉(設置文件長度等)沒有發生,這會導致正常 grub.cfg 文件之後的巨大空白空間(或舊磁碟數據)。
這個動作的效果如下: grub2 讀取 grub.cfg 文件,但是在正常數據(這是可用的引導系統列表)之後,它需要一些時間(最多 30 秒)來解析虛擬數據(通常是 0x00 字節或類似的),有時會發出錯誤。但最後,它會找到文件的結尾,並為您提供找到的作業系統的正確列表。
修復:確保所有磁碟都可用,並執行手動 grub2-mkconfig 並將輸出到 grub.cfg 文件。或者,使用十六進制編輯器找到數據的真正結尾,然後使用複制工具將正確數量的字節複製到一個新文件中,然後用正確的 grub.cfg 替換錯誤的 grub.cfg。
但是應該有一個更永久的修復,因為每次系統升級都可能會出現相同的問題。這意味著系統關閉應確保所有 SSD 磁碟已持久送出所有數據。