Criando um sistema operacional do zero. Este sistema operacional está construído para i386+ 32 bits Intel x86. Quaisquer outras plataformas podem não funcionar e não foram testadas.
Basta digitar make run , que criará todos os arquivos necessários e executada no emulador QEMU. O Makefile é um frango, portanto, quaisquer sugestões sobre melhores modos são apreciadas.
nasm - para montar o carregador de inicializaçãogcc - para compilar o kernel e incluiu a biblioteca Cld - para vincular todos os arquivos do kernelobjcopy - para criar o binário do kernel a partir do arquivo ELFar - para criar a biblioteca C C Librarymake - para executar o makefileqemu - para executar o sistema operacionalWindows Linux subsystem :cmd - para usar comandos do Windows no terminal do subsistema Linuxpartcopy - Windows CMD para criar o setor de inicializaçãoimdisk - Windows CMD para criar e montar a imagem de disquetecopy - Windows CMS para copiar arquivos na imagem de disquete Lamento que isso machuque as pessoas para ver como usando o Windows e o Linux juntos; portanto, se alguém tiver sugestões e/ou melhor makefile que funciona que eu posso usar, entre em contato. O Makefiles é novo para mim, para que todas as alterações sejam feitas, você pode comentar para que eu possa entender o que está acontecendo. Especialmente um makefile que apenas usa comandos Linux seria o melhor. Eu tentei usar dd para criar o setor de inicialização, mas não consegui funcionar corretamente; portanto, qualquer maneira de obter alguns comandos do Windows será boa. Você pode me enviar um e -mail para [email protected] se tiver alguma alteração.
Você pode executar make debug , que criará todos os arquivos necessários e executado no emulador Qemu. Você pode anexar um depurador do GDB adicionando as linhas ao .gdbinit ou digitar os comandos diretamente:
set architecture i386
target remote localhost:1234
br *0x7c00
c
Isso definirá a arquitetura para 16 bits x86, pois é isso que o carregador de inicialização está codificado para começar. Em seguida, se conecta ao emulador na porta 1234 (padrão para qemu). Em seguida, define um ponto de interrupção no início do carregador de inicialização. O sistema operacional inicia e para no início do carregador de inicialização.
Se quiser quebrar no início do kernel, o endereço em que é carregado é 0x100000. Portanto, substitua br *0x7c00 por br *0x100000 .
Você executa meu sistema operacional por seu risco em hardware real. Não há garantia de que o hardware não seja danificado pela execução do sistema operacional. Portanto, execute em uma máquina virtual ou emulador para segurança.