ForumSelbstkompilierter Kernel macht Probleme
Alexander Hungenberg – Donnerstag, 28. April 2005 16:59 Uhr

Hallo LC,
ich habe mittlerweile schon zwei mal versucht einen Kernel selber zu
kompilieren. Einmal weil ich einfach den neuen 2.6.11.7 haben wollte,
statt dem Debian Image und beim zweiten mal weil ich ein Bootsplash [1]
installieren wollte.

1. Kernel:
War der originale von http://www.kernel.org geholte Source-Code. make menuconfig
eingetippt und den Kernel komplett nach meinen Bedürfnissen konfiguriert.
Alles mit make kompiliert (ohne Fehler, nur mit ein paar ab und zu
auftretetenden Warnungen) und dann hab ich das bzImage nach /boot
verschoben und mit update-grub eingebunden. Neustart.

Start:
Der Kernel fängt normal an zu booten und bricht dann nach ca. 2 Sekunden
ziemlich am Anfang mit folgender Meldung ab:

VFS: Cannot open root device “hda1” or unknown-block(0,0)
Please append a correct “root=” boot option
Kernel panic – not syncing: VFS: Unable to mount fs on unknown-block(0,0)

2. Kernel:
Diesmal ist es ein mit apt-get geholter Debian-Kernel-Sourcecode
(kernel-source-2.6.8) wieder entpackt und konfiguriert. Diesmal hab ich
nur das geändert was in der Anleitung von Kommentar 2 bei [1] stand
(Support für Framebuffer und Bootsplash). Außerdem habe ich die meisten
Dateisysteme fest einkompiliert, sonst aber fast alles gelassen. Er hat
wieder ohne schwerwiegende Fehler kompiliert und beim starten kommt die
gleiche Meldung wie beim ersten Kernel. Allerdings hat das mit dem
Framebuffer schon funktioniert. Ich hab höhere Auflösung, aber es bricht
wieder mit der o.g. Meldung ab…

Hier einmal der Auszug aus der menu.lst von grub:
title Debian GNU/Linux, kernel 2.6.8-s
root (hd0,0)
kernel /boot/vmlinuz-2.6.8-s ro root=/dev/hda1 vga=792
splash=”silent”
intrd /boot/initrd.img-2.6.8
savedefault
boot

und hier ein Eintrag der Funktioniert:
title Debian GNU/Linux, kernel 2.6.8-2-k7
root (hd0,0)
kernel /boot/vmlinuz-2.6.8-2-k7 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.8-2-k7
savedefault
boot

der kommt von einem per apt-get installierten Kernel Paket
(kernel-image-2.6.8-2-k7)

Ich hoffe auf Hilfe

mfg Alex

P.S.
Distribution ist aktuelle Debian testing.

4 Antworten
Markus Knoben – Freitag, 29. April 2005 04:58 Uhr

Hallo Alex,

ich hatte das selbe Problem bei einem Versuch einer SuSE-Installation einen neuen Kernel zu verpassen. Bei mir war die Lösung die, welche in der Fehlermeldung steht. Die boot-option root=/dev/… hat auf die falsche Partition gezeigt.

Deshalb meine Frage: Stimmt die Angabe “root=/dev/hda1”.

Falls ja, so hat mein HowTo noch die Möglichkeit gesehen, das bei der Erstellung der initrd ein Fehler aufgetreten ist oder die Unterstützung nicht in den Kernel kompiliert wurde.

Falls es das alles nicht war, kann ich leider nicht mehr weiterhelfen.

Gruß, Markus

Alexander Hungenberg – Freitag, 29. April 2005 11:42 Uhr

Hallo Markus,
daran liegt es leider nicht. Ich hab auch alles schon mit initrd und ohne ausprobiert. Das komische ist ja, das die anderen Kernel mit der Option root=/dev/hda1 funktionieren. Das war jetzt auch schon bei verschiedenen Debian Installationen so. Kann mir vielleicht einer mal seine funktionierende .config schicken, weil ich glaube, dass das an einem falsch konfiguriertem Kernel liegt.

