run_in_qemu.sh 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # ==============检查文件是否齐全================
  2. if [ ! -x "bin/bootloader/boot.bin" ]; then
  3. echo "bin/bootloader/boot.bin 不存在!"
  4. exit
  5. fi
  6. if [ ! -x "bin/bootloader/loader.bin" ]; then
  7. echo "bin/bootloader/loader.bin 不存在!"
  8. exit
  9. fi
  10. if [ ! -x "bin/boot.img" ]; then
  11. echo "bin/boot.img 不存在!"
  12. exit
  13. fi
  14. # ===============文件检查完毕===================
  15. # 将引导程序写入boot.img
  16. dd if=bin/bootloader/boot.bin of=bin/boot.img bs=512 count=1 conv=notrunc
  17. # 判断临时文件夹是否存在,若不存在则创建新的
  18. if [ ! -d "tmp/" ]; then
  19. mkdir tmp/
  20. echo "创建了tmp文件夹"
  21. fi
  22. # 挂载boot.img到tmp/boot
  23. mkdir tmp/boot
  24. sudo mount bin/boot.img tmp/boot -t vfat -o loop
  25. # 检查是否挂载成功
  26. if mountpoint -q tmp/boot
  27. then
  28. echo "成功挂载 boot.img 到 tmp/boot"
  29. # 把loader.bin复制到boot.img
  30. sudo cp bin/bootloader/loader.bin tmp/boot
  31. sync
  32. sudo umount tmp/boot
  33. else
  34. echo "挂载 boot.img 失败!"
  35. fi
  36. # 运行结束后删除tmp文件夹
  37. sudo rm -rf tmp
  38. # 进行启动前检查
  39. flag_can_run=0
  40. if [ -d "tmp/" ]; then
  41. flag_can_run=0
  42. echo "tmp文件夹未删除!"
  43. else
  44. flag_can_run=1
  45. fi
  46. if [ $flag_can_run -eq 1 ]; then
  47. qemu-system-x86_64 -s -S -m 2048 -fda bin/boot.img
  48. else
  49. echo "不满足运行条件"
  50. fi