Linux 内核在 Pentium 4 上挂起在“切换到时钟源 tsc”处

Linux 内核在 Pentium 4 上挂起在“切换到时钟源 tsc”处

硬件:戴尔Dimension 4500S:i845G、奔腾 4、原装 + 2GB RAM 和最新(大约 2002 年)BIOS 更新。

我一直在从源代码构建 Linux 系统,到目前为止LFS 7.0按部就班。我构建的第一个内核运行良好,但有很多冗余和臃肿,所以我现在正在针对我的目标硬件优化内核(见上文)。

我最近的配置尝试以及几次尝试和错误变化一直挂在 printk“切换到clocksource tsc”语句上。我的“好”内核从来没有出现过问题……顺便说一下,这是版本 3.1.0。两者都是从同一个源代码树构建的,没有补丁,,,make mrproper等等make menuconfig,所以很明显我只是缺少一些关键CONFIG_XXX标志。

我已经盯着这个问题一天多了,我也不知道构建了多少次内核,但都无济于事。

我发现有趣的一件事是我得到的好内核:

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

此外,了解一下也许很有用......

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

我尝试过使用各种选项进行构建配置,但目前我记不清任何细节,所以请不要问。通过搜索,我找到并测试了几个内核参数,例如clocksource=pitnotsc,但所有这些参数也都失败了。再说一次,事后看来,我希望我已经写下了迄今为止我尝试过的所有事情……

大多数论坛示例都是针对 2.x 内核的,并且通过一些引导选项的变化解决了问题,但我的好内核只使用root=/dev/sdaX ro。因此,如果我能找到正确的构建配置,我知道这个硬件和内核 3.1.0 组合是完美的。

此外,大多数发布过类似问题的人都说几分钟后系统会继续加载,一切正常。我让它闲置了足够长的时间做晚饭,但它仍然没有恢复加载。

我希望你们中的一位大师能读到这篇文章并说“嘿,是的,我刚刚在我的 P4 恐龙上设置了 CONFIG_XXX=y,它运行得很好。”:)

让我知道您需要我尝试或检查什么,我会很乐意发布结果。

答案1

从快速搜索来看,该问题似乎有很多可能的原因,并且似乎表明新内核的时钟源默认值不适合您的主板。

一个建议一些是使用clocksource=hpetclocksource=acpi_pm

另一个线程,有人使用 修复了这个问题clocksource=jiffies,另一个人建议尝试noapicnolapic,还有一个人在 BIOS 中关闭 acpi,还有一个人将问题归咎于 Synaptics 触摸板并通过删除 Xorg.conf 解决了这个问题。

内核构建器通过重新编译不使用 fbcondecor 的 initrd 解决了他的问题。

希望这会有所帮助,因为这个问题似乎可能有很多原因。

答案2

我在这里遇到了完全相同的问题并阅读了很多内容。@harrymc 做了很好的总结。

我只想补充一下我从研究中了解到的两件事:

  • 问题出在您的 Linux 内核上,它不知道如何处理您的处理器,因为它无法确定您的处理时钟是多少。您可以通过查看内核启动日志来观察这一点。看起来内核正在尝试测量您的处理时钟(对我来说,它就像“2997.1333”,但每次启动都会更改为“2997.1445”、“2997.1379”......)。

  • 尝试了很多方法后,我终于来到这里并找到了有关 BIOS 的信息。我的是 GYGABITE UEFI。我将参数重新设置为“优化默认设置”,并将“英特尔虚拟化技术”设置为“启用”。

现在,我的一切都恢复正常了!希望这能有所帮助。

答案3

我有几个想法,不确定这是否是常见现象,但我能够通过在 BIOS 中禁用“高精度计时器”来使 Ubuntu 正常工作。我的 mb 是 gigabyte z77x-d3h

答案4

我通过添加以下内核参数解决了该问题:

noapic

相关内容