diff options
| -rwxr-xr-x | data/openslx-install (renamed from data/openslx-ng-install) | 22 | ||||
| -rw-r--r-- | data/openslx-update | 54 | ||||
| -rw-r--r-- | remote/rootfs/rootfs-stage32/data/etc/systemd/system/mount-tmp.service | 4 | ||||
| l--------- | remote/rootfs/rootfs-stage32/data/etc/systemd/system/sysinit.target.wants/mount-tmp.service | 1 | ||||
| -rwxr-xr-x | remote/rootfs/rootfs-stage32/data/opt/openslx/bin/analyse-disk | 96 | ||||
| -rwxr-xr-x | remote/rootfs/rootfs-stage32/data/opt/openslx/bin/disk-tmp | 24 |
6 files changed, 125 insertions, 76 deletions
diff --git a/data/openslx-ng-install b/data/openslx-install index 7b8715b7..8d1c04db 100755 --- a/data/openslx-ng-install +++ b/data/openslx-install @@ -202,6 +202,12 @@ if [ "x$1" != "x--test" ] && check_password "root" "openslx-ng"; then done fi +if yesno "Soll die aktuellste stabile Version des MiniLinux nach der Einrichtung automatisch heruntergeladen werden?"; then + DOWNLOAD_ML=yes +else + DOWNLOAD_ML=no +fi + print "" print "Beginne Installation" @@ -269,11 +275,10 @@ HEREEND # NFS Config echo "$SLX_VM_PATH *(ro,async,insecure,no_root_squash,no_subtree_check)" > "/etc/exports" # End NFS Config - service samba restart - service nfs-kernel-server restart - # TODO: Persistent inbound blocking of tcp 139, udp 137,138 to speed up access from Windows Clients update-rc.d samba defaults update-rc.d nfs-kernel-server defaults + service samba restart + service nfs-kernel-server restart else # external NFS Server for VM Images is used. Disable NFS + Samba service samba stop service nfs-kernel-server stop @@ -282,6 +287,7 @@ else # external NFS Server for VM Images is used. Disable NFS + Samba update-rc.d nfs-kernel-server disable "$LEVEL" done fi +print "Dienste konfiguriert." # # ---- Create boottime system config ---- @@ -290,9 +296,19 @@ print "" print "Schreibe Bootzeit-Konfiguration für MiniLinux" cat > "/srv/openslx/www/config" << HEREEND SLX_VM_NFS='$SLX_VM_NFS' +SLX_HTTP_ADDR='http://$SLX_LOCAL_ADDR' HEREEND +if [[ "$DOWNLOAD_ML" == yes ]]; then + print "" + print "Lade aktuellste Version des MiniLinux herunter" + openslx-update +fi +print "" +print "Das MiniLinux kann jederzeit manuell durch den Befehl openslx-update aktualisiert werden." + SLX_LAST_INVOCATION="$(date)" save_defaults +print "" print "Einrichtung abgeschlossen." diff --git a/data/openslx-update b/data/openslx-update new file mode 100644 index 00000000..4f8da0f5 --- /dev/null +++ b/data/openslx-update @@ -0,0 +1,54 @@ +#!/bin/bash + +function print () +{ + echo -e "\033[01;29m$@\033[00m" +} + +function error () +{ + echo -e "\033[01;31m$@\033[00m" + exit 1 +} + +function warning () +{ + echo -e "\033[01;33m$@\033[00m" +} + +MIRROR="http://mltk.boot.openslx.org" +REMOTEINDEX="/tmp/mlversion" +LOCALINDEX="/opt/openslx/local_version" +WWWTEMP="/srv/openslx/www-temp" + +LOCAL_STABLE=0 +LOCAL_TESTING=0 +if [ -s "$LOCALINDEX" ]; then + . "$LOCALINDEX" || error "Fehler beim laden der lokalen Versionsinfirmationen aus $LOCALINDEX" +fi + +print "" +print "Lade Liste aktuell verfügbarer Versionen..." +rm -f "$REMOTEINDEX" +wget -O "$REMOTEINDEX" "$MIRROR/index" || error "Konnte Liste verfügbarer Releases nicht herunterladen." +. "$REMOTEINDEX" || error "Liste verfügbarer Releases Fehlerhaft (konnte $REMOTEINDEX nicht sourcen)" + +mkdir -p "$WWWTEMP" +mv /srv/openslx/www/openslx-* "$WWWTEMP/" +for REL in ${!AVAILABLE_*}; do + BRANCH="${REL#AVAILABLE_}" + print "Remote has branch $BRANCH" + PXELINE="" + for FILE in ${!REL}; do + PXELINE="$PXELINE http://" + if [ -s "$WWWTEMP/openslx-$FILE" ]; then + mv "$WWWTEMP/openslx-$FILE" "/srv/openslx/www/" + continue + fi + wget -O "$WWWTEMP/openslx-$FILE" "$MIRROR/files/$FILE" || warning "Could not download $FILE" + done + EXTRA="${BRANCH}_EXTRA" + for FILE in ${!EXTRA}; do + done +done + diff --git a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/mount-tmp.service b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/mount-tmp.service index 75e285e2..8a45bea1 100644 --- a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/mount-tmp.service +++ b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/mount-tmp.service @@ -1,7 +1,9 @@ [Unit] Description=Mount hard drive as tmp +Before=sysinit.target shutdown.target +DefaultDependencies=no [Service] Type=oneshot ExecStart=/opt/openslx/bin/analyse-disk -ExecStart=/opt/openslx/bin/disk-tmp +RemainAfterExit=yes diff --git a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/sysinit.target.wants/mount-tmp.service b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/sysinit.target.wants/mount-tmp.service new file mode 120000 index 00000000..8ebb27be --- /dev/null +++ b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/sysinit.target.wants/mount-tmp.service @@ -0,0 +1 @@ +../mount-tmp.service
\ No newline at end of file diff --git a/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/analyse-disk b/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/analyse-disk index 27c3f306..0afe4de8 100755 --- a/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/analyse-disk +++ b/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/analyse-disk @@ -14,92 +14,92 @@ ############################################################################# +export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/openslx/bin:/opt/openslx/sbin:/opt/openslx/usr/bin:/opt/openslx/usr/sbin" + # General formatter for the /tmp partition on a local harddisk diskfm () { -local target=$1 +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;; + *) modprobe "${fs}" && available=yes;; esac - if [ -n ${available} ]; then + 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 + if which "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}" + fi [ -n "$found" ] && break fi done } # Check for local harddisks and appropriate partitions -fdisk -l |sed -n "/^\/dev\//p" >/etc/disk.partition +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 +for hdpartnr in $(sed -n -e "/ 82 /p" "/etc/disk.partition" | 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 +for hdpartnr in $(sed -n -e "/ 44 /p" "/etc/disk.partition" | sed -e "s/[[:space:]].*//"); do # check for supported filesystem and formatter - ( if diskfm $hdpartnr ; then + 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 + echo -e "$hdpartnr\t/tmp\t\tnoauto\t\tdefaults\t 0 0" >> "/etc/fstab" + mkdir -p /tmptmp + mv /tmp/* /tmp/.* /tmptmp/ + mount "$hdpartnr" /tmp + chmod a+rwxt /tmp + mv /tmptmp/* /tmp/ + rmdir /tmptmp + break else - echo "formatting failed for some reason " >/tmp/tmpready - fi ) & - break + echo "formatting failed for some reason" + fi # Made this non-forking, systemd should handle it - 2013-05-28 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 + for hdpartnr in $(sed -n -e "/ ${partid} /p" "/etc/disk.partition" | sed -e "s/[[:space:]].*//"); do + mkdir -p "/media/${hdpartnr#/dev/*}" + if [ "${partid}" -eq 83 ]; then + echo -e "$hdpartnr\t/media/${hdpartnr#/dev/*}\tauto\t\tnoauto,noexec\t 0 0" >> "/etc/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 + echo -e "${hdpartnr}\t/media/${hdpartnr#/dev/*}\tauto\t\tnoauto\t\t 0 0" >> "/etc/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 + echo -e "${hdpartnr}\t/media/${hdpartnr#/dev/*}\tauto\t\tnoauto\t\t 0 0" >> "/etc/fstab" fi done done +mount -a + diff --git a/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/disk-tmp b/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/disk-tmp deleted file mode 100755 index 4378c45c..00000000 --- a/remote/rootfs/rootfs-stage32/data/opt/openslx/bin/disk-tmp +++ /dev/null @@ -1,24 +0,0 @@ -#!/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 -# -# Mount local ID44 partition to /tmp after all existing stuff is preserved - -############################################################################# - -# Check if ID44 is available by analysing /etc/fstab for appropriate entry -if cat /proc/mounts | grep -qe "/dev/.*/tmp" ; then - mkdir -p /run/tmp - mv /tmp/* /run/tmp - mount --bind /run/mount/tmp /tmp - umount /run/mount/tmp - mv /run/tmp/* /tmp - rmdir /run/tmp -fi |
