Foi utilizado o Linux Ubuntu na arquitetura x86_64 com processador da linha intel, o código atual só funcionará corretamente para esta arquitetura.
Todo o código foi compilado utilizando a versão 2.16.01 do Nasm, acredito que versões anteriores e posteriores devem funcionar, até este momento do código não foi necessário nenhuma diretiva que funcione em uma função específica, é claro que precisamos manter coerência e não utilizar versões tão distantes da que utilizamos aqui.
Estes fontes são baseados na playlist Curso "Desenvolvendo Sistemas Operacionais Simples" em Assembly do instrutor Francis pode conter algumas modificações e readaptações de acordo com a nossa necessidade.
nasm -f bin src/boot.asm -o bin/boot.bin
nasm -f bin src/kernel.asm -o bin/kernel.bin
Esse comando cria um arquivo chamado disk.img com espaço suficiente para armazenar 2880 setores de 512 bytes (equivalente a um disquete de 1,44 MB).
dd if=/dev/zero of=disk.img bs=512 count=2880
dd if=bin/boot.bin of=disk.img bs=512 count=1 conv=notrunc
dd if=bin/kernel.bin of=disk.img bs=512 seek=1 conv=notrunc
dd if=bin/window.bin of=disk.img bs=512 seek=2 conv=notrunc
Use o utilitário mkisofs para criar uma imagem ISO bootável a partir do arquivo disk.img: Aqui está o que cada opção faz:
- -o bootable.iso: Define o nome do arquivo ISO de saída.
- -b disk.img: Define o arquivo de boot (emulando um disquete).
- -c boot.catalog: Cria um catálogo de boot (recomendado para compatibilidade).
- -no-emul-boot: Especifica que o arquivo de boot não é uma emulação de sistema operacional completo.
mkisofs -o bootable.iso -b disk.img -c boot.catalog -no-emul-boot -boot-load-size 4 -boot-info-table .
qemu-system-x86_64 -drive format=raw,file=disk.img
hexdump -C bin/boot.bin
Tentei algumas opções na minha UEFI/BIOS, mas na máquina real, o KiddieOS só mostra um cursor piscando numa tela preta, já no VB, mostra o proposto.
R-> Tenta verificar no seu Setup da máquina real se você tem opção para ir pro Modo legado, exemplo: USB Legacy. E desativar a UEFI para ir pro modo BIOS. Isto é porque o sistema KiddieOS utiliza da BIOS, computadores que configurações mais atuais pode não permitir a execução de algumas funcionalidades do KiddieOS.