Projeto realizado referente à disciplina Sistemas Operacionais 1 lecionada, pela docente Kelen Vivaldini, ao curso de Bacharelado em Ciência da Computação na Universidade Federal de São Carlos
André Camargo Rocha RA: 587052
Guilherme Lemos RA: 587010
João Gabriel Fanhani Marins RA: 586919
Miguel Gonçalves Vieira RA: 609790
mycall.c é uma chamada de sistema que, ao passarmos um caminho, um nome e um conteúdo como parâmetros, ela cria o arquivo com o nome e caminho especificados, abre esse arquivo e escreve o conteúdo passado como parametro. Caso o caminho não exista, o diretório será criado
Assumindo que a imagem do linux utilizada esteja na pasta pai de linux-3.17.2 e esteja nomeada como DC_SO.img, temos os seguintes passos a serem realizados:
-
Alterar o arquivo:
linux-3.17.2/arch/x86/syscalls/syscall_32.tlb
, adicionando a linha:357 i386 mycall sys_mymemset
-
Copiar
mycall.c
para o diretório `linux-3.12/arch/x86/kernel/`` -
Incluir a linha:
asmlinkage long createFile(const char fileName[], const char dirPath[], const char toWrite[])
no local adequado do arquivolinux-3.17.2/include/linux/syscalls.h
-
Alterar o arquivo
Makefile
que está no diretóriolinux-3.17.2/arch/x86/kernel/
, incluindo uma linha:obj-y += mycall.o
-
Copiar o arquivo
ex-mycall.c
para a pasta que está a imagem do linux -
Rodar a imagem do linux inserindo o executável de ex-mycall.c:
qemu-system-i386 -hda DC_SO.img -kernel linux-3.17.2/arch/i386/boot/bzImage -append "ro root=/dev/hda" -hdb ex-mycall
-
Logar no sistema aberto pelo QEMU com as credenciais corretas
-
Rodar os comandos:
cat /dev/hdb > ex-mycall && chmod +x ex-mycall && ./ex-mycall pelo QEMU