Como adicionar uma nova chamada de sistema ao kernel do Linux - Teoria de Sistemas Operacionais

COMPARTILHAR:

Usando o comando dmesg podemos então checar a mensagem da chamada de sistema implementada

O procedimento abaixo foi testado no Ubuntu, mas funciona em outras distribuições Linux, talvez seja necessário algumas pequenas alterações e pesquisas online sobre o procedimento.

1º passo - Baixar a versão do Ubuntu 16.04.7 para utilizar na sua máquina virtual (VM). Aqui está um link com a versão que baixamos: https://releases.ubuntu.com/16.04/ubuntu-16.04.7-desktop-amd64.iso

2º passo - Instalar GCC com uma chamada no terminal ou então instalar o build-essential, que também contém o GCC e outros pacotes necessários para compilar. Comando:

[sudo apt install build-essential libncurses-dev libssl-dev libelf-dev bison flex -y]

 3º passo - Consultar a versão do kernel utilizando o “uname -r” e baixar a versão do kernel 5.17.4 que é superior a versão 4.15.0 com o comando wget. Comando:

[wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.17.4.tar.xz]


4º passo - Descompactar o Kernel diretamente no diretório /usr/src/linux-4.17.4/ e criar uma nova chamada de sistema dentro do diretório de mesmo nome no kernel utilizando um arquivo hello.c 

Em seguida criar um Makefile no diretório hello.


5º passo - Agora adicionamos hello/ ao Makefile do Kernel.


6º passo - Adicionar a nova chamada do sistema na tabela de chamada de sistema a partir da linha 548 e em seguida adicionar após a última linha do arquivo syscall a linha de comando asmlinkage.


7º passo - Agora antes de compilar é necessário criar o arquivo .config , com o comando “sudo make menuconfig”. Aparecerá algumas opções; deixe como Default, Save e Exit. Em seguida é necessário remover do arquivo .config presente em /usr/src/linux-4.17.4/ alguns certificados confiáveis para evitar erros durante a compilação, saiba mais clicando aqui.


8º passo - Use o comando “sudo make” para então compilar o Kernel. Note que o comando “nproc” fornece o número de núcleos disponíveis em sua máquina, então caso possua mais de um núcleo use o comando “sudo make -jn” onde n é o número de núcleos disponíveis para poder reduzir o tempo de compilação. Após algumas horas compilando, conseguimos ter êxito e então utilizamos o comando “sudo make modules_install install” para instalar o Kernel em nosso sistema.


9º passo - Após instalado, note que foi criado arquivos dentro do diretório /boot/ e o nome do arquivo executável que corresponde ao kernel é "vmlinuz-4.17.4"


Utilizando o comando “update-grub” garantimos que o grub seja atualizado com a versão do Kernel instalada. Depois reinicie a máquina virtual e após o sistema iniciar, confira a versão do kernel para visualizar se atualizou.


Para testar a chamada do sistema, crie o seguinte arquivo .c e o compilamos com gcc.


Em seguida rodamos o arquivo compilado ./a.out


10º passo - Usando o comando dmesg podemos então checar a mensagem da chamada que fizemos. A chamada de sistema implementada foi então executada em model kernel.


Resumindo, o kernel precisará ser recompilado toda vez que uma nova chamada de sistema for adicionada.

COMENTÁRIOS

Nome

#ann,24,#HK,28,#LTCode,81,Artigo - Diversos,162,Artigo - Games,197,Artigo - Tecnologia,559,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,64,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,6,HN,12,Raspberry Pi,12,root,76,Shorty Awards,1,Smartphones - Reviews,33,Top Nostalgia,2,VPN,17,WhatsApp,45,
ltr
item
Limon Tec: Como adicionar uma nova chamada de sistema ao kernel do Linux - Teoria de Sistemas Operacionais
Como adicionar uma nova chamada de sistema ao kernel do Linux - Teoria de Sistemas Operacionais
Usando o comando dmesg podemos então checar a mensagem da chamada de sistema implementada
https://1.bp.blogspot.com/-Vv6C0DkQgY0/WG_EGTY1EhI/AAAAAAAAFcs/qphwk8Z4UdkFSQu0zbS5xoZ_9_KovVlJACLcB/s320/ltcode.jpg
https://1.bp.blogspot.com/-Vv6C0DkQgY0/WG_EGTY1EhI/AAAAAAAAFcs/qphwk8Z4UdkFSQu0zbS5xoZ_9_KovVlJACLcB/s72-c/ltcode.jpg
Limon Tec
https://www.limontec.com/2022/04/teoria-sistemas-operacionais-6.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2022/04/teoria-sistemas-operacionais-6.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo