Der Linux-Kernel hängt auf Pentium 4 unter "Umschalten auf Clocksource tsc"

11

Hardware: Dell Dimension 4500S : i845G, Pentium 4, Standard + 2 GB RAM und aktuelles BIOS-Update (ca. 2002).

Ich habe ein Linux-System aus dem Quellcode erstellt, bisher ist es LFS 7.0 . Der erste Kernel, den ich erstellt habe, funktioniert einwandfrei, hat aber viel Flaum und Blähungen. Daher optimiere ich jetzt den Kernel für meine Zielhardware (siehe oben).

Mein letzter Konfigurationsversuch und mehrere Versuchs- und Fehlervarianten hingen ständig an der printk-Anweisung "Switching to clocksource tsc". Mein "guter" Kernel hatte noch nie ein Problem ... das ist übrigens Version 3.1.0. Sowohl aus der gleichen Quelle Baum gebaut werden, keine Patches make mrproper, make menuconfigetc, so offensichtlich fehlt mir nur einige Schlüssel CONFIG_XXXFlagge.

Ich habe dieses Problem seit über einem Tag angestarrt und den Kernel erstellt, der weiß, wie oft, aber ohne Erfolg.

Eine Sache, die ich interessant finde, ist mit dem guten Kernel, den ich bekomme:

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc

es könnte auch nützlich sein zu wissen ....

# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc acpi_pm

Ich habe versucht, die Build-Konfiguration mit verschiedenen Optionen durchzuführen, aber an dieser Stelle kann ich mich an keine Einzelheiten erinnern. Bitte fragen Sie nicht. Bei meiner Suche habe ich mehrere Kernel-Parameter wie clocksource=pitund gefunden und getestet notsc, aber alle schlagen auch fehl. Ich wünschte, ich hätte alles aufgeschrieben, was ich bisher versucht habe, im Nachhinein ...

Die meisten Beispiele im Forum beziehen sich auf 2.x-Kernel und wurden mit einigen Variationen der Boot-Optionen gelöst, aber mein guter Kernel verwendet nur root=/dev/sdaX ro. Ich weiß also, dass ich mit dieser Kombination aus Hardware und Kernel 3.1.0 golden bin, wenn ich die richtige Build-Konfiguration finde.

Außerdem sagen die meisten Leute da draußen, die ein ähnliches Problem gepostet haben, dass das System nach einigen Minuten weiter geladen wird und alles pfirsichfarben ist. Ich habe es lange genug im Leerlauf laufen lassen, um das Abendessen zu kochen, und es wurde immer noch nicht wieder geladen.

Ich hoffe, einer von euch Gurus wird dies lesen und sagen: "Hey ja, ich habe gerade CONFIG_XXX = y auf meinem P4-Dinosaurier gesetzt und es hat großartig funktioniert." :) :)

Lassen Sie mich wissen, was ich zum Ausprobieren oder Überprüfen benötige. Gerne veröffentliche ich die Ergebnisse.

HF-Modulator
quelle
@tripleee Wo kann ich diese Informationen anzeigen ... der Grund für eine enge Abstimmung?
HF-Modulator
Vielleicht kannst du nicht, dein Ruf reicht vielleicht nicht aus. Wie auch immer, da dies nicht mit der Programmierung zusammenhängt, ist es sinnvoll, sich zu bewegen, aber es sind nur ein paar weitere enge Abstimmungen erforderlich. Ich werde auch meine hinzufügen.
Tripleee
Ich habe ähnliche Probleme mit dem neuen Kernel mit Pentium 4. Alles funktioniert, wenn ich das Hyperthreading deaktiviere. Verbrachte zwei Nächte beim Debuggen, noch nicht sicher über Details.
Choroba
@ Choroba nohtmacht das nicht für mich. Lassen Sie mich wissen, wenn Sie andere Ideen haben.
HF-Modulator
Tatsächlich musste ich ht auf BIOS-Ebene ausschalten oder angeben acpi=off.
Choroba

Antworten:

8

Nach einer schnellen Suche scheint dieses Problem viele mögliche Gründe zu haben und darauf hinzudeuten, dass die Standardeinstellung Ihres neuen Kernels für die Taktquelle für Ihr Motherboard falsch ist.

Ein Rat, der für einige funktionierte, war, clocksource=hpetoder zu verwenden clocksource=acpi_pm.

