Entwicklung zu Hause

## Mittels Virtuellen Maschine (VM)

### Grundlagen

Mittels einer Virtuellen Maschine (VM) kann ein Gastbetriebssystem (z.B. Debian Linux) auf eurem PC/Notebook (Host) gestartet werden – auf dem ihr ein gänzlich anderes Betriebssystem (z.B. Windows) verwendet. Bei der Vollvirtualisierung wird auch die Hardware wegabstrahiert, so kann der Inhalt des virtuellen Bildschirms in einem Fenster (mit beliebiger Größe) angezeigt werden und die gesamte virtuelle Festplatte ist im Host nur eine einzige Datei. Zugriff auf externe Geräte kann bei Bedarf erlaubt werden, z.B. auf USB, weitere Zusätze erlauben dynamische Anpassung der Fenster/Bildschirmgröße oder den nahtlosen Übergang der Maus zwischen Gast und Host. Durch hardwareunterstützte Virtualisierung ist meist kein Performanceunterschied zwischen Gast und Host erkennbar. Nach der Installation der Virtualisierungssoftware können beliebige VMs hinzugefügt und wieder gelöscht werden, ohne das dies (abgesehen vom Speicherplatz) Auswirkungen auf das Host-System hat.

### Voraussetzung

Für die Ausführung der VM wird eine 64-bit Architektur (AMD64/x86_64) mit Virtualisierungsunterstützung benötigt. Dies muss ggf. im BIOS aktiviert werden, gängige Bezeichnungen dafür sind "Virtualization Technology", "VT-x" oder "AMD-V" (nähere Details im Handbuch zu eurem PC).

Um unter Windows zu prüfen, ob die Unterstützung aktiviert ist, könnt ihr den Task-Manager starten (z.B. durch Rechtsklick auf die Taskleiste), in der erweiterten Ansicht auf den Tabulator Leistung wechseln und dort CPU anwählen – im Hauptfenster ist nun der Zustand im Eintrag Virtualisierung ersichtlich

Außerdem darf kein weiterer Hypervisor (wie z.B. Hyper-V) zeitgleich laufen, dieser muss dann deaktivert werden.

### Installation

Für die Entwicklung von zu Hause gibt es eine Virtuelle Maschine mit der SPiC-IDE und einer dem CIP ähnlichen Umgebung (Debian 10). Dafür muss auf eurem Rechner VirtualBox (ab Version 6.1) zusammen mit dem Extension Pack installiert werden, abhängig von eurem Betriebssystem:

- Windows: Download VirtualBox-6.1.32 und Extension Pack
- MacOS X: Download VirtualBox-6.1.32 und Extension Pack
- Linux: Paketquellen nach Distribution sowie das zur entsprechenden Version passende Extension Pack.

Nach der Installation von VirtualBox und dem Extension Pack muss die VM heruntergeladen werden:

Download der SPiC-IDE VM (ca 1.6 GB) starten

In VirtualBox kann die VM über Datei / Appliance importieren... geladen werden.

### Verwendung

Der Benutzer lautet `local` und das Passwort ist immer `spic`. Nach dem ersten Start sollte `update` ausgeführt werden, um die Pakete zu aktualisieren. Ähnlich dem CIP kann im Startmenü unter Development die SPiC-IDE (local) gestartet werden. Diese arbeitet in einem extra Verzeichnis innerhalb der VM (und kann nicht für Abgaben verwendet werden). In der Regel sollte ein angeschlossenes SPiCboard von dem Host an die Virtuelle Maschine automatisch "durchgereicht" werden und kann somit auch programmiert werden.

Zusätzlich gibt es den Startmenüeintrag SPiC-IDE (remote CIP), welcher bei bestehender Internetverbindung euer SPiC Benutzerverzeichnis im CIP (entsprechenden Benutzernamen und Passwort verwenden) mit der VM verknüpft. Hier könnt ihr dann Abgaben tätigen.

Note
  Bei Abbruch der Internetverbindungen können ungespeicherte Daten verloren gehen. Versucht entweder regelmäßig zu speichern oder entwickelt lokal und kopiert die Datei dann in den CIP – dies ist auch über den Editor möglich, da beide Projektverzeichnisse angezeigt werden.

## Entfernter Zugriff auf den CIP mittels Xpra

Es ist auch möglich, mittels Xpra eine Bildschirmübertragung aus dem CIP zu starten: Der Editor wird dabei auf einem Rechner im CIP ausgeführt, die Bildschirmausgabe an euren PC übertragen und eure Eingaben werden wieder an den entsprechenden Rechner zurückgeschickt und verarbeitet.

Ein per USB angeschlossenes Hardware SPiCboard könnt ihr über Xpra nicht programmieren.

Note
  Diese Möglichkeit sollte nur bei unlösbaren Problemen mit der VM verwendet werden. Da die komplette Ausgabe übertragen werden muss, ist es merklich langsamer als die VM, verbraucht mehr Bandbreite und zudem ist eine permanente Internetverbindungen zwingend notwendig – bei einem Abbruch werden alle ungespeicherte Daten verloren gehen.

### Webanwendung

Unkompliziert und ganz ohne Installation von Software kann die Verbindung zum CIP mit unserer angepassten Webanwendung aufgebaut werden:

Starte SPiC-IDE via Xpra

### Native Anwendung

Für fortgeschrittene Benutzer ist es auch möglich statt der Webanwendung einen Xpra-Client zu installieren. Für die Verbindung muss `Xpra` über die Kommandozeile gestartet werden, mit dem Parameter `start ssh:BENUTZER@RECHNER.cip.cs.fau.de` wird mittels Secure Shell eine Xpra Session gestartet (wobei der CIP Nutzer und ein Host wie `cip6a0` entsprechend verwendet werden müssen) und mit `–exit-with-children –start-child="/proj/i4spic/bin/editor"` die SPiC IDE gestartet.

Unter Windows wäre der Befehl entsprechend:

    Xpra.exe start ssh:uj66o.nosp@m.jab@.nosp@m.cip6c.nosp@m.0.ci.nosp@m.p.cs..nosp@m.fau..nosp@m.de --exit-with-children --start-child="/proj/i4spic/bin/editor"

## Weitere Möglichkeiten

Nachfolgende Anleitungen sollen motivierten und fachlich versierte Studierenden dabei helfen, das SPiCboard zu Hause anzuschließen und eigenständig zu entwickeln, gerne auch über den Umfang der Lehrveranstaltung hinaus. Dies erfordert allerdings ein gewisses Maß an Eigenständigkeit: Die erste Anlaufstelle sollten die Referenzen sein, welche sowohl auf umfangreiche Nachschlagewerke als auch empfehlenswerte Tutorials für Einsteiger verweisen. Die Verwendung von Suchmaschinen und einschlägige Frage-und-Antwort-Plattform zum Thema Softwareentwicklungen sollten ebenfalls vor dem Tutor besucht werden.

### Betriebssystem

- Entwicklung auf dem Heimcomputer unter Windows via WSL
- Entwicklung auf dem Heimcomputer unter Linux (insbesondere Debian/Ubuntu)

Die Anleitung für Linux sollte prinzipiell auch auf weitere unixoide Betriebssystem (wie MacOS) adaptierbar sein.