build.sh 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. #!/bin/sh
  2. echo "Compiling mbr..."
  3. nasm -I boot/include/ -o boot/mbr.bin boot/mbr.S
  4. echo "Compiling loader..."
  5. nasm -I boot/include/ -o boot/loader.bin boot/loader.S
  6. echo "Compiling kernel..."
  7. i386-elf-gcc -I ./lib/ -I lib/kernel/ -I kernel/ -c -fno-builtin -o build/main.o kernel/main.c
  8. nasm -f elf -o build/print.o lib/kernel/print.S
  9. nasm -f elf -o build/kernel.o kernel/kernel.S
  10. i386-elf-gcc -I lib/kernel/ -I ./lib/ -I kernel/ -c -fno-builtin -o build/interrupt.o kernel/interrupt.c
  11. i386-elf-gcc -I lib/kernel/ -I ./lib/ -I kernel/ -c -fno-builtin -o build/init.o kernel/init.c
  12. i386-elf-ld -Ttext 0xc0001500 -e main -o build/kernel.bin build/main.o build/init.o build/interrupt.o build/print.o build/kernel.o
  13. echo "Creating disk image..."
  14. bximage -q -func=create -hd=30M hd30M.img
  15. echo "Installing to disk image..."
  16. echo " 0. Writing mbr to disk..."
  17. dd if=boot/mbr.bin of=hd30M.img bs=512 count=1 conv=notrunc
  18. echo " 1. Writing loader to disk..."
  19. dd if=boot/loader.bin of=hd30M.img bs=512 count=4 seek=2 conv=notrunc
  20. echo " 2. Writing kernel to disk..."
  21. dd if=build/kernel.bin of=hd30M.img bs=512 count=200 seek=9 conv=notrunc
  22. echo "Disk image created successfully."
  23. echo "Now starting bochs ..."
  24. bochs -f bochsrc -q