share 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #!/bin/sh
  2. #set -x
  3. THIS=$(basename $0)
  4. case "${1}" in
  5. start)
  6. if [ ! -f /mass_storage ]; then
  7. echo "$THIS: no shared storage file, create it" | tee /dev/kmsg
  8. dd if=/dev/zero of=/mass_storage bs=1M seek=1024 count=0 &&
  9. cat <<EOF | sfdisk /mass_storage
  10. ,,C
  11. EOF
  12. if [ $? -ne 0 ]; then
  13. echo "$THIS: cannot create shared storage file" | tee /dev/kmsg
  14. exit 1
  15. fi
  16. UNIT_LINE=$(fdisk -l /mass_storage | egrep Units)
  17. set $UNIT_LINE
  18. UNIT=${8}
  19. PART_LINE=$(fdisk -l /mass_storage | egrep /mass_storage1)
  20. set $PART_LINE
  21. let START="${2} * $UNIT"
  22. if [ x"$START" = x -o $START -eq 0 ]; then
  23. echo "$THIS: cannot find shared storage file start" | tee /dev/kmsg
  24. exit 2
  25. fi
  26. losetup -o$START /dev/loop0 /mass_storage &&
  27. mkdosfs /dev/loop0 &&
  28. losetup -d /dev/loop0
  29. if [ $? -ne 0 ]; then
  30. echo "$THIS: cannot format shared storage file" | tee /dev/kmsg
  31. exit 3
  32. fi
  33. fi
  34. lsmod | egrep -q ^g_mass_storage
  35. if [ $? -eq 0 ]; then
  36. echo "$THIS; shared storage already started" | tee /dev/kmsg
  37. exit 4
  38. fi
  39. echo "$THIS: start shared storage" | tee /dev/kmsg
  40. modprobe g_mass_storage file=/mass_storage
  41. if [ $? -ne 0 ]; then
  42. echo "$THIS: cannot start shared storage" | tee /dev/kmsg
  43. exit 5
  44. fi
  45. echo "$THIS: shared storage started" | tee /dev/kmsg
  46. ;;
  47. stop)
  48. echo "$THIS: stop shared storage" | tee /dev/kmsg
  49. lsmod | egrep -q ^g_mass_storage
  50. if [ $? -eq 0 ]; then
  51. modprobe -r g_mass_storage
  52. if [ $? -ne 0 ]; then
  53. echo "$THIS: cannot stop shared storage" | tee /dev/kmsg
  54. exit 6
  55. fi
  56. else
  57. echo "$THIS: shared storage not started" | tee /dev/kmsg
  58. exit 7
  59. fi
  60. echo "$THIS: shared storage stopped" | tee /dev/kmsg
  61. ;;
  62. mount)
  63. if [ ! -f /mass_storage ]; then
  64. echo "$THIS: no shared storage file" | tee /dev/kmsg
  65. exit 8
  66. fi
  67. echo "$THIS: mounting shared storage" | tee /dev/kmsg
  68. UNIT_LINE=$(fdisk -l /mass_storage | egrep Units)
  69. set $UNIT_LINE
  70. UNIT=${8}
  71. PART_LINE=$(fdisk -l /mass_storage | egrep /mass_storage1)
  72. set $PART_LINE
  73. let START="${2} * $UNIT"
  74. if [ x"$START" = x -o $START -eq 0 ]; then
  75. echo "$THIS: cannot find shared storage file start" | tee /dev/kmsg
  76. exit 9
  77. fi
  78. losetup -o$START /dev/loop0 /mass_storage &&
  79. mount -t vfat /dev/loop0 /mnt/
  80. if [ $? -ne 0 ]; then
  81. echo "$THIS: cannot mount shared storage file" | tee /dev/kmsg
  82. exit 10
  83. fi
  84. echo "$THIS: shared storage mounted" | tee /dev/kmsg
  85. ;;
  86. umount)
  87. losetup -a | egrep -q /mass_storage
  88. if [ $? -ne 0 ]; then
  89. echo "$THIS: no mounted shared storage file" | tee /dev/kmsg
  90. exit 11
  91. fi
  92. echo "unmounting shared storage"
  93. umount /mnt &
  94. losetup -d /dev/loop0
  95. if [ $? -ne 0 ]; then
  96. echo "$THIS: cannot unmount shared storage" | tee /dev/kmsg
  97. exit 12
  98. fi
  99. echo "$THIS: shared storage unmounted" | tee //dev/kmsg
  100. ;;
  101. *)
  102. echo "Usage ${0} {start|stop|mount|umount}"
  103. exit 13
  104. ;;
  105. esac