Advertisement
Guest User

optware.sh

a guest
Sep 20th, 2014
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.58 KB | None | 0 0
  1. #!/bin/sh
  2. #PATH=$PATH:/opt/bin ... set this somewhere else
  3. optware_install(){
  4.   mntroot rw
  5.   mkdir -p /opt/etc; mkdir -p /opt/share; mkdir -p /opt/lib; mkdir -p /opt/bin; mkdir -p /opt/tmp
  6.   mntroot ro
  7. }
  8. optware_uninstall(){
  9.   mntroot rw
  10.   rm -rf /opt/etc; rm -rf /opt/share; rm -rf /opt/lib; rm -rf /opt/bin; rm -rf /opt/tmp
  11.   mntroot ro
  12. }
  13. optware_mount(){
  14.   mkdir -p /mnt/us/optware/fs; mkdir -p /mnt/us/optware/ro; mkdir -p /mnt/us/optware/rw
  15.   #mount -t squashfs -o loop,nosuid,nodev,noatime /mnt/us/optware/optware.img /mnt/us/optware/ro 2>&-
  16.   #mount -t cramfs -o loop,nosuid,nodev,noatime /mnt/us/optware/optware.img /mnt/us/optware/ro 2>&-
  17.   #mount -t unionfs -o dirs=/mnt/us/optware/rw=rw:/mnt/us/optware/ro=ro unionfs /mnt/us/optware/fs 2>&-
  18.   mount -o loop,nosuid,nodev,noatime -t ext3 /mnt/us/optware/optware.img /mnt/us/optware/fs 2>&-
  19.   mount --bind /mnt/us/optware/fs/opt/etc /opt/etc 2>&-
  20.   mount --bind /mnt/us/optware/fs/opt/share /opt/share 2>&-
  21.   mount --bind /mnt/us/optware/fs/opt/lib /opt/lib 2>&-
  22.   mount --bind /mnt/us/optware/fs/opt/bin /opt/bin 2>&-
  23.   mount --bind /mnt/us/optware/fs/opt/tmp /opt/tmp 2>&-
  24. }
  25. optware_unmount(){
  26.   umount /opt/etc 2>&-; umount /opt/share 2>&-; umount /opt/lib 2>&-; umount /opt/bin 2>&-; umount /opt/tmp 2>&-
  27.   umount /mnt/us/optware/ro 2>&-; umount /mnt/us/optware/rw 2>&-; umount /mnt/us/optware/fs 2>&-
  28.   rm -rf /mnt/us/optware/fs 2>&-; rm -rf /mnt/us/optware/ro 2>&-; rm -rf /mnt/us/optware/rw 2>&-
  29.   for f in /dev/loop/*; do l=$(losetup $f 2>&-); [ "${l##${l%%/mnt/us/optware/optware.img}}" == "/mnt/us/optware/optware.img" ] && echo losetup -d $f; done
  30. }
  31. optware_sync(){
  32.   [[ "$(ls -A /mnt/us/optware/fs)" && "$(ls -A /mnt/us/optware/rw)" && ! "$(blkid -t TYPE=ext3 /mnt/us/optware/optware.img)" ]] || return 0
  33.   [ "$(blkid -t TYPE=cramfs /mnt/us/optware/optware.img)" ] && local mkfs="mkfs.cramfs -n opt" || local mkfs="mksquashfs"
  34.   ${mkfs} /mnt/us/optware/fs /mnt/us/optware/optware.new
  35.   optware_unmount
  36.   sleep 2
  37.   mv /mnt/us/optware/optware.new /mnt/us/optware/optware.img
  38.   optware_mount
  39. }
  40. optware_extend(){
  41. #only for ext3
  42. }
  43. case "$1" in
  44.   stop|unmount)
  45.     optware_unmount
  46.   ;;
  47.   start|restart|mount|remount)
  48.     optware_unmount
  49.     sleep 1
  50.     optware_mount
  51.   ;;
  52.   install)
  53.     optware_unmount
  54.     sleep 1
  55.     optware_install
  56.   ;;
  57.   uninstall)
  58.     optware_unmount
  59.     sleep 1
  60.     optware_uninstall
  61.   ;;
  62.   sync)
  63.     optware_sync
  64.   ;;
  65.   sync)
  66.     optware_extend
  67.   ;;
  68.   *)
  69.     echo "Usage: $0 {start|stop|restart|mount|unmount|remount|install|uninstall|sync|extend}"
  70.     exit 1
  71.     ;;
  72. esac
  73. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement