硬件:戴尔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=pit
和notsc
,但所有这些参数也都失败了。再说一次,事后看来,我希望我已经写下了迄今为止我尝试过的所有事情……
大多数论坛示例都是针对 2.x 内核的,并且通过一些引导选项的变化解决了问题,但我的好内核只使用root=/dev/sdaX ro
。因此,如果我能找到正确的构建配置,我知道这个硬件和内核 3.1.0 组合是完美的。
此外,大多数发布过类似问题的人都说几分钟后系统会继续加载,一切正常。我让它闲置了足够长的时间做晚饭,但它仍然没有恢复加载。
我希望你们中的一位大师能读到这篇文章并说“嘿,是的,我刚刚在我的 P4 恐龙上设置了 CONFIG_XXX=y,它运行得很好。”:)
让我知道您需要我尝试或检查什么,我会很乐意发布结果。
答案1
答案2
我在这里遇到了完全相同的问题并阅读了很多内容。@harrymc 做了很好的总结。
我只想补充一下我从研究中了解到的两件事:
问题出在您的 Linux 内核上,它不知道如何处理您的处理器,因为它无法确定您的处理时钟是多少。您可以通过查看内核启动日志来观察这一点。看起来内核正在尝试测量您的处理时钟(对我来说,它就像“2997.1333”,但每次启动都会更改为“2997.1445”、“2997.1379”......)。
尝试了很多方法后,我终于来到这里并找到了有关 BIOS 的信息。我的是 GYGABITE UEFI。我将参数重新设置为“优化默认设置”,并将“英特尔虚拟化技术”设置为“启用”。
现在,我的一切都恢复正常了!希望这能有所帮助。
答案3
我有几个想法,不确定这是否是常见现象,但我能够通过在 BIOS 中禁用“高精度计时器”来使 Ubuntu 正常工作。我的 mb 是 gigabyte z77x-d3h
答案4
我通过添加以下内核参数解决了该问题:
noapic