Booten eines neu kompilierten Linux-Kernels

Booten eines neu kompilierten Linux-Kernels

Ich habe angefangen, das Buch „Essential Linux Device Drivers“ zu lesen. Ich folge dem Prozess zum Kompilieren und Booten eines neuen Kernels. Ich kann den neu kompilierten Kernel jedoch nicht booten – ich wähle den neuen Kernel in Grub aus und dann … nichts … der Bildschirm bleibt einfach gleich.

Hier sind die Schritte, die ich durchführe, wie im Buch beschrieben (ich verwende Kernel 2.6.24, da das Buch darauf basiert):

cd /usr/src/linux-2.6.24 # the base dir of the kernel I downloaded
make clean
cp arch/x86/configs/i386_defconfig .config
make bzImage
cp arch/x86/boot/bzImage /boot/vmlinuz

Im Buch heißt es:

Möglicherweise müssen Sie Ihren Bootloader über die Ankunft des neuen Boot-Images informieren. Wenn Sie den GRUB-Bootloader verwenden, findet er dies automatisch heraus.

Nun, in meinem Fall hat es das nicht automatisch herausgefunden, da es in GRUB keine Option gab, diesen Kernel auszuwählen. Also habe ich es manuell gemacht, indem ich update-grub in das Terminal eingegeben habe. Und das hat auch nicht funktioniert. Als ich jedoch den Dateinamen von vmlinuz in vmlinuz-2.6.24 geändert und update-grub eingegeben habe, hat es es erkannt. Auf Seite 11 des Buches scheinen also bereits mehrere Dinge ausgelassen zu sein.

Im Buch steht, dass die Maschine anschließend neu gestartet werden soll.

Wie dem auch sei, ich kann diesen Kernel jetzt in GRUB auswählen, aber wie ich oben sagte, bootet er nicht richtig, der Bildschirm wird einfach leer und ändert sich nicht. Habe ich also etwas übersehen? Ich habe die Anweisungen im Buch genau befolgt. Ich habe 50 € für dieses Buch ausgegeben und komme jetzt wegen dieses Problems nicht über Seite 11 hinaus.

Ich nehme an, dass die Tatsache, dass ich Ubuntu auf VirtualBox verwende, kein Problem darstellt. Ich gehe einfach während des Bootvorgangs der virtuellen Maschine Ubuntu in Grub und wähle dann den neu kompilierten Kernel aus. Ich kann mir nicht vorstellen, dass das ein Problem sein könnte.

Antwort1

Ubuntu verfügt über ein aus Debian importiertes Skript, das die Installation für Sie durchführt. Führen Sie es nach der Kompilierung des Kernels einfach aus sudo make modules_install installund Ihr Kernel wird korrekt installiert.

Spätere Bearbeitung:Hierist das Skript, das Ubuntu und Debian verwenden. Es wird automatisch vom Makefile des Kernels aufgerufen, wenn Sie die obigen Installationsbefehle eingeben, und führt die distributionsspezifische Installation durch.

Antwort2

Ihre grub.conf-Datei sollte einen ähnlichen Eintrag wie diesen haben

title My Linux Kernel
root (hd0,0)
kernel /boot/gentoo-kernel root=/dev/sda1

Ihr Ubuntu-Kernel könnte so etwas haben wie

initrd /boot/initrd.img

Sie sollten dies beim Kompilieren eines Kernels auf Ihrer Hardware nicht benötigen. Dies könnte Ihr Problem verursachen.

Sie sollten mir Ihre grub.conf-Datei kommentieren und ich werde sie mir ansehen. Andernfalls kann es sein, dass die Ursache bei Ihrer Konfiguration liegt.

Der ältere Kernel verfügt möglicherweise auch nicht über die Treiber, die Sie für neuere Hardware benötigen.

Ein neueres Ubuntu-System kann nicht ohne große Probleme zu einer so alten Kernel-Version zurückkehren.

Sie könnten ein älteres Ubuntu ausprobieren, auf dem eine Version nahe dieser Kernel-Version oder die neueste Kernel-Version von kernel.org läuft.

Antwort3

Jede Linux-Distribution hat ihren eigenen Mechanismus und ihre eigene Richtlinie für die Paketbereitstellung. Dasselbe gilt für den Kernel. Die meisten Distributionen verbergen den Kompilierungsprozess mit ihren Tools, die hauptsächlich Binärpakete bereitstellen.

Wenn Sie einen benutzerdefinierten Kernel auf einer bestimmten Linux-Distribution kompilieren möchten, müssen Sie die Anleitung dieser Distribution befolgen, um zu erfahren, wie Sie dies auf ihre Weise tun, ohne Ihr System zu beschädigen.

Ubuntu hat seine spezielle Art, das Gleiche gilt für Achlinux, Redhat oder Gentoo.

Befolgen Sie für Ubuntu die Dokumentation hierhttps://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

verwandte Informationen