Olá a todos, este tutorial deve ser uma expansão atualizada nos tutoriais existentes, que se concentra mais na arquitetura x86_64 de 64 bits. Não é para ser uma introdução a C ou montagem, portanto, você pode aprender em outros lugares primeiro. Fizemos o possível para documentar corretamente tudo; portanto, se houver algo que você não entende, talvez seja necessário voltar alguns capítulos.
Ainda não está completo, mas chegou a um ponto em que sentimos que poderia ser útil.
Este tutorial é destinado a pessoas que têm um entendimento geral sobre C e Assembléia, mas não são necessariamente especialistas em computadores. Ele foi projetado para ser o mais acessível possível, para que, às vezes, possa explicar demais alguns conceitos (e tudo bem). No entanto, se você se sentir livremente perdido , por favor, informe -nos. Criamos este projeto porque não gostamos do gatekeeping visto no desenvolvimento do sistema operacional, e ficaríamos felizes em alterar nossas explicações ou apontá -lo para outro recurso que pode ser mais útil.
Se você quiser contribuir com este projeto ou adicionar algo próprio, envie uma solicitação de tração. Vou tentar chegar a todos eles o mais rápido possível :)
Este tutorial usa o conjunto de compiladores LLVM, incluindo clang e ld.lld . Se você não os possui, precisará fazê -lo e adicioná -los ao seu caminho. Também usamos nasm para o nosso assembler e qemu-system-x86_64 como nosso emulador. Opcionalmente, gdb pode ser usado para depurar o código do kernel. Embora não seja necessário, este tutorial usa scripts de shell para facilitar a construção e a depuração. Recomendamos fortemente que você tenha bash instalado em /bin/bash (ou pelo menos simplificado lá). Caso contrário, você pode executar os scripts usando o comando bash .
Você deve ser capaz de executar todos os comandos acima em uma janela de terminal sem especificar o caminho completo. Se não puder, provavelmente precisará instalá -los e adicioná -los ao seu caminho. Este tutorial foi testado no MacOS (Catalina e Big Sur), bem como no Ubuntu (20,04). Nenhum outro sistema operacional é oficialmente suportado, embora deva funcionar bem na maioria das máquinas *Nix.
NOTA: O MacOS
gdbtem dificuldade com os símbolos de depuração do kernel (ELF64). Pode ser necessário alterar o nível de saída de depuração para -GLLDB nos makefiles e usá -lo, ou criar um novogdba partir da fonte.
É isso! Não há necessidade de instalar nenhum compilador cruzado ou outras ferramentas, já que Clang já tem coberto. Boa sorte, e se você tiver algum problema, fique à vontade para nos informar!