summaryrefslogblamecommitdiffstats
path: root/data/analyse-disk.sh
blob: 27c3f30648a16cffc09a6431e750cabc06994fc1 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
           









                                                                         

                                                                           


                                                                             


                                                              

          







                                                       
                                                                            
                                       














                                    
                                                            

                                               

        
                            




                                                      
                                                   













                                                                          
                                                                          
                                                                        
        
                                                              




























                                                                           
#!/bin/bash
# Copyright (c) 2013 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
#
# If you have any feedback please consult http://openslx.org/feedback and
# send your feedback to feedback@openslx.org
#
# General information about OpenSLX can be found under http://openslx.org
#
# Local hard disk autodetection script for OpenSLX linux stateless clients,
# detecting swap and special partitions

#############################################################################

# General formatter for the /tmp partition on a local harddisk
diskfm () {
local target=$1
local fs
local path
for fs in xfs ext3 ext2 ; do
  unset available
  case $(cat /proc/filesystems) in
    *${fs}*) available=yes;;
    *) modprobe -q ${fs} 2>/dev/null && available=yes;;
  esac
  if [ -n ${available} ]; then
    unset found
    for path in /sbin /bin /usr/sbin /usr/bin /openslx/sbin /openslx/bin; do
      if test -x /$path/mkfs.$fs ; then
        found=yes
        case mkfs.$fs in
          mkfs.xfs)
            fopt="-f"
            mopt="-o noexec"
          ;;
          mkfs.ext2)
            fopt="-Fq"
            mopt="-o nocheck,noexec"
          ;;
          mkfs.reiserfs)
            fopt="-f"
            mopt="-o noexec"
          ;;
        esac
        mkfs.$fs ${fopt} ${target} >/dev/null 2>&1 #|| error
        mkdir -p /run/mount/tmp
        mount -t ${fs} ${target} /run/mount/tmp
      fi
    done
    [ -n "$found" ] && break
  fi
done
}

# Check for local harddisks and appropriate partitions
fdisk -l |sed -n "/^\/dev\//p" >/etc/disk.partition

# Check for standard swap partitions and make them available to the system
for hdpartnr in $(cat /etc/disk.partition | \
    sed -n -e "/ 82 /p"|sed -e "s/[[:space:]].*//") ; do
  echo -e "$hdpartnr\tswap\t\tswap\t\tdefaults\t 0 0" >>/etc/fstab
done

# We use special non assigned partition type (id44) for harddisk scratch 
# space, thus no normal filesystem will be incidentally deleted or
# corrupted
for hdpartnr in $(cat /etc/disk.partition | \
    sed -n -e "/ 44 /p"|sed -e "s/[[:space:]].*//") ; do
  # check for supported filesystem and formatter
  ( if diskfm $hdpartnr ; then
      # echo "$hdpartnr is mounted to /mnt/tmp at $(sysup)" >/tmp/tmpready
      echo -e "$hdpartnr\t/tmp\t\tnoauto\t\tdefaults\t 0 0" >>/etc/fstab
    else
      echo "formatting failed for some reason " >/tmp/tmpready
    fi ) &
  break
done

# Put detected linux partitions (83) into /etc/fstab with "noauto", special
# partition 45 (persistent scratch) to /var/scratch and 46 to /var/openslx
for partid in 83 45 46 ; do
  for hdpartnr in $(cat /etc/disk.partition | \
      sed -n -e "/ ${partid} /p"|sed -e "s/[[:space:]].*//") ; do
    mkdir -p /media/${hdpartnr#/dev/*} 2>/dev/null
    if [ ${partid} -eq 83 ] ; then
      echo -e "$hdpartnr\t/media/${hdpartnr#/dev/*}\tauto\t\tnoauto,\
noexec\t 0 0" >>/tmp/fstab
    elif [ ${partid} -eq 45 ] ; then
      #mount -t auto ${hdpartnr} /media/${hdpartnr#/dev/*}
      #ln -sf /media/${hdpartnr#/dev/*} /var/scratch
      echo -e "${hdpartnr}\t/media/${hdpartnr#/dev/*}\tauto\t\tnoauto\
\t\t 0 0" >>/tmp/fstab
    elif [ ${partid} -eq 46 ] ; then
      # Mount a home directory to (/mnt)/var/home
      #mount -t auto ${hdpartnr} /mnt/media/${hdpartnr#/dev/*} \n\
      #test -d /mnt/media/${hdpartnr#/dev/*}/home && \
      #  ln -sf /media/${hdpartnr#/dev/*} /var/home
      echo -e "${hdpartnr}\t/media/${hdpartnr#/dev/*}\tauto\t\tnoauto\
\t\t 0 0" >>/tmp/fstab
    fi
  done
done