MO806/MC914 - Tópicos em Sistemas Operacionais
Material sobre Virtual File System
Slides
O VFS foi tema de três projetos de MO806:
Slides na web:
Recuperação de arquivos no ext-3:
Desafio:
- Apagar um arquivo no ext-3 e depois recuperá-lo utilizando debugfs e edição da imagem.
Sistemas de brinquedo
Código alterado para rodar com kernel 3.10.x:
Como incluir o lwnfs
- Criar um diretório fs/lwnfs
- Alterar o arquivo fs/Makefile incluindo o seguinte conteúdo:
obj-y += lwnfs/
Como testar:
$ dd if=/dev/zero of=rep bs=1k count=4
$ mkdir -p mnt
$ mount -t lwnfs -o loop rep mnt
$ cat counter0
islenefs
Versão com um único diretório:
Versão com árvore de diretórios:
- Projeto desenvolvido por Gustavo Padovan, Otávio Pontes e Gustavo Scalet:
gogislenefs
- Diretório com versão modificada para rodar com o kernel 3.10.x: gogislenefs
Como utilizar o gdb
- Compilar o kernel com as opções de depuração ligadas.
- Rodar o qemu com os seguintes parĂ¢metros:
$ qemu-system-i386 -s -S -hda ../mo806.img -kernel arch/i386/boot/bzImage -nographic -append "console=ttyS0 rw root=/dev/hda"
A opção -S irá fazer a execução do kernel parar logo no início.
- Em outra janela rodar o gdb, definindo o target e eventuais breakpoints.
$ gdb vmlinux
(gdb) target remote :1234
Remote debugging using :1234
0x0000fff0 in ?? ()
(gdb) b islenefs_create
(gdb) c
- Sistema de arquivos com um único arquivo
- Bom exemplo, mas (ainda) desatualizado... :-(
- Atualização envolve mais etapas do que simples alterações sintáticas. Veja: Some VFS address space operations change
Este é bem simples e foi baseado no lwnfs citado acima. Veja o código atualizado para a versão 3.10.x.
Primeiro projeto
Projete e implemente o seu próprio file system (de brinquedo).
- Data de entrega: 26 de agosto.
- Projeto individual ou em duplas.
- Funcionalidades básicas: operações de leitura e escrita. Caso
sejam implementados arquivos, estes não precisam ser armazenados em
disco. As operações de leitura e escrita podem ter algum outro
significado. Não é preciso entregar a funcionalidade de diretórios,
que ficará para o segundo projeto.
- Entrega: diretório a ser incluído em fs (disponível em
repositório github ou bitbucket), acompanho de uma explicação sucinta
do seu funcionamento (arquivo README ou página wiki) e apresentação em
sala de aula.
- Peso: este projeto vale até 2,0 pontos da nota final.
Segundo projeto
Projete e implemente um file system (de brinquedo) com diretórios.
- Data de entrega: 30 de setembro.
- Projeto individual ou em duplas.
- Este projeto pode ou não ser uma extensão do projeto 1.
- Peso: este projeto vale até 2,0 pontos da nota final.