O kernel do Linux trava em 'Mudando para originar o tsc "no Pentium 4

11

Hardware: Dell Dimension 4500S : i845G, Pentium 4, estoque + 2 GB de RAM e atualização de BIOS mais recente (por volta de 2002).

Eu tenho construído um sistema Linux a partir da fonte, até agora é LFS 7.0 pelo livro. O primeiro kernel que construí funciona bem, mas tem muitas falhas e inchaços, então agora estou otimizando o kernel para o meu hardware de destino (veja acima).

Minha última tentativa de configuração e várias variações de tentativa e erro foram suspensas continuamente na instrução printk "Alternando para o clocksource tsc". Meu kernel "bom" nunca teve um problema ... esta é a versão 3.1.0 btw. Ambos estão sendo construídos a partir da mesma árvore de código fonte, sem manchas, make mrproper, make menuconfig, etc, então obviamente eu estou faltando alguma chave CONFIG_XXXbandeira.

Estou encarando esse problema há mais de um dia e construí o kernel que sabe quantas vezes, mas sem sucesso.

Uma coisa que acho interessante é com o bom kernel que recebo:

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

Além disso, pode ser útil saber ....

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

Eu tentei a configuração de compilação com várias opções, mas, neste momento, não me lembro de nenhum detalhe, portanto, não pergunte. Na minha pesquisa, encontrei e testei vários parâmetros do kernel, como clocksource=pite notsc, mas todos eles falham também. Mais uma vez, eu gostaria de ter anotado tudo o que tentei até agora, retrospectivamente ...

A maioria dos exemplos de fórum são para kernels 2.x e foram resolvidos com algumas variações das opções de inicialização, mas meu bom kernel usa apenas root=/dev/sdaX ro. Então, eu sei que estou de ouro com essa combinação de hardware e kernel 3.1.0, se eu puder encontrar a configuração de compilação correta.

Além disso, a maioria das pessoas que publicaram um problema semelhante afirmam que, após alguns minutos, o sistema continuará carregando e tudo ficará pêssego. Eu o deixei ocioso o suficiente para cozinhar a ceia e ainda não retomou o carregamento.

Espero que um de vocês gurus leia isso e diga "ei, sim, acabei de definir CONFIG_XXX = y no meu dinossauro P4 e funcionou muito bem". :)

Deixe-me saber o que você precisa que eu tente ou verifique. Será um prazer publicar os resultados.

rfmodulator
fonte
@tripleee Onde posso ver essas informações ... o motivo de uma votação apertada?
Rfmodulator
Talvez você não possa, sua reputação pode não ser suficiente. De qualquer forma, como isso não está relacionado à programação, faz sentido mudar, mas basta apenas alguns votos mais próximos. Vou adicionar o meu também.
Tripleee
Estou enfrentando problemas semelhantes com o novo kernel com o Pentium 4. Tudo funciona se eu desativar o hyperthreading. Passei duas noites depurando, ainda não tenho certeza dos detalhes.
choroba
@choroba nohtnão faz isso por mim. Deixe-me saber se você tem outras idéias.
Rfmodulator
Na verdade, eu tive que desligar o ht no nível do BIOS ou especificar acpi=off.
choroba

Respostas:

8

Em uma pesquisa rápida, esse problema parece ter muitas razões possíveis e parece apontar para o fato de que o padrão do seu novo kernel para a fonte do relógio está errado na sua placa-mãe.

Um conselho que funcionou para alguns foi usar clocksource=hpetou clocksource=acpi_pm.

Em outro tópico , alguém corrigiu isso clocksource=jiffies, outro recomendou tentar noapicou nolapicoutro desativou o ACPI no BIOS, e outro culpou o touchpad Synaptics e resolveu o problema excluindo o Xorg.conf.

Um construtor de kernel corrigiu seu problema recompilando o initrd sem o fbcondecor.

Espero que isso ajude, pois parece que esse problema pode ter muitas causas.

harrymc
fonte
Obrigado pela sua resposta, no entanto, estou procurando opções de configuração de compilação do kernel que causarão (ou impedirão) o travamento no momento da inicialização que estou observando, e não uma solução alternativa. Eu tentei todos os parâmetros de inicialização relevantes ( clocksource=, no*, etc.) que foram anotados em vários tópicos do fórum, sem efeito. Fiz essas experiências na tentativa de diminuir meu problema real. Eu já tenho um kernel que botas perfeitamente sem qualquer parâmetro especial (além de root=e ro) construídas a partir da mesma árvore de código fonte, mas este kernel contém mais coisas que eu não preciso, do que aqueles que eu faço ...
modulador de radiofrequência
... exceto aquele CONFIG_sinalizador chave que resolverá meu problema.
Rfmodulator
É possível que seu problema seja que você desativou muitas opções do kernel?
harrymc
Precisamente. :) Essa é a resposta que estou procurando, o que desabilitei e é realmente necessário. Já fiz isso várias vezes sem alterar o resultado.
Rfmodulator
Não posso ajudá-lo com uma palavra mágica. Parece que seu código-fonte atual é acpi_pm, mas você precisará se aprofundar nas fontes do kernel para descobrir a configuração do kernel que você perdeu. A outra opção é retornar à configuração que funcionou e desativar as opções em incrementos para localizar o problema. Para "animar" você também pode dizer que essa pode não ser uma opção, mas várias, significando um conflito ou uma combinação de configurações inviável ou dependência não documentada.
harrymc
0

Eu tenho exatamente o mesmo problema aqui e li muito. @harrymc fez um resumo muito bom.

Vou apenas adicionar 2 coisas que aprendi com minha pesquisa:

  • O problema vem do seu kernel Linux, que não sabe como lidar com o seu processador, porque ele não consegue descobrir qual é o seu relógio de processamento. Você pode observar isso consultando o log de inicialização do kernel. Parece que o kernel está tentando medir o seu relógio de processamento (para mim era como "2997.1333", mas toda inicialização mudava para "2997.1445", "2997.1379", ...).

  • Depois de tentar muitas coisas, finalmente cheguei aqui e descobri o BIOS. A minha é GIGABITE UEFI. Defino os parâmetros novamente para "Configurações padrão otimizadas" e defino "Tecnologia de virtualização Intel" para "ativado".

Agora, tudo voltou ao normal para mim! Espero que isso ajude.

MaximeBernard
fonte
0

Alguns centavos de mim, sem saber se é algo comum ou não, mas eu consegui fazer o Ubuntu funcionar desativando o 'timer de alta precisão' no BIOS. Meu mb é gigabyte z77x-d3h

Oxy
fonte
O sistema do OP não suporta o timer de eventos de alta precisão. Isso foi introduzido em 2005, e o sistema do pôster original é anterior a vários anos.
ChrisInEdmonton
-2

Corrigi o problema adicionando o seguinte parâmetro do kernel:

noapic
Kiroe
fonte
5
Bem-vindo ao superusuário. Você pode expandir sua resposta explicando o que isso faz / como resolve o problema do OP?
Eu digo Restabelecer Monica
sem sry, apenas brinquei com os parâmetros do kernel.
Kiroe