Ядро Linux зависает при переключении на тактовый источник tsc на Pentium 4

11

Аппаратное обеспечение: Dell Dimension 4500S : i845G, Pentium 4, стандартный объем ОЗУ + 2 ГБ и последнее (около 2002 г.) обновление BIOS.

Я строил систему Linux из исходных текстов, так что пока это книга LFS 7.0 . Первое ядро, которое я построил, работает нормально, но в нем много пуха и раздувания, поэтому я сейчас оптимизирую ядро ​​под мое целевое оборудование (см. Выше).

Моя последняя попытка конфигурации и несколько вариантов проб и ошибок постоянно зависали в операторе printk «Switching to 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, если я могу найти правильную конфигурацию сборки.

Кроме того, большинство людей, которые опубликовали аналогичную проблему, говорят, что через несколько минут система продолжит загрузку, и все будет замечательно. Я оставил его на холостом ходу достаточно долго, чтобы приготовить ужин, и он все еще не возобновил загрузку.

Я надеюсь, что один из вас, гуру, прочтет это и скажет: «Эй, да, я просто установил CONFIG_XXX = y на моем динозавре P4, и он отлично работал». :)

Дайте мне знать, что вам нужно, чтобы я попробовал или проверил, я буду рад опубликовать результаты.

rfmodulator
источник
@tripleee Где я могу просмотреть эту информацию ... причину проведения закрытого голосования?
rfmodulator
Может быть, вы не можете, вашей репутации может не хватить. В любом случае, поскольку это не связано с программированием, имеет смысл двигаться, но все, что для этого нужно, - это еще несколько близких голосов. Я тоже добавлю свою.
tripleee
Я сталкиваюсь с подобными проблемами с новым ядром с Pentium 4. Все работает, если я отключаю гиперпоточность. Потратил две ночи на отладку, пока не уверен в деталях.
Чороба
@choroba nohtне делает это для меня. Дайте мне знать, если у вас есть другие идеи.
rfmodulator
На самом деле пришлось выключить ht на уровне BIOS или указать acpi=off.
Чороба

Ответы:

8

При быстром поиске эта проблема, по-видимому, имеет множество возможных причин и указывает на тот факт, что значение по умолчанию для вашего нового ядра для источника тактовых импульсов не подходит для вашей материнской платы.

Один совет, который работал для некоторых, был использовать clocksource=hpetили clocksource=acpi_pm.

В другом потоке кто-то исправил это clocksource=jiffies, другой посоветовал попробовать noapicили nolapic, другой, чтобы отключить acpi в BIOS, и еще один обвинил тачпад Synaptics и исправил свою проблему, удалив Xorg.conf.

Одно ядро строитель устремил проблему перекомпиляцией Initrd без fbcondecor.

Надеюсь, что это помогает, так как кажется, что эта проблема может иметь много причин.

harrymc
источник
Спасибо за ваш ответ, однако я ищу варианты конфигурации сборки ядра, которые вызовут (или предотвратят) зависание во время загрузки, которое я наблюдаю, а не обходной путь. Я попытался все параметры загрузки relavent ( clocksource=, no* и т.д.) , которые были отмечены в различных темах форума, без эффекта. Я сделал эти эксперименты в попытке сузить мою реальную проблему. У меня уже есть ядро, которое отлично загружается без каких-либо специальных параметров (кроме root=и ro), построенных из того же дерева исходных текстов, но это ядро ​​содержит больше вещей, которые мне не нужны, чем те, которые я делаю ...
rfmodulator
... кроме одного ключевого CONFIG_флага, который решит мою проблему.
rfmodulator
Возможно ли, что ваша проблема в том, что вы отключили слишком много опций ядра?
harrymc
Точно. :) Вот ответ, который я ищу, что я отключил, что на самом деле нужно. Я сделал это несколько раз без изменений в результате.
rfmodulator
Я не могу помочь вам одним волшебным словом. Похоже, ваш текущий источник синхронизации - acpi_pm, но вам нужно будет вникнуть в исходники ядра, чтобы выяснить, с какой конфигурацией ядра вы работали. Другим вариантом является возврат к работающей конфигурации и отключение параметров с приращением, чтобы найти проблему. Чтобы «подбодрить» вас, я также могу сказать, что это может быть не один вариант, а несколько, что означает конфликт или нежизнеспособную комбинацию конфигурации или недокументированную зависимость.
harrymc
0

Я получил точно такую ​​же проблему здесь и прочитал много. @harrymc сделал довольно хорошее резюме.

Я просто добавлю 2 вещи, которые я узнал из своего исследования:

  • Проблема связана с вашим ядром Linux, которое не знает, как обращаться с вашим процессором, потому что оно не может понять, какие у вас такты обработки. Вы можете наблюдать это, проверяя журнал загрузки ядра. Похоже, ядро ​​пытается измерить ваши часы обработки (для меня это было похоже на «2997.1333», но каждая загрузка менялась на «2997.1445», «2997.1379», ...).

  • Попробовав много вещей, я наконец-то добрался сюда и узнал о BIOS. Мой ГИГАБИТ UEFI. Я установил параметры обратно на «Оптимизированные настройки по умолчанию» и установил «Технология виртуализации Intel» на «Включен».

Теперь для меня все нормализовалось! Надеется, что это помогает.

MaximeBernard
источник
0

Несколько центов от меня, не уверен, что это обычное дело или нет, но я смог заставить Ubuntu работать, отключив «высокоточный таймер» в BIOS. Мой мб это гигабайт z77x-d3h

Oxy
источник
Система OP не поддерживает высокоточный таймер событий. Это было введено в 2005 году, и система оригинального плаката предшествует этому на несколько лет.
ChrisInEdmonton
-2

Я исправил проблему, добавив следующий параметр ядра:

noapic
Kiroe
источник
5
Добро пожаловать в Супер пользователя. Можете ли вы расширить свой ответ, объяснив, что это делает / как это решает проблему ОП?
Я говорю Восстановить Монику
нет, просто поигрался с параметрами ядра.
Киро