diff options
9 files changed, 125 insertions, 98 deletions
diff --git a/remote/modules/dnbd3/data/opt/openslx/scripts/systemd-setup_dnbd3 b/remote/modules/dnbd3/data/opt/openslx/scripts/systemd-setup_dnbd3 index f424e3b9..d41fe57e 100755 --- a/remote/modules/dnbd3/data/opt/openslx/scripts/systemd-setup_dnbd3 +++ b/remote/modules/dnbd3/data/opt/openslx/scripts/systemd-setup_dnbd3 @@ -1,9 +1,16 @@ #!/bin/sh -insmod /lib/modules/dnbd3/dnbd3.ko || exit 1 +if ! insmod /lib/modules/dnbd3/dnbd3.ko; then + slxlog "dnbd3-kernel" "Error loading dnbd3 client kernel module" + exit 1 +fi + [ -e "/dev/dnbd0" ] || exit 1 for i in /dev/dnbd*; do echo 8192 > "/sys/block/dnbd${i#/dev/dnbd}/queue/nr_requests" done + exec -- dnbd3-client --daemon +slxlog "dnbd3-daemon" "Error launching dnbd3-client daemon" +exit 1 diff --git a/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt b/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt index 5c85dfcd..0030eda1 100755 --- a/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt +++ b/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-run_virt @@ -180,18 +180,22 @@ DO_PROFILE="$(grep -c -E -i '<\s*profile\s*param="?(true|yes)"?' "$xmlfile")" # test if the xml file is valid if ! [ -r "${xmlfile}" ]; then writelog "${xmlfile} not a readable XML file!" + slxlog "virt-nonreadable-xml" "XML file not readable: $xmlfile" exit 1 fi # test if XML file -if ! grep '<?xml' "${xmlfile}" >/dev/null 2>&1; then +if ! grep -q '<?xml' "${xmlfile}"; then writelog "Submitted configuration file ${xmlfile} seems to have wrong XML format" + slxlog "virt-invalid-xml" "Malformed XML file: $xmlfile" "$xmlfile" exit 1 fi # check for running in graphical environment otherwise no much use here -[ -z "$DISPLAY" ] && echo -e "\n\tStart only within a graphical desktop!\n" \ -&& exit 1 +if [ -z "$DISPLAY" ]; then + echo -e "\n\tStart only within a graphical desktop!\n" + exit 1 +fi ################################################################################ ### Logo for console @@ -219,8 +223,8 @@ writelog "\tXML file:\t\t${xmlfile}" writelog "VM config:" # Name of the virt image -imgname=$(grep -io '<image_name param=.*"' "${xmlfile}" \ -| sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }') +imgname=$(grep -io '<image_name param=.*"' "${xmlfile}" | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }') + ## Added for persistent support. if [[ "$userBranchFilePath" ]]; then imgname="$userBranchFilePath" @@ -228,13 +232,13 @@ fi ## # Imagename /w full path -if echo "${imgname}" 2>/dev/null | grep -q '^/' >/dev/null 2>&1; then +if echo "${imgname}" | grep -q '^/'; then imgpath="$(dirname "${imgname}")" imgname="$(basename "${imgname}")" vmpath="${imgpath}/${imgname}" # If old vmchooser binary stuff # We do not need folder name as it is already included by vmchooser -elif echo "${xmlfile}" 2>/dev/null | grep -q '^/tmp/' >/dev/null 2>&1; then +elif echo "${xmlfile}" | grep -q '^/tmp/'; then vmpath="$imgname" imgname="$(basename "${imgname}")" ## Added for persistent support. @@ -265,9 +269,7 @@ xmlvirt=$(grep -o 'virtualmachine param=.*"' "${xmlfile}" \ | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') # choose the proper virtualization/emulator plugin -[ "x${xmlvirt}" != "x" -a "x${xmlvirt}" != "xqemukvm" -a \ -"x${xmlvirt}" != "xvirtualbox" -a "x${xmlvirt}" != "xvmware" ] && \ -xmlvirt="emufe" +[ "x${xmlvirt}" != "x" -a "x${xmlvirt}" != "xqemukvm" -a "x${xmlvirt}" != "xvirtualbox" -a "x${xmlvirt}" != "xvmware" ] && xmlvirt="emufe" # make a guess from the filename extension if ${xmlvirt} is empty # (not set within the XML file) @@ -308,23 +310,18 @@ if [ -z "${xmlvirt}" ] && [ -n "${additional_config}" ]; then fi # Definition of the client system -vmostype=$(grep -io '<os param=.*"' "${xmlfile}" | awk -F '"' '{ print $2 }' |\ -tr "[A-Z]" "[a-z]") +vmostype=$(grep -io '<os param=.*"' "${xmlfile}" | awk -F '"' '{ print $2 }' | tr "[A-Z]" "[a-z]") # Definition of the networking the client system is connected to -network_kind=$(grep -io '<network param=.*"' "${xmlfile}" \ -| awk -F '"' '{ print $2 }' | tr "[A-Z]" "[a-z]") -network_card=$(grep -io '<netcard param=.*"' "${xmlfile}" \ -| awk -F '"' '{ print $2 }'| tr "[A-Z]" "[a-z]") +network_kind=$(grep -io '<network param=.*"' "${xmlfile}" | awk -F '"' '{ print $2 }' | tr "[A-Z]" "[a-z]") +network_card=$(grep -io '<netcard param=.*"' "${xmlfile}" | awk -F '"' '{ print $2 }'| tr "[A-Z]" "[a-z]") # Set redirects to 0, see vmgrid if you want to define some redirects=0 # Serial/parallel ports defined (e.g. "ttyS0" or "autodetect") -serial=$(grep -io '<serialport param=.*"' "${xmlfile}" \ -| awk -F '"' '{ print $2 }') -parallel=$(grep -io '<parport param=.*"' "${xmlfile}" \ -| awk -F '"' '{ print $2 }') +serial=$(grep -io '<serialport param=.*"' "${xmlfile}" | awk -F '"' '{ print $2 }') +parallel=$(grep -io '<parport param=.*"' "${xmlfile}" | awk -F '"' '{ print $2 }') writelog "\tVirtualization:\t\t$xmlvirt" writelog "\tVM name:\t\t$vm_name" @@ -367,30 +364,31 @@ if [ -n "$mainvirtmem" ]; then fi hostmem="$[ $totalmem - $mem ]" -# Configuring ethernet mac address: first 3 bytes are fixed (00:50:56) -# 4th byte is the VM-ID (0D) -# last two bytes are taken from the bridge of the host -# define one MAC per guest +# TODO: We should only generate the suffix here (last 3 octets) as the first 3 are +# dependant on the virtualizer/emulator. Check if any run-virt.include still relies on +# $macguestpart/$macaddr. If so, fix it to use its specific first 3 bytes +# and append $macaddrssuffix macguestpart="00:50:56:${VM_ID}" machostpart=$(echo "${hostmacaddr}" | awk -F ":" '{print $(NF-1)":"$NF}') macaddr=$(echo "${macguestpart}:${machostpart}" | tr "[a-z]" "[A-Z]") macaddrsuffix=$(echo "${VM_ID}:${machostpart}" | tr "[a-z]" "[A-Z]") +if ! echo "$macaddrsuffix" | grep -q -E '^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$'; then + slxlog "virt-mac" "Could not properly generate mac address suffix (got $macaddrsuffix)" +fi + # Virtual fd/cd/dvd and drive devices, floppy b: for configuration # if $floppy_0 from run-virt.include set then fdtest="TRUE" -fdtest= fdtest=${floppy_0:+"TRUE"} # if $fdtest not set floppy0="FALSE", else "TRUE" floppy0=${fdtest:-"FALSE"} floppy1="TRUE" floppy1name="$VMCHOOSER_DIR/data/loopimg/fd.img" # if $cdrom_0 from run-virt.include set then cdtest="TRUE" -cdtest= cdtest=${cdrom_0:+"TRUE"} # if $cdtest not set cdrom0="FALSE", else "TRUE" cdrom0=${cdtest:-"FALSE"} # if $cdrom_1 from run-virt.include set then cdtest="TRUE" -cdtest= cdtest=${cdrom_1:+"TRUE"} # if $cdtest not set cdrom1="FALSE", else "TRUE" cdrom1=${cdtest:-"FALSE"} @@ -405,8 +403,7 @@ remotedesktopport="590${VM_ID}" # Enable 3D -enable3d=$(grep -i "<enable3d param=.*" ${xmlfile} 2>/dev/null | \ -awk -F '=' {'print $2'} | tr "[A-Z]" "[a-z]") +enable3d=$(grep -i "<enable3d param=.*" ${xmlfile} 2>/dev/null | awk -F '=' '{print $2}' | tr "[A-Z]" "[a-z]") # Add rw share sharepath="${HOME}/PERSISTENT" @@ -427,19 +424,12 @@ else VOL="80%" fi # Adjust sound volume -#writelog "Unmuting sound...\c " amixer -q sset Master "$VOL" unmute 2>/dev/null amixer -q sset PCM "$VOL" unmute 2>/dev/null amixer -q sset CD "$VOL" unmute 2>/dev/null amixer -q sset Headphone "$VOL" unmute 2>/dev/null amixer -q sset Front "$VOL" unmute 2>/dev/null # in SUSE 11.0 it's headphone amixer -q sset Speaker "$VOL" unmute 2>/dev/null # annoying built-in speaker -#writelog "finished\n" - -# Load kvm modules -if [ "$vtflag" = "1" -a -n "$kvm_module" ]; then - modprobe "$kvm_module" -fi # # # # # # Start printer daemon # # # # # # # @@ -449,13 +439,12 @@ QUEUE="STANDARD" # Start the lpdaemon listening on the given port tcpsvd -E 0.0.0.0 5515 \ - lpd "$SPOOLDIR" \ - sh -c "printergui $USER $SPOOLDIR/$QUEUE/\$DATAFILE" & + lpd "$SPOOLDIR" \ + sh -c "printergui $USER $SPOOLDIR/$QUEUE/\$DATAFILE" & # PID to kill the process PID_LPD="$!" - # Copy guest configuration (with added information) config.xml to be accessed # via virtual floppy cp "$xmlfile" "$VMCHOOSER_DIR/fd-loop/config.xml" @@ -483,7 +472,10 @@ if [ -n "$SLX_DNBD3_SERVERS" -o -n "$SLX_DNBD3_PRIO_SERVERS" ] && [ "x$SLX_VM_DN break fi done - [ -z "$vm_diskfile" ] && writelog "No working dnbd3 server found :-(" + if [ -z "$vm_diskfile" ]; then + slxlog "virt-dnbd3" "No dnbd3 server for ${vmpath#/mnt/vmstore/} found ($SLX_DNBD3_PRIO_SERVERS $TMP_SERVERS), trying NFS..." + writelog "No working dnbd3 server found :-(" + fi else writelog "Won't use dnbd3 as it's not loaded, or the daemon is not running..." fi @@ -499,20 +491,27 @@ fi # Check if virtual machine container file exists if ! [ -e "${vmpath}" ]; then + slxlog "virt-missing-image" "VM image $vmpath not found!" writelog "Virtual machine image ${vmpath} not found!" - exit 1 + cleanexit 1 fi writelog "Used diskfile: $vm_diskfile" # Get all virtual machine specific stuff from the respective include file if [ ! -e "$VMCHOOSER_DIR/$xmlvirt/run-virt.include" ] ; then + # TODO: Tell user + slxlog "virt-plugin-missing" "Could not find run-virt.include for $xmlvirt" writelog "Failed because of missing ${xmlvirt} plugin." cleanexit 1 fi self="${xmlvirt}" -. "$VMCHOOSER_DIR/$xmlvirt/run-virt.include" || writelog "Erroneous run-virt.include for $xmlvirt" +if ! . "$VMCHOOSER_DIR/$xmlvirt/run-virt.include"; then + slxlog "virt-plugin-error" "run-virt.include for $xmlvirt could not be sourced (contains syntax errors?)" "$xmlvirt" + writelog "Erroneous run-virt.include for $xmlvirt" +fi + # start a windowmanager for easier handling # (expect problems w/ windows opening in background w/ vmware without wm) for dm in openbox kwin xfwm4 metacity blackbox twm fvwm2 ; do @@ -526,13 +525,22 @@ for dm in openbox kwin xfwm4 metacity blackbox twm fvwm2 ; do break fi done + # Start poolvideoswitch if we find the autostarter file #if [ -e /etc/xdg/autostart/pvsgui.desktop ]; then # /usr/local/bin/pvsgui -p 2 -b >/dev/null 2>&1 & #fi + if [[ "$DO_PROFILE" -ge "1" ]]; then - wget "http://132.230.8.113/profile/do.php?action=start" + wget "http://132.230.8.113/profile/do.php?action=start" & +fi + +# Check if tcpsvd is running. Do this down here so we do not check immediately after trying to spawn it, +# as this could result in success even if it's not really working +if ! kill -0 "$PID_LPD"; then + slxlog "virt-lpd" "Could not start tcpsvd/lpd for virtual machine session" fi + # This will start the VM eval ${VIRTCMD} ${VIRTCMDOPTS} # diff --git a/remote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env b/remote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env index 5f26eadd..dc60e3d5 100755 --- a/remote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env +++ b/remote/modules/vmware/data/opt/openslx/scripts/systemd-vmware_env @@ -22,7 +22,7 @@ done #source config file . "/opt/openslx/config" -. "${VMWARE_CONF_DIR}/vmware.conf" +. "${VMWARE_CONF_DIR}/vmware.conf" || slxlog "vmware-conf" "Could not source '${VMWARE_CONF_DIR}/vmware.conf' in $0" "${VMWARE_CONF_DIR}/vmware.conf" vm_dhcpd() { @@ -145,20 +145,22 @@ setup_network() { # they are not created automatically via module load for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \ "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do - mknod "$i" + mknod $i # no "" done chmod 0700 /dev/vmnet* } -load_modules () { +load_modules () { + local FAILED="" # VMplayer common stuff - insmod /lib/modules/vmware/vmmon.ko - insmod /lib/modules/vmware/vmnet.ko + insmod /lib/modules/vmware/vmmon.ko || FAILED="$FAILED vmmon" + insmod /lib/modules/vmware/vmnet.ko || FAILED="$FAILED vmnet" # VMplayer 3.X specific stuff - insmod /lib/modules/vmware/vmci.ko - insmod /lib/modules/vmware/vmblock.ko - insmod /lib/modules/vmware/vsock.ko + insmod /lib/modules/vmware/vmci.ko || FAILED="$FAILED vmci" + insmod /lib/modules/vmware/vmblock.ko || FAILED="$FAILED vmblock" + insmod /lib/modules/vmware/vsock.ko || FAILED="$FAILED vsock" + [ -n "$FAILED" ] && slxlog "vmware-insmod" "Error loading vmware kernel module(s) $FAILED" } unload_modules () { @@ -166,44 +168,47 @@ unload_modules () { } vmnetif () { -# let point the path directly to the directory where the binary lives -location="/usr/bin" -if [ -n "$vmnet0" ] ; then - # the path might be directly point to the plugin dir - $location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid -n 0 -fi -if [ -n "$vmnet1" ] ; then - $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid \ - /dev/vmnet1 vmnet1 - ip addr add $vmnet1 dev vmnet1 - ip link set vmnet1 up - if [ -n "$vmnet1nat" ] ; then - echo "1" >/proc/sys/net/ipv4/conf/vmnet1/forwarding - echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null - fi - /opt/openslx/usr/sbin/udhcpd \ - -S /etc/vmware/udhcpd/udhcpd-vmnet1.conf -fi -if [ -n "$vmnet8" ] ; then - $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid \ - /dev/vmnet8 vmnet8 - ip addr add $vmnet8 dev vmnet8 - ip link set vmnet8 up - echo "1" >/proc/sys/net/ipv4/conf/vmnet8/forwarding - echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null - iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE - # /etc/vmware/vmnet-natd-8.mac simply contains a mac like 00:50:56:F1:30:50 - $location/vmnet-natd -d /var/run/vmnet-natd-8.pid \ - -m /etc/vmware/vmnet-natd-8.mac -c /etc/vmware/nat.conf # or logfile - /opt/openslx/usr/sbin/udhcpd \ - -S /etc/vmware/udhcpd/udhcpd-vmnet8.conf -fi - + # let point the path directly to the directory where the binary lives + location="/usr/bin" + if [ -n "$vmnet0" ] ; then + # the path might be directly point to the plugin dir + if ! $location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid -n 0; then + slxlog "vmware-bridge" "Launching $location/vmnet-bridge failed." + fi + fi + if [ -n "$vmnet1" ] ; then + if ! $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid /dev/vmnet1 vmnet1; then + slxlog "vmware-netifup" "Launching $location/vmnet-netifup for vmnet1 failed." + fi + ip addr add $vmnet1 dev vmnet1 + ip link set vmnet1 up + if [ -n "$vmnet1nat" ] ; then + echo "1" >/proc/sys/net/ipv4/conf/vmnet1/forwarding + echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null + fi + /opt/openslx/usr/sbin/udhcpd -S /etc/vmware/udhcpd/udhcpd-vmnet1.conf + fi + if [ -n "$vmnet8" ] ; then + if ! $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid /dev/vmnet8 vmnet8; then + slxlog "vmware-netifup" "Launching $location/vmnet-netifup for vmnet8 failed." + fi + ip addr add $vmnet8 dev vmnet8 + ip link set vmnet8 up + echo "1" >/proc/sys/net/ipv4/conf/vmnet8/forwarding + echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null + iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE + # /etc/vmware/vmnet-natd-8.mac simply contains a mac like 00:50:56:F1:30:50 + if ! $location/vmnet-natd -d /var/run/vmnet-natd-8.pid -m /etc/vmware/vmnet-natd-8.mac -c /etc/vmware/nat.conf; then + slxlog "vmware-natd" "Launching $location/vmnet-natd for vmnet8 failed." + fi + /opt/openslx/usr/sbin/udhcpd -S /etc/vmware/udhcpd/udhcpd-vmnet8.conf + fi } vmblock () { -# let point the path directly to the directory where the binary lives - /usr/bin/vmware-usbarbitrator + if ! /usr/bin/vmware-usbarbitrator; then + slxlog "vmware-usbarb" "Launching /usr/bin/vmware-usbarbitrator failed." + fi } diff --git a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include index 2e7aeaf5..2de41d77 100644 --- a/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include +++ b/remote/modules/vmware/data/opt/openslx/vmchooser/vmware/run-virt.include @@ -543,6 +543,9 @@ case "${hddrv}" in ide="FALSE" scsi="TRUE" ;; + *) + slxlog "virt-vmware-hdd" "vmware: Unknown HDD adapter type $hddrv" + ;; esac # write configuration files @@ -564,12 +567,13 @@ runvmwareconfheader ln -s "$conffile" "$redodir/run-vmware.conf" >/dev/null 2>&1 # sync is needed to ensure that data is really written to virtual disk +# TODO: Move to general run-virt, right before exec of vm sync # own nvram. We need it for floppy drive b, default nvram has just drive a -# TODO: optimize, currently kinda inefficient, too much copys, but we -# don't know which one is installed... -cp "/opt/openslx/vmchooser/vmware/nvram" "$confdir/nvram" 2>/dev/null +if ! cp "/opt/openslx/vmchooser/vmware/nvram" "$confdir/nvram"; then + slxlog "virt-vmware-nvram" "Could not copy nvram from '/opt/openslx/vmchooser/vmware/nvram' '$confdir/nvram'" +fi # logging and stdout @@ -588,11 +592,10 @@ writelog "\tConfdir:\t${confdir}" writelog "\tConffile:\t${conffile}" writelog "\tRedodir:\t${redodir}" writelog "\tVMhome:\t\t${vmhome}" -writelog "\t/tmp info: \ -$(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')" +writelog "\t/tmp info: $(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')" # hw setup writelog "Hardware:" -writelog "\tMAC:\t\t00:50:56:${VM_ID}:${machostpart}" +writelog "\tMAC:\t\t00:50:56:$macaddrsuffix" # TODO: Make var at top for this, it's hard coded twice if [ -n "${network_card}" ]; then writelog "\tNet Adaptor:\t${network_card}" fi @@ -642,3 +645,4 @@ cp "$conffile" "/tmp/vmware-last-config" VIRTCMD="/opt/openslx/bin/vmplayer" VIRTCMDOPTS="${vmopt} ${conffile}" RMDIRS="${redodir} ${conffile}" + diff --git a/remote/modules/vmware/vmware.build b/remote/modules/vmware/vmware.build index 85929c17..29b7491f 100644 --- a/remote/modules/vmware/vmware.build +++ b/remote/modules/vmware/vmware.build @@ -40,7 +40,9 @@ build() { cp -r ./$SRCDIR/vmware-usbarbitrator/bin "$MODULE_BUILD_DIR/usr/" || perror "Could not copy bin from vmware-usbarbitrator." cp -r ./$SRCDIR/vmware-vmx/{bin,etc,sbin} "$MODULE_BUILD_DIR/usr/" || perror "could not copy bin,etc,sbin to usr for vmare-vmx." cp -r ./$SRCDIR/vmware-vmx/lib/{bin,icu,lib,libconf,scripts} "$TARGET" || perror "Could not copy many things from vmware-vmx." - [ -d "./$SRCDIR/vmware-workstation-server" ] && cp -r ./$SRCDIR/vmware-workstation-server/{bin,lib} "$TARGET" || perror "Could not copy many things from vmware-workstation-server." + if [ -d "./$SRCDIR/vmware-workstation-server" ]; then + cp -r ./$SRCDIR/vmware-workstation-server/{bin,lib} "$TARGET" || perror "Could not copy many things from vmware-workstation-server." + fi [ ! -L "$TARGET/bin/vmplayer" ] && { ln -s /usr/lib/vmware/bin/appLoader "$TARGET/bin/vmplayer" || perror "Could not link vmplayer to appLoader."; } chmod +x "$TARGET"/bin/* chmod u+s "$TARGET"/bin/vmware-vmx* || perror "Error setting suid-bit on vmware-vmx*" diff --git a/remote/modules/vmware/vmware.conf b/remote/modules/vmware/vmware.conf index 11b7ca71..b040152e 100644 --- a/remote/modules/vmware/vmware.conf +++ b/remote/modules/vmware/vmware.conf @@ -1,4 +1,4 @@ REQUIRED_DIRECTORIES="/etc /usr" -REQUIRED_DOWNLOAD_BASE="http://softwareupdate.vmware.com/cds/vmw-desktop/ws/10.0.0/1295980/linux/core/" +REQUIRED_DOWNLOAD_BASE="http://softwareupdate.vmware.com/cds/vmw-desktop/ws/10.0.1/1379776/linux/core/" REQUIRED_TYPE="workstation" diff --git a/remote/rootfs/rootfs-stage32/data/bin/sh b/remote/rootfs/rootfs-stage32/data/bin/sh new file mode 120000 index 00000000..f8c409b1 --- /dev/null +++ b/remote/rootfs/rootfs-stage32/data/bin/sh @@ -0,0 +1 @@ +/opt/openslx/bin/ash
\ No newline at end of file diff --git a/remote/rootfs/rootfs-stage32/rootfs-stage32.build b/remote/rootfs/rootfs-stage32/rootfs-stage32.build index 1b1b190b..cdb73342 100644 --- a/remote/rootfs/rootfs-stage32/rootfs-stage32.build +++ b/remote/rootfs/rootfs-stage32/rootfs-stage32.build @@ -93,9 +93,6 @@ post_copy() { # link /etc/mtab, needed for systemd [ ! -e "${TARGET_BUILD_DIR}/etc/mtab" ] && ln -s "/proc/self/mounts" "${TARGET_BUILD_DIR}/etc/mtab" - # need a /bin/sh - [ ! -e "$TARGET_BUILD_DIR/bin/sh" ] && ln -s "bash" "$TARGET_BUILD_DIR/bin/sh" - # passwd, group, shadow init_users_and_groups diff --git a/server/blacklists/essential/linux-extended b/server/blacklists/essential/linux-extended index 8cf0c95a..3aed0dac 100644 --- a/server/blacklists/essential/linux-extended +++ b/server/blacklists/essential/linux-extended @@ -18,3 +18,6 @@ - /usr/sbin/busybox - /usr/local/bin/busybox - /usr/local/sbin/busybox +# MOTD updater (tty/ssh login) pretty annoying as it tells you about available updates on ubuntu etc. +- /etc/update-motd.d/** + |
