Gostaria de usar chamadas de inicialização adiadas . Esta função permite carregar módulos no userland, que devem ser carregados durante a seqüência de inicialização.
Apenas para testar, gostaria de modularizar o maior número possível de entradas da inicialização. Para aplicar este método, o module_init()
nesses módulos deve ser renomeado para deferred_module_init()
, fácil até agora.
Agora, minha pergunta é: onde posso encontrar todos esses arquivos com module_init()
? Porque eu já escrevi um script bash, que substitui esta string com o defered_module_init em todo o código fonte do kernel - infelizmente ele cobre algumas outras funções também, o que tornou impossível compilar o kernel depois.
Existe um diretório ou uma lista com os módulos que devem ser usados durante a inicialização?
Descobri que passar initcall_debug
para a linha de comando do kernel gera uma lista com os módulos, que então podem ser visualizados com este comando, que me informa o nome do módulo
dmesg -s 128000 | grep "initcall" | sed "s/\(.*\)after\(.*\)/ /g" | sort -n
Mas parece que estes nomes estão espalhados por toda a fonte do kernel: /. Existe uma maneira fácil de capturar todas essas entradas, para que eu possa aplicar meu script bash para substituir essa seqüência específica?
Fazer isso a pé parece um trabalho que pode durar uma eternidade.
Aqui está um exemplo de saída:
286 usecs [ 0.910000] initcall arc4_init+0x0/0x1c returned 0
287 usecs [ 0.910000] initcall aes_init+0x0/0x1c returned 0
288 usecs [ 0.900000] initcall crypto_wq_init+0x0/0x4c returned 0