Ich versuche, einen Linux-Kernel (3.8.1) aus dem Quellcode in einer Fedora-Distribution zu installieren. Der Kernel ist ein Vanillekern. Ich folge den Build-Anweisungen des Kernels genau:
make menuconfig
make
sudo make modules_install install
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Alles /boot
scheint in Ordnung zu sein. Ich kann sehen System.map
, initramfs
und vmlinuz
für den neu kompilierten Kernel. Der vmlinuz
Link zeigt auf vmlinuz-3.8.1
. Es sind mehrere andere Kernel installiert, einschließlich eines Ubuntu-Kernels. grub2 erkennt sie alle und ich kann zu jedem von ihnen booten.
Beim Neustart werden alle Kernel als Menüeinträge angezeigt und ich wähle 3.8.1.
Dann sehe ich diese Nachricht:
early console in decompress_kernel
decompressing Linux... parsing ELF ... done
Booting the kernel.
[1.687084] systemd [1]:failed to mount /dev:no such device
[1.687524] systemd [1]:failed to mount /dev:no such device
Lösung:
Alle drei veröffentlichten Antworten bieten die Lösung. CONFIG_DEVTMPFS hat das Problem tatsächlich verursacht. Ich habe das / boot / config-… eines funktionierenden Kernels als .config in das Stammverzeichnis des Quellbaums kopiert und die oben gezeigten Standardbefehle zum Erstellen des Kernels ausgeführt.
Antworten:
Der einfachste Weg, um eine funktionierende Kernelkonfiguration zu erhalten, besteht darin, Fedoras einfach zu kopieren
.config
und sie dannmake oldconfig
zu konfigurieren. Die Konfiguration finden Sie unter/boot/config-*
quelle
Sie müssen Ihren Kernel mit den folgenden Optionen konfigurieren :
quelle
Bei einem ähnlichen Problem auf einem benutzerdefinierten System, auf dem systemd ausgeführt wird, scheint dies möglicherweise darauf zurückzuführen zu sein, dass "CONFIG_DEVTMPFS" in der Kernelkonfiguration nicht ausgewählt ist (beachten Sie, dass dies das erste Element in der Liste der Kernelanforderungen von sciurus für die Ausführung von systemd ist).
Um nun herauszufinden, wie dies korrigiert werden kann, starten Sie
make menuconfig
und verwenden Sie die Suchfunktion (drücken Sie/
), um nach "DEVTMPFS" zu suchen. Der erste Treffer ist:Niedrig und siehe da, es gibt eine solche Option unter Gerätetreiber-> Generische Treiberoptionen .
Wie vonbrand sagt, beginnen Sie am besten mit einer Konfiguration, die Ihrer aktuellen Konfiguration entspricht. Dies kann wahrscheinlich als gezippt gefunden werden
/proc/config.gz
. Kopieren Sie das aus undgunzip -c config.gz > .config
verwenden Sie diese Datei als vorläufige Datei.config
in Ihrem Quellbaum (weitere Informationen finden Sie in Schritt 2 hier ).quelle