E-Mail: alexander.hungenberg@arcor.de

mfg
Alex

Andreas Matthus – Samstag, 30. April 2005 09:20 Uhr

Hallo Markus,

als erstes fällt auf, dass initrd geladen wird. Bei einem selbst kompilierten kernel sollte es dafür keinen Grund geben (außer bei RAID-Systemen, die einen kernel-fremdem Treiber brauchen). Es kann sogar sein, dass dies die Ursache für das Problem ist, wenn dort der Treiber geladen wird, der schon im Kernel steckt. Also mal die initrd-Zeile beim booten rausschmeißen.

Wenn das nicht hilft noch mal die Konfiguration an schauen. Vielleicht wird eine zum Ansprechen der Festplatte benötigte Komponente doch nicht fest einkompiliert. Geh mal anders rum vor: Nimm eine .config aus einer laufenden Version und schmeiss nach und nach das raus, was Du meinst nicht zu brauchen – nicht alles auf einmal.

mfg
Andreas

Alexander Hungenberg – Samstag, 30. April 2005 14:43 Uhr

Hallo Andreas,
ich habe die initrd rausgenommen, es hat sich aber nichts geändert.

Mit der .config. Das Problem ist ja, dass ich KEINE funktionierende .config
habe… Vielleicht kann mir hier ja mal einer eine schicken.

mfg
Alex

Andreas Matthus – Montag, 02. Mai 2005 07:11 Uhr

Hallo Alexander,

du hast eine laufende Konfiguration unter der du den kernel compilierst :-))
Diese hat unter /boot nicht nur den kernel vmlinuz-2.x.y, sondern auch eine config-2.x.y
Diese Datei kopiere zu /usr/src/linux/ und nenne sie
.config
Damit ist die Ausgangsbasis gegeben. Nun mal kompilieren und es sollte der identische Kernel rauskommen. Dann nach und nach anpassen. Das dauert vielleicht länger, führt aber auf alle Fälle zum Erfolg. Das Verwenden von ccache kann die compilation der Kernel wesentlich verkürzen, wenn der erste Kernel einmal vorliegt.
Vielleicht findet sich in der LC auch jemand, der dir aus deiner fehlerhaften .config und der vollständigen Liste deiner Hardware den Fehler nennen kann. Das ist aber IMHO nicht ganz einfach.

mfg
Andreas

Alexander Hungenberg – Montag, 02. Mai 2005 21:29 Uhr

Hallo Andreas,
stimmt, auf die Idee bin ich noch garnicht gekommen. Ich hab die config von
einem funktionierendem Debian-Kernel-Image genommen, was leider nichts gebracht
hat. Ich hab auch neu kompiliert und das bzImage geändert. Dabei kommt die
gleiche Fehlermeldung heraus wie am Anfang…

Also muss wohl auch ich mit meiner Vermutung falsch gelegen haben. An
der .config liegt es nicht. Die Frage ist, woran liegt es dann?

Alex

Andreas Matthus – Dienstag, 03. Mai 2005 06:58 Uhr

Hallo Alexander,

wie erstellet du neuen kernel? Vielleicht machst du da was falsch. Mal ein Vorschlag:

cd /usr/src/
Überprüfen, ob der link linux wirklich auf das richtige Verzeichnis weist
cd linux
make-kpkg clean
make-kpkg –revision=Test.1 kernel_image
cd /usr/src
dpkg -i kernel-image-2.x.y_Test.1.deb # x.y durch richtige Version ersetzen.

Die Eintragungen in /boot/grub/menu.lst anpassen. Neu starten.

mfg
Andreas

Alexander Hungenberg – Mittwoch, 04. Mai 2005 15:25 Uhr

Hallo Andreas,
erst einmal vielen Dank, dass du immer noch Nerv hast mir zu helfen.

Ich erstelle meinen Kernel, indem ich folgendes eingebe:

cd /usr/src/
make menuconfig
make
cp arch/i386/boot/bzImage /boot/vmlinuz-x.x.x
cp System.map /boot/System.map-x.x.x
cp .config /boot/config-x.x.x
update-grub # Damit soll Grub das automatisch einbinden können

