Baixe o app para aproveitar ainda mais
Prévia do material em texto
Nome : Rubio Torres Castro Viana Titulo: Compilando um Kernel Compilac¸a˜o do Kernel com implementac¸a˜o da chamada de sistema 1 OBJETIVO Compilar um kernel adicionando uma chamada de sistema. 2 PARAˆMETROS Foi optado pelo uso do Lubuntu 14.04 que vem com o Kernel 4.4.0 Assim, foi optado pelo kernel 3.0.41 para adicionar a chamada e substituir o kernel antigo. Deve-se instalar algumas dependeˆncias atrave´s de: sudo apt-get install gcc sudo apt-get install libncurses5-dev sudo apt-get install bison sudo apt-get install flex sudo apt-get install libssl-dev sudo apt-get install libelf-dev sudo apt-get install make sudo apt-get update sudo apt-get upgrade 3 EXECUC¸A˜O Primeiramente foi baixado o Kernel no terminal atravez da linnha de co´digo: wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-3.0.41.tar.xz Apo´s isso o conteudo e´ extraido para a pasta usr/scr/ onde esta o outro kernel: sudo tar -xvf linux-3.0.41.tar.xz -C/usr/src/ Depois nos localizamos na pasta destino: cd /usr/src/linux-3.0.41/ Iniciando a criac¸a˜o da system call, adicionamos uma pasta ”hello”contendo dois arquivos, hello.c, que tera´ o co´digo da system call e seu Makefile: Figura 1: Criar Pasta 1 Figura 2: Criar hello.c Figura 3: Criar Makefile Apos isso voltamos a pasta do kernel para editar seu Makefile e adicionar o Hello World: cd .. gedit makefile Encontrar e mudar: core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ Para: core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ hello/ 2 Figura 4: Editar Makefile do kernel Agora ”linkaremos”a sistem call adicionando sua definic¸a˜o em systemcalls.h no direto´rio: cd include/linux/ gedit syscalls.h Adicionaremos: asmlinkage long sys hello(void); Figura 5: Adicionar system call Uma chamada simples na˜o utiliza os outros comandos que iremos adicionar, mas foi encontrado em pesquisas que e´ comum adicionar mesmo nas mais simples aplicac¸o˜es. Vamos para o direto´rio arch/x86/include/asm/ adicio nar ao arquivo unistd 32.h o codigo: 3 define NR hello 350 embaixo de: define NR setns 346 e acrescentar 1 unidade em: define NR syscalls 347 que ficara´: define NR syscalls 348 Figura 6: Adicionar system call Agora vamos atualizar a tabela de cahama de sistemas para isso vamos ao direto´rio arch/x86/kernel/ e editaremos o arquivo syscall table 32.S: gedit arch/x86/kernel/syscall table 32.S Adicionar na lina: .long sys hello 4 Figura 7: Adicionar system call Apo´s isso podemos escolher entre usar o .config antigo executando o codigo: sudo make oldconfig Ou criar um novo como foi usado aqui, executando: Figura 8: Adicionar system call sudo make menuconfig 5 Figura 9: Selecionar configurac¸o˜es do kernel Pronto, agora compilamos o kernel com o codigo: sudo time make -j2 O time e´ para mostrar o tempo percorrido, o make para compilar e o -j2 para compilar usando 2 nucleos. Figura 10: Tempo de compilac¸a˜o do kernel 6
Compartilhar