blob: 6f3013eee82dfbaaf19d4bd5223022d972055963 (
plain) (
tree)
|
|
#!/bin/ash
# -----------------------------------------------------------------------------
#
# Copyright (c) 2014..2018 bwLehrpool-Projektteam
#
# This program/file is free software distributed under the GPL version 2.
# See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
#
# If you have any feedback please consult https://bwlehrpool.de and
# send your feedback to support@bwlehrpool.de.
#
# General information about bwLehrpool can be found at https://bwlehrpool.de
#
# -----------------------------------------------------------------------------
# Partition IDs
# Prefix for all partitions is 0FC63DAF-8483-4772-8E79-9999999999
# Suffix:
# 44: non-persistent scratch partition
# 45: persistent partition
# 46: non-persistent openslx partition for config, overlayfs and qcow images
# We use special non assigned partition type for harddisk scratch
# space, thus no normal filesystem will be incidentally deleted or
# corrupted
PREFIX=/mnt
# Set disks to none
ID44=
ID45=
ID46=
# Mountpoints
ID44MNT=/tmp
ID45MNT=/opt/openslx/mnt/persistent
ID46MNT=/opt/openslx/mnt/non-persistent
# General formatter for the /tmp partition on a local harddisk
diskfm () {
mopt="" # Global var!
local target="$1"
local fslist="xfs jfs ext4"
local fs
local path
[ $# -ge 2 ] && fslist="$2"
for fs in $fslist ; do
unset available
case $(cat /proc/filesystems) in
*${fs}*) available=yes;;
*) modprobe "${fs}" && available=yes;;
esac
if [ -n "${available}" ]; then
unset found
if which "mkfs.$fs" ; then
found=yes
case "mkfs.$fs" in
mkfs.xfs)
fopt="-fq"
;;
mkfs.jfs)
fopt="-q"
;;
mkfs.ext4)
fopt="-Fq"
;;
esac
mkfs.$fs ${fopt} "${target}"
fi
[ -n "$found" ] && break
fi
done
}
# Format and mount ID44 (/tmp)
mount_id44 () {
HAVE_TMP=no
if echo $ID44 | grep -q '/dev/disk/'
then
# check for supported filesystem and formatter
if diskfm $ID44; then
mkdir -p $PREFIX$ID44MNT
if mount -t auto "$ID44" "$PREFIX$ID44MNT" 2>/dev/null
then
chmod a+rwxt $PREFIX$ID44MNT
echo -e "$ID44\t$ID44MNT\tauto\tnoexec\t0 0" >> "/etc/fstab"
HAVE_TMP=yes
else
echo "Could not mount partition $ID44"
fi
else
echo "Could not format partition $ID44"
fi
fi
}
# Mount persistent partition 45
mount_id45 () {
HAVE_PERSISTENT=no
if echo $ID45 | grep -q '/dev/disk/'
then
mkdir -p $PREFIX$ID45MNT
if mount -t auto "$ID45" "$PREFIX$ID45MNT" 2>/dev/null
then
echo -e "$ID45\t$ID45MNT\tauto\tnoauto\t0 0" >> "/etc/fstab"
HAVE_PERSISTENT=yes
else
echo "Could not mount persistent partition $ID45"
fi
fi
}
# Mount non-persistent partition 46
mount_id46 () {
HAVE_NONPERSISTENT=no
if echo $ID46 | grep -q '/dev/disk/'
then
# check for supported filesystem and formatter
if diskfm $ID46; then
mkdir -p $PREFIX$ID46MNT
if mount -t auto -o noexec "$ID46" "$PREFIX$ID46MNT" 2>/dev/null
then
echo -e "$ID46\t$ID46MNT\tauto\tnoauto,noexec\t0 0" >> "/etc/fstab"
HAVE_NONPERSISTENT=yes
else
echo "Could not mount non-persistent partition $ID46"
fi
else
echo "Could not format partition $ID44"
fi
fi
}
# Get partition types
hdisks=$(ls /dev/disk/by-path/*-part[0-9]* \
| sed -re "s,(.*)-part[0-9]*,\1," \
| sort -u)
if echo $hdisks | grep -q '/dev/disk/'
then
for hd in $(echo $hdisks)
do
upartid=$(sgdisk -p $hd 2>/dev/null | awk '$6~/FFFF/ {print $1}')
for upt in $(echo $upartid)
do
echo "${hd}-part${upt} $(sgdisk -i $upt $hd)" \
| awk '$5 ~ /0FC63DAF-8483-4772-8E79-[0]{10}4[4-6]/ \
{print $5 "=" $1}' \
| sed -re "s,0FC63DAF-8483-4772-8E79-[0]{10},ID," \
>> /etc/hdisks.conf
done
done
[ -r /etc/hdisks.conf ] && . /etc/hdisks.conf
fi
|