build-img.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/bin/sh
  2. OS=`uname -s`
  3. if sudo --version > /dev/null 2>&1; then
  4. SUDO=sudo
  5. fi
  6. if [ "$OUTPUT" = "" ]; then
  7. OUTPUT="build/fs-$ARCH.img"
  8. fi
  9. if [ "$ARCH" = "" ]; then
  10. echo "ARCH is not set, exiting..." >&2
  11. exit 1
  12. fi
  13. dd if=/dev/zero of="$OUTPUT" bs=`expr 1024 \* 1024` count=1020
  14. mkfs.fat -n SYSTEM "$OUTPUT"
  15. if [ "$OS" = "Darwin" ]; then
  16. SUDO=''
  17. hdiutil detach build/mnt > /dev/null 2>&1 || true
  18. hdiutil attach "$OUTPUT" -mountpoint build/mnt
  19. else
  20. mkdir -p build/mnt
  21. $SUDO losetup -P /dev/loop2 "$OUTPUT"
  22. $SUDO mount /dev/loop2 build/mnt
  23. fi
  24. if [ "$ARCH" = "x86_64" ]; then
  25. $SUDO cp ./user-programs/init.out build/mnt/init
  26. $SUDO cp ./user-programs/int.out build/mnt/int
  27. $SUDO cp ./user-programs/dynamic_test build/mnt/dynamic_test
  28. $SUDO cp ./user-programs/busybox build/mnt/busybox
  29. $SUDO cp ./user-programs/busybox-minimal build/mnt/busybox_
  30. $SUDO cp ./user-programs/ld-musl-i386.so.1 build/mnt/ld-musl-i386.so.1
  31. $SUDO cp ./user-programs/pthread_test build/mnt/pthread_test
  32. $SUDO cp ./user-programs/init_script_x86_64.sh build/mnt/initsh
  33. elif [ "$ARCH" = "riscv64" ]; then
  34. $SUDO cp ./user-programs/busybox.static build/mnt/busybox
  35. $SUDO cp ./user-programs/init_script_riscv64.sh build/mnt/initsh
  36. elif [ "$ARCH" = "loongarch64" ]; then
  37. $SUDO cp ./user-programs/busybox.la64 build/mnt/busybox
  38. $SUDO cp ./user-programs/init_script_loongarch64.sh build/mnt/initsh
  39. fi
  40. # Add your custom files here
  41. # End of custom files
  42. if [ "$OS" = "Darwin" ]; then
  43. hdiutil detach build/mnt
  44. else
  45. $SUDO losetup -d /dev/loop2
  46. $SUDO umount build/mnt
  47. fi