blob: 27c3f30648a16cffc09a6431e750cabc06994fc1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#!/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
|