diff options
Diffstat (limited to 'lava-slave-base')
-rw-r--r-- | lava-slave-base/Dockerfile | 44 | ||||
-rw-r--r-- | lava-slave-base/scripts/lava-slave | 98 | ||||
-rwxr-xr-x | lava-slave-base/scripts/start.sh | 46 | ||||
-rwxr-xr-x | lava-slave-base/scripts/stop.sh | 3 |
4 files changed, 191 insertions, 0 deletions
diff --git a/lava-slave-base/Dockerfile b/lava-slave-base/Dockerfile new file mode 100644 index 0000000..17286ca --- /dev/null +++ b/lava-slave-base/Dockerfile @@ -0,0 +1,44 @@ +FROM bitnami/minideb:stretch + +RUN apt-get update + +# e2fsprogs is for libguestfs +RUN \ + echo 'lava-server lava-server/instance-name string lava-slave-instance' | debconf-set-selections && \ + echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections && \ + echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections && \ + DEBIAN_FRONTEND=noninteractive apt-get -y install \ + locales \ + vim \ + sudo \ + python-setproctitle \ + tftpd-hpa \ + u-boot-tools \ + device-tree-compiler \ + qemu-system \ + qemu-system-arm \ + qemu-system-i386 \ + xnbd-server \ + e2fsprogs + +RUN if [ "$(uname -m)" = "x86_64" -o "$(uname -m)" = "x86" ] ;then apt-get -y install qemu-kvm ; fi + +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install wget gnupg +RUN wget http://images.validation.linaro.org/production-repo/production-repo.key.asc +RUN apt-key add production-repo.key.asc +RUN echo 'deb http://images.validation.linaro.org/production-repo/ stretch-backports main' > /etc/apt/sources.list.d/lava.list +RUN apt-get clean && apt-get update +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install lava-dispatcher + +COPY scripts/lava-slave /etc/init.d/ +RUN chmod 755 /etc/init.d/lava-slave + +# Add services helper utilities to start and stop LAVA +COPY scripts/stop.sh . +COPY scripts/start.sh . + +RUN dpkg -l |grep lava + +EXPOSE 69/udp 80 + +CMD /start.sh diff --git a/lava-slave-base/scripts/lava-slave b/lava-slave-base/scripts/lava-slave new file mode 100644 index 0000000..3ba00f7 --- /dev/null +++ b/lava-slave-base/scripts/lava-slave @@ -0,0 +1,98 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: lava-slave +# Required-Start: $time +# Required-Stop: $time +# X-Stop-After: sendsigs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: lava-slave +# Description: lava-slave +### END INIT INFO + +# +# Author: Corentin LABBE <clabbe@baylibre.com> +# + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="lava-slave" +NAME=lava-slave + +DAEMON=/usr/bin/lava-slave +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME +MASTER_URL=tcp://localhost:5556 +LOGGER_URL=tcp://localhost:5555 +LOGLEVEL=DEBUG + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME +[ -r /etc/lava-dispatcher/$NAME ] && . /etc/lava-dispatcher/$NAME + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # other if daemon could not be started or a failure occured + start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- --level $LOGLEVEL --master $MASTER_URL --socket-addr $LOGGER_URL $IPV6 $ENCRYPT $MASTER_CERT $SLAVE_CERT $HOSTNAME +} + +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # other if daemon could not be stopped or a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON +} + +case "$1" in + start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0) + log_end_msg 0 ;; + 1) log_progress_msg "already started" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0) log_end_msg 0 ;; + 1) log_progress_msg "already stopped" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + + ;; + restart|force-reload) + $0 stop + $0 start + ;; + try-restart) + $0 status >/dev/null 2>&1 && $0 restart + ;; + status) + status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $? + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|try-restart|status}" >&2 + exit 3 + ;; +esac + +: + diff --git a/lava-slave-base/scripts/start.sh b/lava-slave-base/scripts/start.sh new file mode 100755 index 0000000..21b6903 --- /dev/null +++ b/lava-slave-base/scripts/start.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +/setup.sh || exit $? + +# Set LAVA Master IP +if [[ -n "$LAVA_MASTER" ]]; then + sed -i -e "s/{LAVA_MASTER}/$LAVA_MASTER/g" /etc/lava-dispatcher/lava-slave +fi + +service tftpd-hpa start || exit 4 +if [ -s /etc/ser2net.conf ];then + service ser2net start || exit 7 +fi + +touch /var/run/conmux-registry +/usr/sbin/conmux-registry 63000 /var/run/conmux-registry& +sleep 2 +for item in $(ls /etc/conmux/*cf) +do + echo "Add $item" + # On some OS, the rights/user from host are not duplicated on guest + grep -o '/dev/[a-zA-Z0-9_-]*' $item | xargs chown uucp + /usr/sbin/conmux $item & +done + +HAVE_SCREEN=0 +while read screenboard +do + echo "Start screen for $screenboard" + TERM=xterm screen -d -m -S $screenboard /dev/$screenboard 115200 -ixoff -ixon || exit 9 + HAVE_SCREEN=1 +done < /root/lava-screen.conf +if [ $HAVE_SCREEN -eq 1 ];then + sed -i 's,UsePAM.*yes,UsePAM no,' /etc/ssh/sshd_config || exit 10 + service ssh start || exit 11 +fi + + +# start an http file server for boot/transfer_overlay support +(cd /var/lib/lava/dispatcher; python -m SimpleHTTPServer 80) & + +# FIXME lava-slave does not run if old pid is present +rm -f /var/run/lava-slave.pid +service lava-slave start || exit 5 + +sleep 3650d diff --git a/lava-slave-base/scripts/stop.sh b/lava-slave-base/scripts/stop.sh new file mode 100755 index 0000000..0f18456 --- /dev/null +++ b/lava-slave-base/scripts/stop.sh @@ -0,0 +1,3 @@ +#!/bin/bash +service tftpd-hpa stop +service lava-slave stop |