Der integrierte Kernel bootet nicht. Fehlt ein AHCI-Treiber?

Der integrierte Kernel bootet nicht. Fehlt ein AHCI-Treiber?

Ich muss einen Kernel-Patch installieren und mache mich deshalb daran, einen Kernel zu erstellen. Zuerst hole ich mir den Quellcode und erstelle Abhängigkeiten mit

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

Ich habe das Quellverzeichnis betreten, meinen Patch angewendet, dann die aktuelle Kernelkonfiguration heruntergeladen und den Build mit

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

Schließlich habe ich den neu erstellten Kernel aus den in ../ erstellten DEBs installiert

# 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

Beim Neustart fand ich meinen Kernel im Grub-Menü, aber beim Versuch, ihn zu booten, endete ich mit

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

In der resultierenden BusyBox-Eingabeaufforderung habe ich versucht, in /dev/ nachzuschauen, und es sind keine Festplattenlaufwerke vorhanden, was darauf hindeutet, dass das Kernelmodul für meinen Festplattencontroller nicht geladen wurde (es befindet sich nicht in /proc/modules). Wie kann das aber sein, wenn ich dieselbe Kernelversion verwendet habe, die ich gerade verwende, während ich dies schreibe - undmit der gleichen Konfiguration? Das Erstellen von Kerneln ist für mich weder eine tägliche Tätigkeit noch ein Vergnügen, daher wäre ich für jede Hilfe dankbar.

Bearbeiten:Ich sollte hinzufügen, dass ich versucht habe, die Syntax /dev/sd** root=in der Grub-Befehlszeile zu verwenden, mit demselben Ergebnis. Es liegt also nicht daran, dass die UUID-Suche fehlschlägt; der Festplattencontroller existiert nicht einmal. Falls es relevant ist, die Maschine ist ein Thinkpad X32 mit Intels 855PM-Chipsatz (PATA-Festplatte).

Antwort1

Aufgrund des UUID-Fehlers halte ich es nun für notwendig, die Informationen in /etc/fstab zu überprüfen, da von dort die Dateisysteminformationen (UUID) gemountet werden.

Booten Sie zunächst in einen älteren Kernel oder eine Live-Disk-Sitzung.

Führen Sie den folgenden Befehl aus, um die UUID für Ihre Root-Partition zu finden.

sudo blkid -o list

Die Ausgabe sollte diesem Beispiel ähneln:

/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

Verwenden Sie nun „nano“, „vi“, „gedit“, „mousepad“ oder Ihren bevorzugten Texteditor, um die aufgeführte UUID für Ihre Root-Partition in /etc/fstab zu bearbeiten oder zu bestätigen. Für dieses Beispiel verwende ich nano:

sudo nano /etc/fstab

Nach unseren Informationen sollten unsere /etc/fstab-Informationen ungefähr so ​​aussehen, vorausgesetzt, Sie verwenden ein unverschlüsseltes Einzelpartitions-Setup, das unter " / " gemountet ist:

# / 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

Wenn die Angaben in /etc/fstab falsch waren und Sie diese Angaben entsprechend aktualisiert haben,alles was Sie jetzt tun müssen, ist neu zu startenweil /etc/fstab nach Grub geladen wird und nicht direkt mit der Konfiguration Ihres initrd.img verknüpft ist.

(Das System liest die Informationen in /etc/fstab und lädt von dort automatisch die richtigen Partitionen.)


Wenn das Ihr Problem nicht behebt oder die Informationen in /etc/fstab korrekt sind, müssen Sie möglicherweise Folgendes ausführen:

sudo update-initramfs -v -c -k all

Möglicherweise möchten Sie "alle" durch eine bestimmte Kernelversion ersetzenwenn Sie nicht alle vorhandenen Initrd-Images aktualisieren möchten (auf diese Weise können Sie nur das Image aktualisieren, das nicht bootet). Weitere Informationen finden Sie hier:https://stackoverflow.com/questions/9645073/wie-erstelle-man-ein-initrd-img-in-ubuntu

Wenn alles gut geht, vergessen Sie nicht, Folgendes auszuführen:

sudo update-grub2

bevor Sie neu starten.

Bitte posten Sie etwaige Fehler.

verwandte Informationen