Chamadas de Sistema
Primeiramente quero dizer que este procedimento foi testado no Ubuntu 12.04 de 32 bits e de 64 bits com apenas uma diferença entre as duas (iremos mencionar quando chegar a hora), utilizando o Kernel 3.3.7 baixado em “http://www.kernel.org”. Então para esta versão do Kernel e para esta versão do Ubuntu garantimos que vai dar certo se seguir corretamente o passo a passo. Demais distribuições Linux devem dar certo se usar a mesma versão do Kernel, pois as alterações são feitas nele e não na distribuição Linux. Porém não podemos garantir.
Recomendamos que você tenha um bom conhecimento de Linux e acesso root para fazer estas alterações.
Baixe o Kernel no site mencionado acima, usando o terminal vá até a pasta que ficou salvo o Kernel usando o terminal, e digite: tar xjvf Linux-3.3.7.tar.bz2 –C /root/kernel
Caso não existe o diretório kernel em /root você terá que cria-lo antes de descompactar o Kernel.
Tendo permissão de root e com o Kernel já descompactado vá até “/root/kernel/Linux-3.3.7/arch/x86/syscalls/”,
Se seu sistema for 32 bits edite o arquivo syscall_32.tbl acrescentando:
349 i386 minhasys minhasys
Se seu sistema for 64 bits edite o arquivo syscall_64.tbl acrescentando:
312 64 minhasys minhasys
OBS: 312 e 349 referem-se ao número da chamada anterior + 1.
Agora edite o arquivo “syscall.h” em “/root/kernel/Linux-3.3.7/include/linux/” Adicionando ao arquivo uma nova declaração de função. Antes do “#endif”.
Exemplo:
asmlinkage long minhasys();
Agora iremos adicionar a chamada de sistema propriamente dito em “/root/kernel/linux-3.3.7/arch/x86/kernel/” crie um arquivo da sua chamada de sistema e .c, exemplo: minhasys.c
Exemplo de código:
#include
#include
asmlinkage long minhasys()
{