Zur Sicherheit führe ich make meistens zweimal aus.

mfg
Alex

P.S. Ich habe das auch schonmal auf dem o.g. Weg mit make-kpkg gemacht, mit dem
gleichen Ergebnis.

Andreas Matthus – Freitag, 06. Mai 2005 06:46 Uhr

Hallo Alexander,

wichtig ist das
make-kpkg clean
aus meinem obigen Vorschlag, weil sonst alte “Leichen” rumliegen. Bei deinem Weg sollte es wohl ein
make clean
sein. Außerdem fehlt mir bei deiner Variante die Übertragung der
/lib/modules/x.x.x
Versuch es also noch mal mit _allen_ Schritten aus meinem Vorschlag.

mfg
Andreas

Alexander Hungenberg – Freitag, 06. Mai 2005 12:38 Uhr

Hallo Andreas,
ich habe jetzt _alle_ deine Schritte ausgeführt. von Anfang bis Ende (inklusive
make-kpkg clean). Und das Ergebnis ist:

das Gleiche :-(

Mittlerweile bin ich ratlos. Ich hab die .config von einem funktionierendem
Package genommen, und es so gemacht, wie du meintest…

Was kann denn da noch falsch sein?

Mit immer weniger Hoffnung
Alex

Andreas Matthus – Samstag, 07. Mai 2005 20:41 Uhr

Hallo Alexander,

da vermute ich mal, dass bei der orginalen .config eine initrd nötig ist, um den Plattentreiber zu initialisieren und beim compilieren daran was schief läuft.

Kannst Du mal spaßenshabler die gleiche Version wie der funktionierende kernel überstzten? Wie sieht es dann aus? Wenn der mit deiner selbst erstellten initrd nicht geht, kannst du die orginale mit deinem Kernel starten und umgekehrt.

Das ist natürlich nicht das Endziel – nur ein Weg zu testen, was hier eigentlich los ist.

mfg
Andreas

Herbert S. – Samstag, 07. Mai 2005 20:49 Uhr

Habe soeben selbiges Problem; einige Artikel im Internet weisen hin auf:

“Check your .config and look for CONFIG_BLK_DEV_IDE and CONFIG_BLK_DEV_IDEDISK
entries.”

=> Ich habe daher meinen Kernel 2.6.8 (sources von Debian sarge)
gerade neu am Kompilieren. Vorher hatte ich nochmals meine
Kernel-config-Einstellungen geprüft, insbesondere auf die Angaben von oben
Irgend etwas muss es ja mit den IDE-Einstellung zu tun haben.

Die config-Datei aus meinem /boot hatte ich auch schon genommen (die bezieht
sich auf das funktionstüchtige System mit Kernel 2.6.8-2-k7;
aber ich bemerkte dann, dass dieser ja mit einem initrd-System gestartet wird.
Da wird dann offenbar keine fest einkompiliertes IDExx notwendig sein
(kann ich jedoch technisch noch nicht so 100%ig sagen, fehlt mir die Erfahrung
noch )

Alexander Hungenberg – Samstag, 07. Mai 2005 21:54 Uhr

Ersteinmal Hallo Andreas,
ich habe als funktionierenden Kernel das Debian Package 2.6.8-2-k7 und als
Kernelsource auch diese Version 2.6.8.
Jetzt habe ich diesen mit der config von dem o.g. Debian Package kompiliert, in
die menu.lst eingetragen und die initrd von dem funktionierendem Kernel dazu
getan. Nach dem Neustart kommt jetzt endlich mal was ANDERES(!). Jetzt findet
er die /lib/modules/2.6.8/modules.dep nicht. Und am Ende kommt:

Kernel-Panic: Attempt to kill init.

Was vielleicht noch zu sagen ist, ohne initrd und mit den von Herbert genannten
Optionen kommt das selbe raus, wie am Anfang.

und Hallo Herbert,
ich habe die beiden Optionen, die vorher nur als Module drin waren jetzt fest
einkompiliert, was an der Situation aber leider nichts ändert. Vielleicht
kannst du ja mal berichten, was bei dir raus kommt…

mfg
Alex

Herbert S. – Sonntag, 08. Mai 2005 21:50 Uhr

Servus Andreas u. Alex,

ich habe doch etwas lange mit Google suchen müssen um auf euren Beitrag zu
stoßen. Leider stehen wir hier offenbar vor einem Problem ….

Meine Anregung, die ich wiederum selbst aus einem Forum entnahm, half auch bei
mir nichts; ich teste gerade weiter und habe mich jetzt nochmals bei der
Kernel-Konfiguration auf die Rubrik Block-devices und im speziellen auf IDE
konzentriert; ich habe alles fix einkompiliert (keine Module) und habe (so
glaube UND hoffe ich), auch die Einstellungen für mein Mainboard SIS 7xyz
dabei nicht übersehen.

Sollte das Ergebnis positiv sein, werde ich berichten (ggf. die .config hier
veröffentlichen).

Was mich jedoch eigentlich wundert ist, dass obwohl ich den Kernel 2.6.8
(Source) aus dem Debian-Archiv verwende, die Installation letztlich scheitert
(kann ich natürlich jetzt nur für meine Methode festhalten; ich habe nicht den
Debian-Weg mit make kernelpackage verwendet, der dann letztlich glaube ich auch
die initrd-Variante verwendet; ich wollte ganz normal und einfach selbst einen
Kernel übersetzen und installieren – hatte ich vor Monaten schon öfter mit
Kernel 2.4 gestestet und funktionierte einfwandfrei !!)

Grüße
Herbert

Alexander Hungenberg – Dienstag, 10. Mai 2005 15:16 Uhr

Morgen Herbert,
mit einem 2.4er Kernel habe ich es noch garnicht probiert. Werde ich aber mal machen, wenn mein Netzteil (wurde wahrscheinlich vom Blitz getroffen) wieder eine neue Sicherung hat, oder ich mir ein ganz neues hole.

Anscheinend stehen wir hier wirklich vor einem Problem. Wenn der Kernel 2.6 auf mehreren Rechnern nicht kompiliert (funktioniert), und es der 2.4er tun wird, dann muss da irgendwas am Kernel (2.6) schieflaufen.

mfg
Alex

Jürgen F. Pennings – Mittwoch, 11. Mai 2005 19:57 Uhr

Hallo Alex,
hast Du ein Filesystem auf der hda1, dessen Dateisystem (z.B. reiserfs) im neuen Kern als Modul eingebunden ist? Das solltest Du dann statisch einbinden, vielleicht geht es ja dann.
Gruß
Jürgen

burnstone – Donnerstag, 12. Mai 2005 13:04 Uhr

Schreib doch mal deine Hardware-Konfiguration (Mainboard, HD-Controller) hier rein. Dann kann man das ganze mal genauer anschauen.

Gruss

burnstone

Alexander Hungenberg – Donnerstag, 12. Mai 2005 13:18 Uhr

Hallo,
Dateisystem ist ext3 und ist auch fest im Kernel einkompilert.

Hardwarekonfiguration:
-AMD Athlon XP 2400+
-Asus A7V600-X (integrierter HD-Controller)
-Festplatte:
|–1. Samsung IDE-Festplatte 80GB
|–2. Seagate IDE-Festplatte 120GB
-Optische Laufwerke:
|–1. A-Open DVD-ROM Laufwerk (IDE)
|–2. Lite-ON CD-Brenner (IDE)
-RAM: Elixim 512MB DDR-400 RAM
-PCI-Karten: Keine. Netzwerk und Sound ist alles On Board.

Das dürften die wichtigsten Sachen sein.

mfg Alex

max meier – Dienstag, 18. Oktober 2005 14:07 Uhr

Hallo Community,

falls es noch jemanden interessiert, hier gibt’s die Antwort:

http://www.debianforum.de/wiki/?page=Kernelboot

Das hat zumindest bei mir alle Fehler behoben.

/MAX