diff options
Diffstat (limited to 'data/analyse-disk.sh')
| -rw-r--r-- | data/analyse-disk.sh | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/data/analyse-disk.sh b/data/analyse-disk.sh new file mode 100644 index 00000000..0c152dbf --- /dev/null +++ b/data/analyse-disk.sh @@ -0,0 +1,120 @@ +#!/bin/sh +# 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 autoconfiguration script for OpenSLX linux stateless +# clients, detecting swap and special partitions + +############################################################################# + +# Todo: +# * This script should be run just once per boot! +# * The activation of swap could/should be handled in separate script!? +# * The mounting of /tmp could/should be done separately? +# * Same for other partitions, use information of /etc/fstab for that? +# * Should we just install xfs in the source system and boil down everything +# onto that? + +# General formatter for the /tmp partition on a local harddisk +diskfm () { +local target=$1 +local mntpnt=$2 +local fs +local path +for fs in xfs reiserfs ext2 ; do + if strinfile "$fs" /proc/filesystems || modprobe ${MODPRV} $fs ; then + unset $found + for path in /sbin /bin /usr/sbin /usr/bin ; do + if test -x /mnt/$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 + if [ -z $mntpnt ] ; then + umount /tmp 2>/dev/null + if mount -t $fs -n $mopt $target /tmp 2>/dev/null; then + return 0 + else + mount -n -t tmpfs none /tmp + fi + else + mkdir -p $mntpnt + mount -t $fs -n -o loop $target $mntpnt 2>/dev/null + return 0 + fi + fi + done + [ -z $found ] && continue + else break + fi +done +} + +# Check for local harddisks and appropriate partitions +fdisk -l /dev/$hd|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\tauto\t\tdefaults\t 0 0" >>/etc/fstab + else + echo "formatting failed for some reason ($(sysup))" >/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 + |