In einem anderen Thread hat jemand dies behoben clocksource=jiffies, ein anderer hat geraten, es zu versuchen, noapicoder ein nolapicanderer, acpi im BIOS auszuschalten, und noch ein anderer hat das Synaptics-Touchpad beschuldigt und sein Problem durch Löschen von Xorg.conf behoben.

Ein Kernel-Builder hat sein Problem behoben, indem er initrd ohne fbcondecor neu kompiliert hat.

Hoffe das hilft, denn es scheint, dass dieses Problem viele Ursachen haben kann.

harrymc
quelle
Vielen Dank für Ihre Antwort. Ich suche jedoch nach Konfigurationsoptionen für die Kernel-Erstellung, die den beobachteten Stillstand beim Booten verursachen (oder verhindern), und keine Umgehung. Ich habe alle relaventen Startparameter ( clocksource=, no* usw.) ausprobiert , die in verschiedenen Forenthreads notiert wurden, ohne Auswirkungen. Ich habe diese Experimente gemacht, um mein eigentliches Problem einzugrenzen. Ich habe bereits einen Kernel, der perfekt startet, ohne spezielle Parameter (außer root=und ro), die aus demselben
Quellbaum erstellt wurden
... außer dass eine Schlüsselflagge CONFIG_mein Problem lösen wird.
HF-Modulator
Ist es möglich, dass Ihr Problem darin besteht, dass Sie zu viele Kerneloptionen deaktiviert haben?
Harrymc
Genau. :) Das ist die Antwort, nach der ich suche, was ich deaktiviert habe, das tatsächlich benötigt wird. Ich habe dies mehrmals getan, ohne das Ergebnis zu ändern.
HF-Modulator
Ich kann dir nicht mit einem Zauberwort helfen. Es scheint, als ob Ihre aktuelle Clock-Quelle acpi_pm ist, aber Sie müssen sich mit den Quellen des Kernels befassen, um herauszufinden, welche Kernel-Konfiguration Sie verloren haben. Die andere Option besteht darin, zur funktionierenden Konfiguration zurückzukehren und die Optionen schrittweise zu deaktivieren, um das Problem zu lokalisieren. Um Sie "aufzuheitern", kann ich auch sagen, dass dies möglicherweise nicht eine, sondern mehrere Optionen sind, was einen Konflikt oder eine nicht realisierbare Konfigurationskombination oder eine nicht dokumentierte Abhängigkeit bedeutet.
Harrymc
0

Ich habe genau das gleiche Problem hier und habe viel gelesen. @harrymc hat eine ziemlich gute Zusammenfassung gemacht.

Ich werde nur zwei Dinge hinzufügen, die ich aus meiner Forschung gelernt habe:

  • Das Problem kommt von Ihrem Linux-Kernel, der nicht weiß, wie er mit Ihrem Prozessor umgehen soll, weil er nicht herausfinden kann, wie hoch Ihre Verarbeitungsuhr ist. Sie können dies beobachten, indem Sie das Kernel-Boot-Protokoll überprüfen. Es sieht so aus, als würde der Kernel versuchen, Ihre Verarbeitungstakt zu messen (für mich war es wie "2997.1333", aber jeder Start änderte sich zu "2997.1445", "2997.1379", ...).

  • Nachdem ich viele Dinge ausprobiert hatte, kam ich endlich hierher und informierte mich über das BIOS. Meins ist GYGABITE UEFI. Ich setze die Parameter zurück auf "Optimierte Standardeinstellungen" und setze "Intel Virtualization Technology" auf "aktiviert".

Jetzt ist für mich alles wieder normal! Hoffe das hilft.

MaximeBernard
quelle
0

Ein paar Cent von mir, ich bin mir nicht sicher, ob es eine häufige Sache ist oder nicht, aber ich konnte Ubuntu zum Laufen bringen, indem ich den 'High Precision Timer' im BIOS deaktivierte. Mein MB ist Gigabyte z77x-d3h

Oxy
quelle
Das OP-System unterstützt den High Precision Event Timer nicht. Das wurde 2005 eingeführt, und das System des Originalplakats ist mehrere Jahre älter als dieses.
ChrisInEdmonton
-2

Ich habe das Problem durch Hinzufügen des folgenden Kernelparameters behoben:

noapic
Kiroe
quelle
5
Willkommen bei Super User. Können Sie Ihre Antwort erweitern, indem Sie erklären, was dies bewirkt / wie es das Problem des OP löst?
Ich sage Reinstate Monica
no sry, nur mit den Kernel-Parametern herumgespielt.
Kiroe