Nos programas de espaço do usuário, main() é o ponto de entrada para o programa que é chamado pelo código de inicialização da libc quando o binário é executado. O código do kernel não tem o luxo de depender da libc, já que a própria libc depende da interface syscall do kernel para alocação de memória, E / S, gerenciamento de processos, etc.
Dito isso, o equivalente a main() no código do kernel é start_kernel() , que é chamado pelo gerenciador de inicialização depois de ter carregado a imagem do kernel, descomprimiu-a na memória e configurou o hardware essencial e a paginação de memória. start_kernel() realiza a maioria da configuração do sistema e, eventualmente, gera o processo init.
O ponto de entrada para os módulos do kernel Linux é uma função init registrada no kernel chamando a macro module_init() . A função init do módulo registrado é então chamado pelo código do kernel através do do_initcalls() função durante a inicialização do kernel.