建置的核心無法啟動,缺少 AHCI 驅動程式?

建置的核心無法啟動,缺少 AHCI 驅動程式?

我需要應用內核補丁,因此我開始建立內核。首先,我獲取原始程式碼並建立依賴關係

# apt-get source linux-image-`uname -r`
# apt-get build-dep linux-image-`uname -r`

進入來源目錄,我應用了補丁,然後獲取當前的內核配置並使用以下命令執行構建

# cp -vi /boot/config-`uname -r` .config
# make-kpkg --initrd --append-to-version=-test kernel-image kernel-headers

最後我從 ../ 創建的 DEB 安裝了新建的內核

# dpkg -i linux-image-3.13.11.4-test_3.13.11.4-test-10.00.Custom_i386.deb
# dpkg -i linux-headers-3.13.11.4-test_3.13.11.4-test-10.00.Custom_i386.deb

重新啟動時,我在 Grub 選單中找到了我的內核,但嘗試啟動它時,我最終得到了

Gave up waiting for root device
...
ALERT! /dev/disk/by-uuid/[my-correct-disk-uuid-here] does not exist.

在出現的 BusyBox 提示下,我嘗試查看 /dev/ 並且沒有磁碟機,這似乎表明我的磁碟控制器的核心模組尚未加載(它不在 /proc/modules 中)。當我使用與我鍵入此內容時運行的相同內核版本時,這怎麼可能?具有相同的配置?建立核心不是我每天都會做的事情,也不是為了樂趣,所以我將不勝感激任何幫助。

編輯:我應該補充一點,我已經嘗試在 Grub 命令列中使用 /dev/sd** 語法root=,得到相同的結果。所以不是UUID查找失敗;而是UUID查找失敗。磁碟控制器甚至不存在。如果相關的話,這台機器是配備 Intel 855PM 晶片組(PATA HDD)的 Thinkpad X32。

答案1

現在,由於 UUID 錯誤,我覺得有必要驗證 /etc/fstab 中的信息,因為這是安裝檔案系統資訊 (UUID) 的位置。

首先,啟動到較舊的核心或活動磁碟會話。

執行以下指令尋找根分割區的 UUID。

sudo blkid -o list

輸出應類似此範例:

/dev/sda1      ext4     home      /                 bac7229a-e019-5679-931d-5e14f15ff4bc 
/dev/sda2      ntfs     c         (not mounted)     40Ajghyr-65uB-EA5C-7y8y9t6g54j5
/dev/sda3      ext4               (not mounted)     640565a9-310b-5d6r-8d8v7-e887do893f80
/dev/sda5      ext4               (not mounted)     e777547b-3a3a-7tgd-9a12-2769wsrbd92
/dev/sda6      swap               <swap>            d72b694e-4976-3333-hso5-7894e6s9d2

現在,使用「nano」、「vi」、「gedit」、「mousepad」或任何您喜歡的文字編輯器來編輯或確認 /etc/fstab 中根分區列出的 UUID。對於這個例子,我將使用 nano:

sudo nano /etc/fstab

現在,根據我們的訊息,假設您使用安裝在「 / 」處的非加密單分區設置,我們的 /etc/fstab 資訊應該如下所示:

# / was on /dev/sda1 during installation
UUID=bac7229a-e019-5679-931d-5e14f15ff4bc /         ext4    errors=remount-ro 0       1
# swap was on /dev/sda6 during installation
UUID=d72b694e-4976-3333-hso5-7894e6s9d2 none        swap    sw              0       0

如果 /etc/fstab 中的資訊不正確且您已相應更新此訊息,現在您需要做的就是重新啟動因為 /etc/fstab 是在 grub 後載入的,並且與 initrd.img 的配置沒有直接關聯。

(系統將讀取/etc/fstab中的資訊並自動從那裡載入正確的分區)


如果這不能解決您的問題或 /etc/fstab 中的資訊準確,您可能需要執行:

sudo update-initramfs -v -c -k all

您可能想用特定的核心版本替換“all”如果您不想更新所有現有的 initrd 映像(這樣您可以只更新無法啟動的映像)。請參閱此處以了解更多資訊:https://stackoverflow.com/questions/9645073/how-to-make-an-initrd-img-in-ubuntu

如果一切順利,不要忘記運行:

sudo update-grub2

在重新啟動之前。

有錯誤請留言。

相關內容