qemu-system-x86_64 -hda linux-0.2.img
$ cp /home/staff/islene/public_html/mc504-linux.tar.xz .
$ tar xJvf mc504-linux.tar.xzSurgirá um diretório contendo a versão 3.12 do kernel Linux compilada com o arquivo de configuração config-3.12 e uma imagem mc504.img que foi criada por Glauber de Oliveira Costa para a turma do 1s2008 de sistemas operacionais.
qemu-system-x86_64 -hda mc504.img -kernel linux-3.12/arch/i386/boot/bzImage -append "ro root=/dev/hda"
usuário: root senha: root
350 i386 finit_module sys_finit_module 351 i386 mycall sys_mycall
asmlinkage long sys_finit_module(int fd, const char _user *uargs, int flags); asmlinkage long sys_mycall(void);
#include <linux/unistd.h> #include <linux/linkage.h> asmlinkage long sys_mycall() { return(4096); }
obj-y += mycall.o
$ makePara não ter problemas com a quota, configure o diretório CCACHE utilizando o comando:
$ export CCACHE_DIR="/tmp/.ccache"export CCACHE_DIR="/tmp/.ccache"
/* * Teste da nova chamada de sistema */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { int r = syscall(351); printf("Retorno da chamada de sistema: %d.\n", r); return r; }
Devemos iniciar o sistema com o comando:
qemu-system-x86_64 -hda mc504.img -kernel linux-3.12/arch/i386/boot/bzImage -append "ro root=/dev/hda" -hdb ex-mycall
Após logar no sistema, devemos executar:
$ cat /dev/hdb > ex-mycall $ chmod +x ex-mycall $ ./ex-mycall
Data de entrega: 27 de novembro.
Data de entrega com atraso: 3 de dezembro, valendo 80% da nota.