Advertisement
TeHashX

S99debian script with multiple external folders

Jul 27th, 2016
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.17 KB | None | 0 0
  1. #!/bin/sh
  2. PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin
  3. # Folder with Chrooted Debian
  4. CHROOT_DIR=/tmp/mnt/sda1/optware-ng.arm/debian
  5. # Some folder/folders outside of sandbox,
  6. # will be mounted to /mnt, /mnt2... folders inside Debian
  7. # Uncommented next 1-3 lines starting with "EXT_DIR" if you need
  8. # to mount a folder or more inside chrooted debian
  9. # EXT_DIR=/tmp/mnt/sda1/Media/
  10. # EXT_DIR2=/tmp/mnt/sda1/Media2/
  11. # EXT_DIR3=/jffs/
  12. CHROOT_SERVICES_LIST=/opt/etc/chroot-services.list
  13. if [ ! -e "$CHROOT_SERVICES_LIST" ]; then
  14.     echo "Please, define Debian services to start in
  15. $CHROOT_SERVICES_LIST first!"
  16.     echo "One service per line. Hint: this is a script names from
  17. Debian's /etc/init.d/"
  18.     exit 1
  19. fi
  20. MountedDirCount="$(mount | grep $CHROOT_DIR | wc -l)"
  21. start() {
  22.     if [ $MountedDirCount -gt 0 ]; then
  23.         echo "Chroot'ed services seems to be already started,
  24. exiting..."
  25.         exit 1
  26.     fi
  27.     echo "Starting chroot'ed Debian services..."
  28.     for dir in dev proc sys; do
  29.         mount -o bind /$dir $CHROOT_DIR/$dir
  30.     done
  31.     [ -z "$EXT_DIR" ] || mount -o bind $EXT_DIR $CHROOT_DIR/mnt
  32.     [ -z "$EXT_DIR2" ] || mkdir -p $CHROOT_DIR/mnt2 && mount -o bind $EXT_DIR2 $CHROOT_DIR/mnt2
  33.     [ -z "$EXT_DIR3" ] || mkdir -p $CHROOT_DIR/jffs && mount -o bind $EXT_DIR3 $CHROOT_DIR/jffs
  34.     for item in $(cat $CHROOT_SERVICES_LIST); do
  35.         chroot $CHROOT_DIR /etc/init.d/$item start
  36.     done
  37.     }
  38. stop() {
  39.     if [ $MountedDirCount -eq 0 ]; then
  40.         echo "Chroot'ed services seems to be already stopped,
  41. exiting..."
  42.         exit 1
  43.     fi
  44.     echo "Stopping chroot'ed Debian services..."
  45.     for item in $(cat $CHROOT_SERVICES_LIST); do
  46.         chroot $CHROOT_DIR /etc/init.d/$item stop
  47.         sleep 2
  48.     done
  49.     mount | grep $CHROOT_DIR | awk '{print $3}' | xargs umount -l
  50.     }
  51. restart() {
  52.     if [ $MountedDirCount -eq 0 ]; then
  53.         echo "Chroot'ed services seems to be already stopped"
  54.         start
  55.         else
  56.         # echo "Stopping chroot'ed Debian services..."
  57.     for item in $(cat $CHROOT_SERVICES_LIST); do
  58.         chroot $CHROOT_DIR /etc/init.d/$item stop
  59.         sleep 2
  60.     done
  61.     mount | grep $CHROOT_DIR | awk '{print $3}' | xargs umount -l
  62.         echo "Restarting chroot'ed Debian services..."
  63.     for dir in dev proc sys; do
  64.         mount -o bind /$dir $CHROOT_DIR/$dir
  65.     done
  66.     [ -z "$EXT_DIR" ] || mount -o bind $EXT_DIR $CHROOT_DIR/mnt
  67.     [ -z "$EXT_DIR2" ] || mkdir -p $CHROOT_DIR/mnt2 && mount -o bind $EXT_DIR2 $CHROOT_DIR/mnt2
  68.     [ -z "$EXT_DIR3" ] || mkdir -p $CHROOT_DIR/jffs && mount -o bind $EXT_DIR3 $CHROOT_DIR/jffs
  69.     for item in $(cat $CHROOT_SERVICES_LIST); do
  70.         chroot $CHROOT_DIR /etc/init.d/$item start
  71.     done
  72.     fi
  73.     }  
  74. enter() {
  75.     [ -z "$EXT_DIR" ] || mount -o bind $EXT_DIR $CHROOT_DIR/mnt
  76.     mount -o bind /dev/ /opt/debian/dev/
  77.     mount -o bind /dev/pts /opt/debian/dev/pts
  78.     mount -o bind /proc/ /opt/debian/proc/
  79.     mount -o bind /sys/ /opt/debian/sys/
  80.     chroot /opt/debian /bin/bash
  81.     }
  82. status() {
  83.     if [ $MountedDirCount -gt 0 ]; then
  84.         echo "Chroot'ed services running..."
  85.     else
  86.         echo "Chroot'ed services not running!"
  87.     fi
  88.     }
  89. case "$1" in
  90.     start)
  91.         start
  92.         ;;
  93.     stop)
  94.         stop
  95.         ;;
  96.     restart)
  97.         restart
  98.         ;;
  99.     enter)
  100.         enter
  101.         ;; 
  102.     status) status
  103.         ;;
  104.     *)
  105.         echo "Usage: (start|stop|restart|enter|status)"
  106.         exit 1
  107.         ;;
  108. esac
  109. echo Done.
  110. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement