Como eu compilo a fonte no kernel?

1

Eu quero adicionar e compilar meu código de aplicativo personalizado no meu kernel.

Como devo adicionar meus arquivos .c e .o no meu diretório 'bin' do kernel e compilá-los?

Eu fiz um arquivo hello.c e hello.o e quero adicioná-los ao meu kernel de tal forma que quando o kernel iniciar este arquivo hello.o é executado. Preciso editar algum makefile?

    
por Jaymin Dabhi 16.07.2014 / 11:54

1 resposta

2

I want to add these file into my kernel such way that when kernel start this hello.o file execute and run

O que você está tentando alcançar não deve ser feito através da edição do kernel. A execução de um programa no momento da inicialização pode ser tratada de maneira muito mais simples, sem a necessidade de experiência em programação do kernel. Você pode:

Execute quando seu shell for iniciado : Escreva /path/to/hello/executable no final de /etc/profile , ~/.profile ou ~/.bashrc . Esses arquivos são originados toda vez que você inicia um shell (mais especificamente, bash). Isso também significa que seu executável será executado toda vez que você abrir um terminal.

Use o sistema init.d : Compile seu código e adicione um init script ao sistema init . Você encontrará todas as informações necessárias nesta página ou aqui para detalhes do Ubuntu .

Aqui está um exemplo rápido de um script de inicialização para o seu executável hello:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          hello
# Default-Start:     1 2 3 4 5
# Short-Description: Prints Hello World somewhere.
# Description: Some more description...
### END INIT INFO

case "$1" in
    start)
        /path/to/hello/executable
        ;;
    stop|restart|force-reload)
        ;;
    *)
        ;;
esac

exit 0

Agora você pode executar o hello usando:

service hello start

Supondo que o script de inicialização é denominado hello e é executável. Para fazê-lo funcionar no momento da inicialização, use:

update-rc.d hello defaults

O kernel depende mais de bibliotecas do que executáveis atualmente. Você também pode querer dar uma olhada no Guia de Desenvolvimento do Módulo do Kernel , que pode apresentar você para o básico dos módulos do kernel. Novamente, isso é um horrível overkill para o que você está tentando fazer.

    
por 16.07.2014 / 12:28