#!/bin/sh export PATH=$PATH:/opt/openslx/bin:/opt/openslx/sbin:/opt/openslx/usr/bin:/opt/openslx/usr/sbin #source config file with vars (e.g. ipaddr, macaddr, hostname) . /opt/openslx/config #from plugins/vmchooser/40-started-hw-config/run-virt.sh #TODO: extra systemd-service for hwinfo hwinfo --cdrom | grep -i "Device File:" | awk {'print $3'} >/etc/openslx/hwinfo.cdrom hwinfo --floppy | grep -i "Device File:" | awk {'print $3'} >/etc/openslx/hwinfo.floppy #from plugins/vmchooser/XX_vmchooser.sh VMCHOOSER_CONF_DIR=/opt/openslx/etc/vmchooser mkdir -p ${VMCHOOSER_CONF_DIR}/loopimg mkdir -p ${VMCHOOSER_CONF_DIR}/fd-loop -m 1777 # mount a clean tempfs (bug in UnionFS prevents loopmount to work) grep -qE "unionfs |aufs " /proc/mounts && \ mount -n -o size=1500k -t tmpfs vm-loopimg ${VMCHOOSER_CONF_DIR}/loopimg # create an empty floppy image of 1.4MByte size dd if=/dev/zero of=${VMCHOOSER_CONF_DIR}/loopimg/fd.img count=2880 bs=512 2>/dev/null chmod 0777 ${VMCHOOSER_CONF_DIR}/loopimg/fd.img # use dos formatter copied into stage3 mkdosfs ${VMCHOOSER_CONF_DIR}/loopimg/fd.img >/dev/null 2>&1 #|| error mount -n -t msdos -o loop,umask=000 ${VMCHOOSER_CONF_DIR}/loopimg/fd.img \ ${VMCHOOSER_CONF_DIR}/fd-loop #pvs integration #if [ $vmchooser_pvs -ne 0 ]; then # sed -i /usr/share/xsessions/default.desktop \ # -e "s,vmchooser$,vmchooser --pvs," #fi # setup more scratch space for virtual machines, if configured mkdir -p /tmp/virt mkdir -p /var/log/samba # enable normal users to setup the extended virtual machine redo file space # and image source via network block device (NBD only at the moment) # allow to start/stop samba on virtual devices (latter one ignores multiple # independent daemons) #cat >> /mnt/etc/sudoers << EOF # allow to start and stop the special /tmp redo file space (RAM + NBD/NFS server RAID) #ALL ALL=NOPASSWD: /sbin/losetup /dev/loop* #ALL ALL=NOPASSWD: /sbin/mdadm -C /dev/md0 -l linear --raid-devices=2 /dev/loop* /dev/* #ALL ALL=NOPASSWD: /opt/openslx/rootfs/usr/sbin/nbd-client * * /dev/nbd* # allow to configure and start/stop samba services #ALL ALL=NOPASSWD: /opt/openslx/rootfs/bin/sed -i /etc/*/smb.conf -e * #ALL ALL=NOPASSWD: /usr/sbin/nmbd -s /etc/*/smb.conf #ALL ALL=NOPASSWD: /usr/sbin/smbd -s /etc/*/smb.conf #ALL ALL=NOPASSWD: /opt/openslx/rootfs/usr/bin/killall nmbd smbd #EOF #from plugins/vmchooser/80-after-plugins/virtualization.sh # change free mem mem_free=$(grep -i "^memfree:" /proc/meminfo | awk '{print $2}') mem_cached=$(grep -i "^cached:" /proc/meminfo | awk '{print $2}') mem_swapcached=$(grep -i "^swapcached:" /proc/meminfo | awk '{print $2}') [ -z "$mem_free" ] && mem_free="2048000" [ -z "$mem_cached" ] && mem_cached="0" [ -z "$mem_swapcached" ] && mem_swapcached="0" totalmem="$[ ( $mem_free + $mem_cached + $mem_swapcached ) / 1024 ]" echo "totalmem=${totalmem}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf # cpu cores CPU_CORES=$(grep '^processor.*:' /proc/cpuinfo | wc -l) if [ "${CPU_CORES}" -gt "1" 2>/dev/null ]; then echo "cpu_cores=${CPU_CORES}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf else echo 'cpu_cores=1' >> ${VMCHOOSER_CONF_DIR}/virtualization.conf fi # arch echo "host_arch=$(uname -m)" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf # VT enabled cpu? if grep -q ^flags.*\\\ /proc/cpuinfo; then echo "vtflag=1" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf echo 'kvm_module="kvm_intel"' >> ${VMCHOOSER_CONF_DIR}/virtualization.conf elif grep -q ^flags.*\\\ /proc/cpuinfo; then echo "vtflag=1" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf echo 'kvm_module="kvm_amd"' >> ${VMCHOOSER_CONF_DIR}/virtualization.conf else echo "vtflag=0" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf fi # write mac if [ -n "$SLX_PXE_MAC" ]; then echo "hostmacaddr=${SLX_PXE_MAC}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf else ## Fallback: echo "hostmacaddr=$(ip a | grep ether | grep -o -E -i '([0-9a-f]{2}:){5}[0-9a-f]{2}' | head -n 1)" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf fi # ip addr echo "hostip=${SLX_PXE_CLIENT_IP}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf # hostname echo "hostname=${SLX_HOSTNAME}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf # get further hw information j=0 for i in $(cat /etc/openslx/hwinfo.cdrom); do echo "cdrom_$j=$i" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf j=$(expr $j + 1) done j=0 for i in $(cat /etc/openslx/hwinfo.floppy); do echo "floppy_$j=$i" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf j=$(expr $j + 1) done