Como solucionar problemas de um kernel que não está inicializando sem produzir uma mensagem na tela

0

Eu tenho tentado aplicar o patch do Ingo Molnar e chego a uma situação em que recebo uma tela em branco e nenhuma mensagem. pânico Kernel, ou de outra forma.

Dado que eu quero me envolver na compreensão do kernel melhor e do patch em tempo real em particular, existe um conjunto de métodos que eu possa seguir para obter informações sobre o que deu errado nesse estado?

Existe talvez um log escrito em algum lugar que eu possa estudar conectando o disco a outro sistema Linux, ou uma opção de configuração do kernel que tornará o kernel mais detalhado e talvez produza algum tipo de artefato ou ou uma maneira de produzir um despejo de memória?

Na verdade, o que os desenvolvedores de kernel usam como meio de testar e solucionar problemas de kernels?

Muito obrigado pela sua ajuda!

    
por Agelos Assonitis 13.09.2016 / 15:09

1 resposta

1

Uma maneira de ter certeza de não perder nenhuma mensagem do kernel é depurá-lo em uma máquina virtual.

Por exemplo, o script a seguir usa qemu para iniciar uma máquina virtual com um kernel personalizado:

qemu-system-x86_64\
    -kernel arch/x86/boot/bzImage\
    -drive file=/home/lgeorget/VM/image.qcow2,if=virtio\
    -append "root=/dev/vda1"\
    -netdev user,id=mynet0 -device e1000,netdev=mynet0\
    -enable-kvm\
    -S

A opção importante aqui é -S , o que faz com que o qemu inicie um servidor GDB e aguarde que o depurador esteja pronto antes de inicializar.

Em outro console, vá para a árvore de desenvolvimento do Linux, onde você compilou seu kernel personalizado, e aqui inicie o GDB com gdb vmlinux para carregar os símbolos do kernel. Em seguida, no prompt, digite:

target remote :1234

Isto irá se conectar ao servidor gdb que o qemu iniciou (no host local, porta 1234 por padrão). Então, você pode usar seu depurador quase como para qualquer programa, definir pontos de interrupção, continuar a execução com o comando continue , etc. Você deve ser capaz de inspecionar e descarregar a memória, bem como copiar os registros, se quiser analisá-los. Note que isto não aumenta a verbosidade do kernel, no entanto.

Existem muitos tutoriais na web, bem como alguma documentação oficial.

link link link

    
por 13.09.2016 / 15:49