Sign inSign up

danbu/exam-lab

By danbu

Updated 20 days ago

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

Image
0

794

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

20 days ago

docker pull danbu/exam-lab