Sign inSign up

danbu/exam-lab

By danbu

•Updated about 2 months ago

Linux-Prüfungslabor mit SSH, examctl, Abgabe-Export und Echtzeit-Scheduling.

Image
0

896

danbu/exam-lab repository overview

⁠Exam Lab

Docker-basierte Prüfungsumgebung für Betriebssysteme und Rechnerarchitektur.

⁠Container starten

Erstellen Sie zunächst die lokalen Ordner für Abgaben, Exportdateien und Verlaufsdaten:

mkdir -p exam/{abgabe,export,persist}

Starten Sie anschließend den Container:

docker run -d \
  --pull=always \
  --name exam-lab \
  -p 127.0.0.1:2222:22 \
  --cap-add=SYS_NICE \
  --ulimit rtprio=99 \
  -v "$PWD/exam:/exam" \
  danbu/exam-lab:latest

⁠Container stoppen und erneut starten

Container stoppen:

docker stop exam-lab

Container aus demselben Ordner erneut starten, in dem sich ./exam/ befindet:

docker start exam-lab

Ein bereits vorhandener Container behält seine verwendete Image-Version. docker start lädt kein neueres Image herunter.

⁠Prüfung bearbeiten

Melden Sie sich per SSH an:

ssh student@localhost -p 2222

Startpasswort des Benutzers student:

wbh-lab

Initialisieren Sie danach die Prüfung und kontrollieren Sie die Angaben:

examctl init
examctl -i
examctl list

Die geforderten Abgabedateien werden unter folgendem Pfad bearbeitet:

/home/student/abgabe/

Mit diesem Befehl kann der aktuelle Bearbeitungsstand der Aufgaben geprüft werden:

examctl prüfen

Vor der Abgabe sollte zusätzlich die formale Validierung ausgeführt werden:

examctl validate-submission

Eine erfolgreiche Validierung wird geschützt im Container dokumentiert und kann bei der Bewertung nachgewiesen werden.

⁠Testkonten für die Rechteaufgabe

Für die entsprechende praktische Aufgabe stehen die Benutzer daniel und manfred zur Verfügung. Das Passwort beider Benutzer lautet:

GeHeim

Ein Benutzerwechsel ist beispielsweise so möglich:

su - manfred

Das Programm /usr/local/bin/report darf vom Benutzer student gezielt als manfred ausgeführt werden:

sudo -u manfred /usr/local/bin/report

Bei erfolgreicher Ausführung lautet die Ausgabe:

irgendwas

⁠Abgabe erstellen

Validieren und paketieren Sie Ihre Lösungen:

examctl validate-submission
examctl package-submission

examctl package-submission nennt anschließend den vollständigen Namen der erzeugten .tar.gz-Abgabedatei.

Verlassen Sie danach die Container-Shell:

exit

Die Abgabedatei finden Sie anschließend auf Ihrem Rechner im relativen Ordner:

./exam/export/

Bitte reichen Sie Ihre Lösungen über den Online-Campus ein, indem Sie die erzeugte Datei

submission-<student_id>-<exam_code>-<run_id>.tar.gz

dort als Abgabedatei hochladen.

Bei einer abweichenden Docker-Konfiguration zeigt folgender Befehl einen passenden SCP-Befehl an:

examctl export-help

⁠Hilfe

examctl --hilfe

⁠Technische Merkmale

  • Debian 12 Slim als reproduzierbare Linux-Basis
  • SSH-Zugang als unprivilegierter Benutzer student
  • deaktivierter Root-Login
  • pluginbasierte Prüfungsaufgaben über examctl
  • persistente Abgaben, Exportdateien und technische Verlaufsdaten
  • geschützte Nachweise über erfolgreich ausgeführte Validierungen
  • Bash-History, technische Protokolle und laufzeitbezogene Prüfungskennungen
  • Unterstützung für SCHED_FIFO und SCHED_RR über SYS_NICE, rtprio und CAP_SYS_NICE

Die Echtzeit-Unterstützung dient Lehr- und Versuchszwecken. Der Container ist kein hartes Echtzeitsystem. Das tatsächliche Scheduling hängt vom Linux-Kernel der Docker-Ausführungsumgebung ab.

Tag summary

Content type

Image

Digest

sha256:d0b31402b…

Size

40 MB

Last updated

about 2 months ago

docker pull danbu/exam-lab