build.sh 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/bin/sh
  2. directory="build/bin"
  3. if [ ! -d "$directory" ]; then
  4. mkdir -p $directory
  5. fi
  6. echo "Compiling mbr..."
  7. nasm -I boot/include/ -o $directory/mbr.bin boot/mbr.S
  8. if [ $? -eq 0 ]; then
  9. echo "MBR compiled successfully."
  10. else
  11. echo "MBR compiled failed."
  12. exit
  13. fi
  14. echo "Compiling loader..."
  15. nasm -I boot/include/ -o $directory/loader.bin boot/loader.S
  16. if [ $? -eq 0 ]; then
  17. echo "Bootloader compiled successfully."
  18. else
  19. echo "Bootloader compiled failed."
  20. exit
  21. fi
  22. echo "Compiling kernel..."
  23. directory="build"
  24. if [ ! -d "$directory" ]; then
  25. mkdir $directory
  26. fi
  27. i386-elf-gcc -I lib/ -I lib/kernel/ -c -fno-builtin -o build/timer.o device/timer.c
  28. i386-elf-gcc -I ./lib/ -I lib/kernel/ -I kernel/ -c -fno-builtin -o build/main.o kernel/main.c
  29. nasm -f elf -o build/print.o lib/kernel/print.S
  30. nasm -f elf -o build/kernel.o kernel/kernel.S
  31. i386-elf-gcc -I lib/kernel/ -I ./lib/ -I kernel/ -c -fno-builtin -o build/interrupt.o kernel/interrupt.c
  32. i386-elf-gcc -I lib/kernel/ -I ./lib/ -I kernel/ -c -fno-builtin -o build/init.o kernel/init.c
  33. directory="build/bin"
  34. if [ ! -d "$directory" ]; then
  35. mkdir $directory
  36. fi
  37. i386-elf-ld -Ttext 0xc0001500 -e main -o $directory/kernel.bin build/main.o build/init.o build/interrupt.o build/print.o build/kernel.o build/timer.o
  38. if [ $? -eq 0 ]; then
  39. echo "Kernel compiled successfully."
  40. else
  41. echo "Kernel compiled failed."
  42. exit
  43. fi
  44. echo "Creating disk image..."
  45. bximage -q -func=create -hd=30M hd30M.img
  46. if [ $? -eq 0 ]; then
  47. echo "Disk image created successfully."
  48. else
  49. echo "Disk image created failed."
  50. exit
  51. fi
  52. echo "Installing to disk image..."
  53. echo " 0. Writing mbr to disk..."
  54. dd if=$directory/mbr.bin of=hd30M.img bs=512 count=1 conv=notrunc
  55. if [ $? -eq 0 ]; then
  56. echo "Install mbr to disk image successfully."
  57. else
  58. echo "Install mbr to disk image failed."
  59. exit
  60. fi
  61. echo " 1. Writing loader to disk..."
  62. dd if=$directory/loader.bin of=hd30M.img bs=512 count=4 seek=2 conv=notrunc
  63. if [ $? -eq 0 ]; then
  64. echo "Install loader to disk image successfully."
  65. else
  66. echo "Install loader to disk image failed."
  67. exit
  68. fi
  69. echo " 2. Writing kernel to disk..."
  70. dd if=$directory/kernel.bin of=hd30M.img bs=512 count=200 seek=9 conv=notrunc
  71. if [ $? -eq 0 ]; then
  72. echo "Install kernel to disk image successfully."
  73. else
  74. echo "Install kernel to disk image failed."
  75. exit
  76. fi
  77. # echo "Now starting bochs ..."
  78. # bochs -f bochsrc -q