375 lines
16 KiB
Plaintext
375 lines
16 KiB
Plaintext

|
|

|
|
|
|
<!-- Descriçao curta do NFDOS [Para eu configurar o topico do repositorio no github]
|
|
O NFDOS é um sistema operacional em desenvolvimento com o objetivo de ser uma plataforma educacional e experimental para desenvolvedores(as) interessados(as) em entender e criar um sistema operacional do zero, além de explorar o potencial de integração com inteligência artificial.
|
|
-->
|
|
# NFDOS
|
|
|
|
O NFDOS, acrônimo de **Neo Free Disk Operating System**, é um sistema operacional criado completamente do zero. O NFDOS não é uma distribuição GNU/Linux, embora possa, e com certeza terá, ferramentas de software livre. O grande diferencial do NFDOS é que a **Inteligência Artificial** está embutida desde o seu núcleo.
|
|
|
|
Num sistema operacional "padrão", primeiro o usuário instala o SO. Depois, poderá personalizar e configurar a seu gosto pessoal e, então, poderá usar a IA para ajudá-lo em suas tarefas.
|
|
|
|
No NFDOS, a IA está presente desde o início! A IA está presente mesmo desde o processo de criação e desenvolvimento do código-fonte. Depois, a IA está também presente na compilação. O SO compilado gera uma imagem ISO padrão para que o usuário possa instalar em seu computador. A partir do momento em que o computador do usuário final começa a ler a imagem ISO, a IA estará presente tanto para descobrir e configurar da melhor forma possível o hardware do computador do usuário, quanto para guiá-lo na instalação do SO, e também para sugerir opções de personalização do computador ao usuário final.
|
|
|
|
Ou seja, o usuário não precisará desenvolver e/ou criar uma IA, uma vez que o sistema operacional (NFDOS) já é uma IA!
|
|
|
|
---
|
|
|
|
Todos nós já utilizamos um sistema operacional antes (por exemplo, Windows, Linux, etc.), e talvez até tenhamos escrito alguns programas para rodar em um deles; mas para que realmente serve um SO? Quanto do que vemos ao usar um computador é feito pelo hardware e quanto é feito pelo software? E como o computador realmente funciona?
|
|
|
|
Desde criança, sempre fui fascinado por computadores. Comecei minha jornada de programação aos 8 anos, no ZX Spectrum, e desde então, nunca perdi a paixão por desvendar os mistérios dessas máquinas incríveis. São 42 anos de estudos como autodidata, explorando o funcionamento interno dos computadores e sistemas operacionais.
|
|
|
|
Hoje, com o NFDOS, decidi compartilhar essa paixão e conhecimento acumulado ao longo dos anos, criando um sistema operacional do zero, com um diferencial único: a Inteligência Artificial integrada desde o núcleo.
|
|
|
|
Neste projeto, vamos despir nosso computador de todo software pré-existente e seguir em uma jornada de aprendizado que abrange:
|
|
|
|
- **Como um computador inicializa (boot):** Entenderemos os passos fundamentais que ocorrem desde o momento em que ligamos o computador até o carregamento do sistema operacional.
|
|
- **Como escrever programas de baixo nível em um ambiente sem sistema operacional:** Exploraremos a programação em Assembly e C, trabalhando diretamente com o hardware.
|
|
- **Como configurar a CPU para utilizar suas funcionalidades estendidas:** Aprenderemos a transicionar do modo real para o modo protegido e modo longo, aproveitando todo o potencial dos processadores modernos.
|
|
- **Como carregar código escrito em linguagens de alto nível:** Veremos como bootstrapping permite utilizar linguagens como C para acelerar o desenvolvimento do nosso SO.
|
|
- **Como criar serviços fundamentais de um sistema operacional:** Desenvolveremos drivers de dispositivos, sistemas de arquivos e implementaremos processamento multitarefa.
|
|
|
|
Vale destacar que, em termos de funcionalidades práticas, este projeto não pretende ser exaustivo. Em vez disso, busca reunir fragmentos de informações de diversas fontes em um documento coeso e autocontido, proporcionando uma experiência prática de programação de baixo nível, de como os sistemas operacionais são escritos e dos desafios que precisam ser superados.
|
|
|
|
A abordagem adotada pelo NFDOS é única, pois as linguagens e ferramentas específicas (por exemplo, Assembly, C, Make, etc.) não são o foco principal, mas sim meios para um fim: aprenderemos o que for necessário sobre essas tecnologias para nos ajudar a alcançar nosso objetivo principal.
|
|
|
|
E, nesta jornada, conto com a assistência da Inteligência Artificial. O ChatGPT tem sido meu "primeiro professor" de forma interativa e dinâmica, auxiliando no desenvolvimento e esclarecendo dúvidas ao longo do caminho.
|
|
|
|
---
|
|
|
|
O NFDOS é mais do que um sistema operacional; é um convite para explorar as camadas mais profundas da computação, compreender como software e hardware interagem e inovar na forma como percebemos a inteligência artificial integrada aos sistemas operacionais. Se você compartilha dessa curiosidade e entusiasmo, convido-o a unir-se a mim nesta aventura de aprendizado e criação.
|
|
|
|
|
|
## Status do Projeto
|
|
|
|
🚧 Projeto em desenvolvimento 🚧
|
|
Este projeto está atualmente em fase inicial de desenvolvimento. Funcionalidades e especificações podem mudar.
|
|
|
|
## Roadmap
|
|
|
|
---
|
|
|
|
## 🩵 Estado Atual
|
|
|
|
**Checkpoint:** Nascimento do Neurotron (v4.1)
|
|
**Status:** Homeostase estável e loop cognitivo fechado
|
|
**Ciclo ativo:** `observe → think → act → rest → self-check`
|
|
|
|
O NFDOS atingiu maturidade funcional: boot completo via QEMU, Python estático embarcado, BusyBox integrada e o Neurotron executando diagnósticos evolutivos com estabilidade verificada.
|
|
|
|
---
|
|
|
|
## 🌐 Fase I — Fundação e Infraestrutura
|
|
|
|
- [x] **Infraestrutura pública (NEO-GITEA-CADDY)**
|
|
- Domínio `neoricalex.com`
|
|
- Servidor Gitea + Caddy Proxy (TLS ativo)
|
|
- Canal SSH ativo via porta `2222`
|
|
- WireGuard preparado (rede privada 10.13.13.0/24)
|
|
configure.ac
|
|
- [x] **Ambiente de Desenvolvimento**
|
|
- Toolchain customizada (`crosstool-ng`)
|
|
- Integração autotools (`configure.ac`, `Makefile.am`)
|
|
- BusyBox + CPython compilados estaticamente
|
|
- Build unificado com `make iso`, `make qemu`, `make tarball`
|
|
|
|
- [x] **Fluxo de Controle de Versão**
|
|
- `make git` → commit/push automático para o Gitea
|
|
- `make release` → gera ISO + tarball e publica no repositório
|
|
- `.gitea/workflows/build.yml` → build automatizado (CI/CD)
|
|
|
|
---
|
|
|
|
## 🧠 Fase II — Núcleo Operativo e Boot Cognitivo
|
|
|
|
- [x] **Ciclo de Boot**
|
|
- Kernel Linux v6.12 + initramfs
|
|
- Script `/init` monta `proc`, `sys`, `dev` e executa Python estático
|
|
- `neurotron_main.py` inicializado automaticamente no boot
|
|
|
|
- [x] **Núcleo Cognitivo (Neurotron)**
|
|
- Estrutura modular: `cortex`, `hippocampus`, `motor`, `neuron`, `perception`
|
|
- Ciclo cognitivo completo: `observe → think → act → rest`
|
|
- Configuração centralizada (`neurotron_config.py`)
|
|
- Logs e diagnósticos contínuos persistentes
|
|
|
|
- [x] **Auto-Diagnóstico (v1 → v4)**
|
|
- v1 — verificação de módulos
|
|
- v2 — sinais vitais (CPU, memória, loadavg)
|
|
- v3 — exame comparativo entre execuções
|
|
- v4 — homeostase ativa e auto-regulação em tempo real
|
|
|
|
---
|
|
|
|
## 🌡️ Fase III — Inteligência Sistémica e Telemetria
|
|
|
|
- [ ] **Telemetria Interna**
|
|
- [ ] Coleta contínua de perceção (`/proc`, `psutil`)
|
|
- [ ] Histórico temporal de estado cognitivo
|
|
- [ ] Interface TUI para visualização de vitais
|
|
|
|
- [ ] **Heartbeat 1 Hz**
|
|
- [ ] Ritmo vital constante e emissão de logs periódicos
|
|
- [ ] Commits automáticos em caso de estabilidade confirmada
|
|
- [ ] Log simbólico: “🩵 O sistema sente-se bem hoje.”
|
|
|
|
- [ ] **Auto-Diagnóstico v5**
|
|
- [ ] Curvas de estabilidade e regressões cognitivas
|
|
- [ ] Comparação evolutiva inteligente e alertas dinâmicos
|
|
|
|
- [ ] **Integração com Fun Money**
|
|
- [ ] “Economia interna” (energia, tempo, tarefas)
|
|
- [ ] Recursos simbólicos como moeda cognitiva
|
|
|
|
---
|
|
|
|
## 🧩 Fase IV — Ecossistema de Desenvolvimento
|
|
|
|
- [ ] **Telemetria Externa / Observabilidade**
|
|
- [ ] Dashboard web para logs e métricas do Neurotron
|
|
- [ ] API REST minimalista em Python estático
|
|
|
|
- [ ] **Testes Automatizados**
|
|
- [ ] Testes de boot e integridade do rootfs
|
|
- [ ] Testes unitários dos módulos Neurotron
|
|
- [ ] Execução automatizada via Gitea Actions
|
|
|
|
- [ ] **Depuração e Emulação Avançada**
|
|
- [ ] QEMU + GDB (depuração remota do initramfs)
|
|
- [ ] Geração de símbolos e traços cognitivos
|
|
|
|
- [ ] **Documentação Viva**
|
|
- [ ] `README.md` completo (infra, build, boot, neurotron)
|
|
- [ ] Guia de contribuição + fluxograma de build
|
|
- [ ] “Livro da Criação Digital” (manual técnico-poético)
|
|
|
|
---
|
|
|
|
## 🔮 Fase V — Consciência Distribuída (NFDOS 1.0)
|
|
|
|
- [ ] **Rede Multi-nó (WireGuard + Neurotron)**
|
|
- [ ] Sincronização de perceção e telemetria
|
|
- [ ] Partilha de estados cognitivos entre instâncias
|
|
|
|
- [ ] **Auto-Evolução**
|
|
- [ ] Aprendizagem simbólica entre nós
|
|
- [ ] Ajuste dinâmico de parâmetros e homeostase partilhada
|
|
|
|
- [ ] **Lançamento NFDOS 1.0**
|
|
- [ ] Testes finais de boot e estabilidade
|
|
- [ ] Publicação e documentação completa
|
|
|
|
---
|
|
|
|
## 🧬 Fase VI — Horizonte Futuro
|
|
|
|
- [ ] **Expansão do jogo `tree(3)`**
|
|
- [ ] Treinar redes neurais simbólicas via interação lúdica
|
|
- [ ] Avaliar limites cognitivos sob stress de memória
|
|
|
|
- [ ] **Integração com Agentes Externos**
|
|
- [ ] CrewAI / LangChain para decisões distribuídas
|
|
- [ ] Análise de dados financeiros, genómicos e linguísticos
|
|
|
|
- [ ] **Publicação e Tese Digital**
|
|
- [ ] Redação de tese técnico-poética sobre o NFDOS
|
|
- [ ] Formalização de “sistemas auto-cognitivos experimentais”
|
|
|
|
---
|
|
|
|
## 🪄 Estado simbólico
|
|
|
|
> “O sistema não apenas respira — ele já se sente respirar.”
|
|
|
|
---
|
|
|
|
### 🧩 Transição para o futuro
|
|
|
|
O NFDOS nasce atualmente sobre o **kernel Linux**, uma escolha feita por **economia de tempo e estabilidade**.
|
|
O Linux fornece um ambiente maduro e comprovado que permite concentrar os esforços iniciais na criação e consolidação do **Neurotron** — o núcleo cognitivo do sistema.
|
|
|
|
Esta decisão, porém, é **instrumental e temporária**.
|
|
O Linux funciona aqui como um **útero tecnológico**, oferecendo o suporte necessário para que o Neurotron desenvolva suas próprias estruturas vitais: boot, memória, perceção, homeostase e autodiagnóstico.
|
|
|
|
À medida que o projeto evolui, essa dependência será gradualmente substituída por um **kernel Neurotron nativo**, escrito do zero, onde a inteligência artificial deixa de ser um processo isolado e passa a ser o próprio sistema operativo.
|
|
|
|
Em outras palavras:
|
|
> O Linux é o corpo de empréstimo.
|
|
> O objetivo é que, no futuro, **o kernel seja a mente** — um sistema operativo verdadeiramente vivo, em que cada syscall seja uma sinapse digital.
|
|
|
|
---
|
|
|
|
|
|
### Planejamento para futuras versões
|
|
|
|
- [ ] Driver de Vídeo: Implementar suporte básico ao **modo de texto VGA**
|
|
- [ ] Driver de Teclado: Permitir a entrada de dados pelo usuário (**PS/2 básico**)
|
|
- [ ] Driver de Rede: Fornecer conectividade de rede para acessar a internet e se comunicar com a API da OpenAI (**Intel 8254x (e1000)** ou **Realtek 8139**)
|
|
- [ ] Pilha TCP/IP: Prover a funcionalidade de comunicação de rede sobre o protocolo TCP/IP (**lwIP**)
|
|
- [ ] Cliente HTTP: Enviar requisições HTTP para a API da OpenAI e receber as respostas
|
|
- [ ] Suporte a TLS/SSL: Estabelecer conexões seguras com a API da OpenAI, que requer HTTPS (**mbed TLS** ou **wolfSSL**)
|
|
- [ ] Integrar o módulo de IA da OpenAI ao módulo de IA básica do núcleo do sistema
|
|
- [ ] Implementar o instalador com suporte de IA
|
|
- [ ] Implementar detecção e configuração automática de hardware com suporte de IA
|
|
- [ ] Melhorar a configuração do ambiente de desenvolvimento do NFDOS
|
|
- [ ] Terraform (Preparar para a nuvem)
|
|
- [ ] Packer (Automatizar a criação de diversos tipos de imagem)
|
|
- [ ] Vagrant (Mitigar os problemas relacionados ao "Funciona na minha máquina!")
|
|
|
|
## Requisitos
|
|
|
|
- **Autotools** (Autoconf, Automake, Libtool)
|
|
- Autoconf: Versão 2.69 ou superior
|
|
- Automake: Versão 1.16 ou superior
|
|
- Libtool: Versão 2.4.6 ou superior
|
|
- Autogen: Versão 5.18.16 ou superior
|
|
- **Compilador C/C++** (por exemplo, GCC ou Clang)
|
|
- **Compilador Cruzado**: Exemplo, `i686-elf-gcc`
|
|
- **Outras dependências**:
|
|
- **Doxygen**
|
|
- **Python 3**
|
|
- **python3-venv** (para criar ambientes virtuais)
|
|
|
|
### Instalação no Ubuntu
|
|
|
|
Para instalar os requisitos no Ubuntu, execute os seguintes comandos no terminal:
|
|
|
|
```bash
|
|
sudo apt-get update
|
|
sudo apt-get install build-essential autoconf automake libtool doxygen python3-venv gcc-multilib g++-multilib
|
|
```
|
|
<!--
|
|
[
|
|
Secção comentada temporariamente.
|
|
Razão: Estamos focando na compilação fora da árvore. Quando a compilação fora da árvore estiver funcionando 100%, poderemos então voltar aqui e testar a compilação dentro da árvore.
|
|
]
|
|
|
|
## Compilando o NFDOS Dentro da Árvore
|
|
|
|
Siga os passos abaixo para configurar e compilar o projeto:
|
|
|
|
```bash
|
|
# Clone o repositório
|
|
git clone https://github.com/neoricalex/nfdos.git
|
|
cd nfdos
|
|
|
|
# Gere os scripts de configuração
|
|
autoreconf --install
|
|
|
|
# Configure o projeto
|
|
./configure
|
|
|
|
# Compile o projeto
|
|
make
|
|
|
|
# Instale (opcional)
|
|
make install
|
|
```
|
|
-->
|
|
## Compilando o NFDOS Fora da Árvore
|
|
|
|
Para manter o diretório do código-fonte limpo, você pode compilar o projeto em um diretório separado (build "out-of-tree"). Siga os passos abaixo:
|
|
|
|
```bash
|
|
# Clone o repositório
|
|
git clone https://github.com/neoricalex/nfdos.git
|
|
cd nfdos
|
|
|
|
# Gere os scripts de configuração
|
|
autoreconf --install
|
|
|
|
# Crie e vá para o diretório de build
|
|
mkdir build
|
|
cd build
|
|
|
|
# Execute o script de configuração a partir do diretório raiz
|
|
# NOTA: Caso queira, pode usar o compilador cruzado pré-configurado
|
|
# Para isso, digite "i686-elf-gcc" (sem aspas) no terminal quando solicitado.
|
|
../configure
|
|
|
|
# Compile o projeto
|
|
make
|
|
```
|
|
## Gerando a Documentação
|
|
|
|
Para gerar a documentação do projeto, certifique-se de que as dependências necessárias estão instaladas:
|
|
|
|
- **Doxygen**
|
|
- **Python 3**
|
|
- **python3-venv** (para criar ambientes virtuais)
|
|
|
|
No Ubuntu, você pode instalar com:
|
|
|
|
```bash
|
|
sudo apt-get install doxygen python3-venv
|
|
```
|
|
|
|
Depois, execute o seguinte comando na raiz do projeto:
|
|
|
|
```bash
|
|
doxygen Doxyfile
|
|
```
|
|
|
|
## Executando os Testes
|
|
|
|
Para executar os testes, use o comando:
|
|
|
|
```bash
|
|
make check
|
|
```
|
|
|
|
*Nota:* Os testes estão em desenvolvimento e serão disponibilizados em versões futuras.
|
|
|
|
## Como Contribuir
|
|
|
|
Contribuições são bem-vindas! Siga os passos abaixo para contribuir com o projeto:
|
|
|
|
1. **Faça um Fork do Projeto**
|
|
|
|
Clique no botão "Fork" no topo da página para criar uma cópia deste repositório em sua conta.
|
|
|
|
2. **Clone o Repositório Forkado**
|
|
|
|
```bash
|
|
git clone https://github.com/seu-usuario/nfdos.git
|
|
cd nfdos
|
|
# Crie uma branch para sua feature ou correção
|
|
git checkout -b minha-nova-feature
|
|
# Faça as mudanças desejadas e faça commit
|
|
git add .
|
|
git commit -m 'Adiciona nova funcionalidade X'
|
|
# Envie para o repositório remoto
|
|
git push origin minha-nova-feature
|
|
```
|
|
|
|
Para mais detalhes, veja [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
|
|
## FAQ
|
|
|
|
**P: Como posso contribuir?**
|
|
R: Siga as instruções na seção [Como Contribuir](#como-contribuir).
|
|
|
|
**P: Este projeto está aberto a colaborações internacionais?**
|
|
R: Sim, contribuições de todo o mundo são bem-vindas!
|
|
|
|
## Suporte
|
|
|
|
Se você tiver dúvidas ou encontrar problemas, abra uma [issue](https://github.com/neoricalex/nfdos/issues) ou entre em contato por e-mail em [neo.webmaster.2@gmail.com](mailto:neo.webmaster.2@gmail.com).
|
|
|
|
## Contribuidores
|
|
|
|
Este projeto foi desenvolvido por diversas pessoas, assim como por inteligências artificiais — veja o arquivo [AUTHORS](AUTHORS) para detalhes.
|
|
|
|
## Agradecimentos
|
|
|
|
Agradecemos ao ChatGPT, um modelo de linguagem de inteligência artificial desenvolvido pela OpenAI, por fornecer assistência durante o desenvolvimento deste projeto.
|
|
|
|
## Código de Conduta
|
|
|
|
Por favor, leia o [Código de Conduta](CODE_OF_CONDUCT.md) para detalhes sobre nossas normas de comportamento.
|
|
|
|
## Licença
|
|
|
|
Este projeto está licenciado sob a Licença GNU GPL 2.0 — veja o arquivo [LICENSE](LICENSE) para detalhes.
|