Estou aprendendo a criar módulos do kernel e estava tudo funcionando bem: eu compilei, inseri as mensagens .ko
with sudo insmod cheat.ko
e printk
dentro da função init (definida por module_init
) apareceu corretamente em código%. Em seguida, fiz alterações no módulo, removi-o com /etc/log/syslog
, reinseri e sudo rmmod cheat.ko
mensagens foram boas novamente.
Então, quando eu tentei um novo recurso, a tela se tornou como um tty, mensagens de erro em todo, eu fiz ctrl-alt-f2 ctrl-alt-f7 (eu estou no Ubuntu), e eu voltei para o X servidor.
Eu desfiz as modificações mais recentes no arquivo de origem, recompilou, mas o problema agora é que não consigo reinserir o módulo para testar as coisas novamente, a menos que eu reinicie, o que é muito irritante para testes.
Como posso reinserir o módulo modificado sem reiniciar?
O que eu tentei e recebi info:
-
printk
: a única informação relevante para mim foi:
BUG: unable to handle kernel NULL pointer dereference at 00000003
então parece que foi a causa do problema, e então eu tive um oops:
Oops: 0002 [#1] SMP
Informações de depuração horríveis seguem isso, mas nada que me ajude a reinserir o módulo.
-
cat /etc/log/syslog
: o comando apenas trava, não gera nada, e a única maneira de usar o emulador de terminal é eliminá-lo com sudo insmod cheat.ko
-
c-c
:
Error: Module cheat is not currently loaded
-
sudo rmmod cheat
FATAL: Module cheat.ko not found.
-
sudo modprobe -r cheat.ko
:
cheat 19009 -2
que tem uma contagem de uso lsmod | grep cheat
muito suspeita ...
-
-2
cheat 19009 1 - Loading 0x00000000 (OF+)
interessante, então o módulo ainda está carregando ...
Editar
Como outros já disseram, use uma VM. E eu recomendo strongmente que você use o Vagrant para gerenciá-lo.
Editar 2
Nah, o Vagrant é para newbs, use o QEMU + Buildroot: link