Skip to content

Latest commit

 

History

History
67 lines (47 loc) · 3.36 KB

DOC.md

File metadata and controls

67 lines (47 loc) · 3.36 KB

Claro! A arquitetura de pastas de um kernel Linux pode parecer complexa no início, mas cada diretório tem uma função bem definida. Abaixo te explico a estrutura de diretórios mais comum encontrada no código-fonte do kernel Linux (por exemplo, o disponível no kernel.org).


🌳 Estrutura Geral de Pastas do Kernel Linux

linux/
├── arch/              ← Código específico por arquitetura (x86, arm, riscv, etc.)
├── block/             ← Camada de I/O de blocos (discos, SSDs, etc.)
├── certs/             ← Gerenciamento de certificados X.509 para verificação de módulos
├── crypto/            ← Implementações de criptografia
├── Documentation/     ← Documentação técnica do kernel
├── drivers/           ← Drivers de dispositivos (USB, GPU, som, rede, etc.)
├── fs/                ← Sistemas de arquivos (ext4, btrfs, fat, etc.)
├── include/           ← Headers (includes) globais
│   └── linux/         ← Headers específicos do kernel
├── init/              ← Código de inicialização do kernel
├── ipc/               ← Comunicação entre processos (semaphores, message queues, etc.)
├── kernel/            ← Núcleo do kernel: agendamento, signals, etc.
├── lib/               ← Funções utilitárias comuns
├── mm/                ← Gerenciamento de memória
├── net/               ← Subsistema de rede (TCP/IP, sockets, etc.)
├── samples/           ← Exemplos de código para aprendizado
├── scripts/           ← Scripts usados na compilação e geração de código
├── security/          ← Módulos de segurança (AppArmor, SELinux, etc.)
├── sound/             ← Subsistema de áudio
├── tools/             ← Ferramentas auxiliares (perf, etc.)
├── usr/               ← Initramfs embutido
├── virt/              ← Virtualização (KVM, Xen, etc.)
├── Makefile           ← Makefile principal do kernel
└── Kconfig            ← Arquivo de configuração global

🔍 Explicando os principais diretórios

  • arch/: Cada subpasta representa uma arquitetura suportada (como x86, arm, riscv). Aqui ficam os bootloaders, interrupções, syscall, e setup inicial da arquitetura.

  • drivers/: Organizado por tipo de hardware (ex: net/, gpu/, usb/, input/...), este diretório é enorme e crucial.

  • fs/: Implementações dos diversos sistemas de arquivos suportados.

  • mm/: Contém o gerenciamento de memória física e virtual (paging, mmap, slab, etc.)

  • kernel/: Agendador, gerenciamento de processos, timers, e syscalls.

  • init/: Onde começa o kernel. A função start_kernel() está aqui.

  • net/: Tudo relacionado a rede: protocolos, drivers de rede, sockets, etc.

  • include/: Headers globais. O que for aqui pode ser usado em todo o kernel.

  • lib/: Funções utilitárias comuns (ex: strings, compressão, etc.)


🛠 Extras úteis

  • Kconfig: Define opções configuráveis do kernel (usadas pelo make menuconfig).

  • Makefile: Controla a compilação do kernel.


Se quiser, posso te mostrar uma estrutura mínima para começar seu próprio kernel (por exemplo, um projeto pessoal em Rust ou C), inspirado nesse modelo. Você quer seguir esse caminho também?