Fixix
Fiwix é um kernel de sistema operacional escrito do zero, baseado na arquitetura UNIX e totalmente focado em ser compatível com POSIX. Ele foi projetado e desenvolvido principalmente como um sistema operacional de hobby e, como também serve para fins educacionais, o código do kernel é mantido o mais simples possível para o benefício de estudantes e entusiastas do sistema operacional. É pequeno em tamanho (menos de 50 mil linhas de código), roda na plataforma de hardware i386 e é compatível com uma boa base de aplicativos GNU existentes.
Características
- Escrito em linguagem ANSI C (montagem usada apenas nas peças necessárias).
- Compatível com a especificação GRUB Multiboot v1.
- Kernel não preemptivo de modo protegido completo de 32 bits.
- Para processadores i386 e superiores.
- Multitarefa preventiva.
- Compatível com POSIX (principalmente).
- Grupos de processos, sessões e controle de trabalhos.
- Comunicação entre processos com pipes, sinais e soquetes de domínio UNIX.
- UNIX System V IPC (semáforos, filas de mensagens e memória compartilhada).
- Mecanismo de bloqueio de arquivo BSD (POSIX restrito apenas a arquivos e consultoria).
- Divisões de memória virtual (usuário/kernel): 3GB/1GB e 2GB/2GB.
- Paginação sob demanda com recurso Copy-On-Write.
- O sistema Linux 2.0 ABI chama compatibilidade (principalmente).
- Suporte ao formato executável ELF-i386 (vinculado estáticamente e dinamicamente).
- Algoritmo de escalonamento baseado em Round Robin (ainda sem prioridades).
- Camada de abstração VFS.
- Suporte Kexec com especificação Multiboot v1 e protocolos de inicialização Linux.
- Suporte ao sistema de arquivos EXT2 com tamanhos de bloco de 1 KB, 2 KB e 4 KB.
- Suporte ao sistema de arquivos Minix v1 e v2.
- Suporte ao sistema de arquivos PROC semelhante ao Linux (somente leitura).
- Suporte ao pseudo-sistema de arquivos PIPE.
- Suporte ao sistema de arquivos ISO9660 com extensões Rock Ridge.
- Suporte a dispositivos RAMdisk.
- Suporte inicial à imagem RAMdisk (initrd).
- Suporte a aplicativos baseados em SVGAlib.
- Suporte a barramento local PCI.
- Suporte a dispositivos seriais QEMU PCI.
- Suporte para adaptador gráfico QEMU/Bochs.
- Controlador Intel PIIX3 PCI ISA IDE.
- Driver de teclado com suporte a mapas de teclado Linux.
- Suporte para mouse PS/2.
- Suporte a dispositivos Framebuffer para placas gráficas compatíveis com VESA VBE 2.0+.
- Suporte ao console Framebuffer (fbcon).
- Suporte para driver de porta serial (RS-232).
- Suporte para console serial remoto.
- Suporte ao console de depuração estilo QEMU Bochs.
- Suporte para driver de impressora de porta paralela.
- Implementação básica de um gerador de números pseudo-aleatórios.
- Driver de dispositivo de disquete e gerenciamento de DMA.
- Driver de dispositivo de CD-ROM IDE/ATA ATAPI.
- Driver de dispositivo de disco rígido IDE/ATA.
Compilando
O comando necessário para construir o kernel Fiwix é make clean ; make
. Isto criará os arquivos fiwix (o próprio kernel) e System.map.gz (a tabela de símbolos) no diretório raiz da árvore do código-fonte.
Antes de compilar, você pode querer ajustar a configuração do kernel alterando os valores padrão em include/fiwix/config.h
e include/fiwix/limits.h
.
Tenha em mente que o kernel não faz nada sozinho, você precisa criar um ambiente de espaço do usuário para utilizá-lo. Após a inicialização, o kernel monta o sistema de arquivos raiz e tenta executar /sbin/init
nele, então você mesmo precisará fornecer este programa. Felizmente, o FiwixOS fornece um ambiente semelhante ao UNIX com espaço de usuário completo para testar o kernel Fiwix.
Instalando
Você pode instalar o FiwixOS em um disco rígido inicializando a partir do CD-ROM ou de um disquete. Se você escolheu esta última opção, também será necessário inserir o CD-ROM de instalação para instalar os pacotes que compõem todo o ambiente do sistema.
Deixe o sistema inicializar e quando estiver pronto, basta digitar install.sh
.
Os requisitos mínimos de hardware são os seguintes:
- Arquitetura padrão IBM PC-AT.
- Processador i386 (com processador de ponto flutuante).
- 4 MB de memória RAM (recomendado 128 MB).
- CD-ROM IDE/ATAPI ou disquete (3,5", 1,44 MB).
- Disco rígido ATA de 1GB.
Por favor, tenha em mente que este é um kernel em seus estágios iniciais e pode ter bugs sérios e recursos quebrados que ainda não foram identificados ou resolvidos.
Deixe-me repetir isso.
Por favor, tenha em mente que este é um kernel em seus estágios iniciais e pode ter bugs sérios e recursos quebrados que ainda não foram identificados ou resolvidos.
*****************************
*** USE AT YOUR OWN RISK! ***
*****************************
Referências
- Site
- IRC
- Lista de discussão
Licença
Fiwix é um software gratuito licenciado sob os termos da licença MIT, consulte o arquivo LICENSE para obter mais detalhes.
Direitos autorais (C) 2018-2024, Jordi Sanfeliu.
Créditos
Fiwix foi criado por Jordi Sanfeliu.
Você pode entrar em contato comigo em [email protected]. Veja também o arquivo CRÉDITOS.