Como inserir um carregador ELF modificado, dado que o atual carregador ELF está presente?

3

Eu preciso modificar a implementação do kernel do carregador ELF de uma distribuição Ubuntu 14.04. Tendo baixado as fontes usando:

sudo apt-get source linux-image-$(uname -r)

Eu executei o script de configuração:

make config

na árvore de origem raiz. Após uma sequência aparentemente interminável de solicitações de entrada, o script criou o arquivo .config necessário para construir o kernel (ou um conjunto de módulos). A versão do kernel que estou usando é linux-3.13.0 e tem o seguinte layout de árvore de origem:

$ ls 
arch              Documentation      fs          kernel          README             sound
block             drivers            include     lib             REPORTING-BUGS     tools
COPYING           dropped.txt        init        MAINTAINERS     samples            ubuntu
CREDITS           elf.dat            ipc         Makefile        scripts            usr
crypto            FileSystemMake     Kbuild      mm              security           virt
debian.master     firmware           Kconfig     net             shortcuts

O carregador ELF está localizado em /path/to/source/fs/binfmt_elf.c . Seguindo esta questão , a fim de compilar um módulo individual é suficiente para executar

make /path/to/module/directory

Nesse caso, seria:

make /path/to/source/fs

A compilação é bastante longa; leva cerca de vinte minutos (em uma máquina virtual) e a saída é gravada (por padrão) no mesmo diretório em que o módulo está localizado. Eu encontrei os arquivos objeto executando:

find . -name "*.o"

em /path/to/source/fs . Filtrando por nome, o carregador ELF pode ser localizado executando:

find . -name "*elf*.o"

Nas fontes atuais, ele é escrito (por padrão) em:

/path/to/source/fs/binfmt_elf.o

Tendo passado por este tutorial , notei que os módulos do kernel têm a convenção de nomenclatura module_name.ko para distingui-los dos arquivos de objetos do espaço do usuário.

Como posso inserir o novo carregador ELF (modificado) no kernel, dado que o carregador ELF atual está presente (e descarregá-lo pode impedir a execução de binários)?

    
por Sebi 10.03.2015 / 21:41

0 respostas