ImageINFUbuntu-Installation

Für den Unterricht Betriebssysteme und SWE wird eine Linux VM benötigt. Unterrichtspezifische VMs des INF-Instituts liegen jeweils unter:
\\fs03\x\public-programme\VMs\VirtualBox


Die detaillierten VM-Einstellungen zum erstmaligen Erstellen der VM in VirtualBox sind in folgendem .PDF-File zu finden: VM-Einstellungen


User: ost
PW: ost

Installierte Tools

  • gcc (Debian package build essential)
  • gdb (Debian package GDB)
  • Eclipse C/C++ 4.14
  • Eclipse Java SDK 4.6 mit Together 12.9.0 Plugin
  • xapt
  • Java 8 (OpenJDK)
  • VirtualBox Gasterweiterung
  • make
  • cmake
  • git
  • rabbitvcs-nautilus
  • ros
  • rosinstall
  • gazebo
  • cifs-utils
  • nfs-common
  • zerofree
  • GTK-Module

Arbeitsschritte für das Bereitsstellen der VM

  1. Das System aktualisieren und nötigenfalls ein Upgrade ausführen
  2. Unnötige Pakete entfernen (insbesondere Pakete des alten Kernels nach einem Upgrade)
  3. Automatische Update-Suche von Eclipse deaktivieren
    • Für Eclipse:
      WindowPreferencesInstall/UpdateAutomatic Updates deaktivieren
  4. Automatische Update-Suche von Ubuntu deaktivieren
    • Ubuntu Update Manager starten → UpdatesAutomatically check for updates deaktivieren
  5. Ggf. virtuelle Festplatte (.vdi) gemäss Anleitung verkleinern, bevor sie auf dem Netzlaufwerk veröffentlicht wird.

Installationsdetails

Die VM basiert auf einer Standard Ubuntu Minimal-Installation, ergänzt um folgende Installationen/Konfigurationen:

Allgemein

Die Workspaces aller Applikationen sollen sich im folgenden zentralen Workspace-Verzeichnis befinden:
~/workspace. Alle Applikationen (Eclipse, ROS, Zoom usw.) der VM sollen der Ordnung halber auf diese Weise in einem zentralen ~/workspace-Verzeichnis ihren Platz finden.

Verzeichnis vorbereiten:

mkdir -p ~/workspace

Nautilus integration diverser Versionsverwaltungssysteme

sudo apt install rabbitvcs-nautilus

VirtualBox Gasterweiterungen

Via VirtualBox-Menü der VM: GeräteGasterweiterungen einlegen Danach den weiteren Installationsanweisungen in der VM folgen.

XAPT

Als .deb-File von hier downloaden und via Ubuntu Software-Center installieren.
Hinweis: Im Software-Center von Ubuntu Version 18.04 wird das installierte XAPT-Paket nach der Installation als „installed“ angezeigt. Nach einem Neustart des Systems kann es sein, dass das installierte XAPT-Paket im Ubuntu Software-Center nicht mehr sichtbar ist. Keine Sorge: Das Paket ist noch installiert und voll funktionstüchtig, das Nichtanzeigen scheint ein Bug vom Ubuntu Software-Center zu sein!

Java (OpenJDK)

Für die Nutzung von Eclipse C/C++ ist eine Java-Installation erforderlich. Diese kann mit folgenen Befehlen eingeleitet werden:

sudo apt-get install openjdk-8-jdk

Java-Installation überprüfen:

java -version
javac -version

GTK-Module / Together

Für die Installation für das Together-Plugin für Eclipse sind vorab folgende Module zu installieren:

sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

Eclipse

Es werden zwei Eclipse Versionen installiert:

  • Eclipse C/C++ → Für Unterricht Betriebssysteme
  • Eclipse Java mit Together-Plugin → Für SWE Unterricht
Eclipse C/C++

Für die Installation von Eclipse, nicht den Installer für Linux, sondern das Package für Linux herunterladen und folgenden Installationspfad verwenden:

  • Für Eclipse C/C++:
    /opt/eclipse/CPP-<meineEclipseVersion>
    Beispiel: /opt/eclipse/CPP-4.14

Einstellungen in Eclipse:

  • Als Workspace folgenden Pfad verwenden:
    ~/workspace/eclipse/eclipseCPP
  • Hintergrundfarbe der Quelltext-Hover-Fenster von Schwarz umstellen:
    1. WindowPreferencesC/C++Editor
    2. Unter „Appearance color options“ den Eintrag „Source hover background“ markieren, den Haken bei „System Default“ entfernen und die Farbe für auf gelb ändern
    3. Mit „Apply and close“ das Einstellungsfenster verlassen.
Eclipse Java

Für die Installation von Eclipse, nicht den Installer für Linux, sondern das Package für Linux herunterladen und folgenden Installationspfad verwenden:

/opt/eclipse/Java-<meineEclipseVersion>
Beispiel: /opt/eclipse/Java-4.6

Einstellungen in Eclipse:

  • Als Workspace folgenden Pfad verwenden:
    ~/workspace/eclipse/eclipseJava
  • Hintergrundfarbe der Quelltext-Hover-Fenster von Schwarz umstellen:
    1. WindowPreferencesJavaEditor
    2. Unter „Appearance color options“ den Eintrag „Source hover background“ markieren, den Haken bei „System Default“ entfernen und die Farbe für auf gelb ändern
    3. Mit „Apply and close“ das Einstellungsfenster verlassen.

Together Installation:

cd /tmp
wget -c ftp://inf004.ntb.ch/together/together12_9_academic_site.zip

Eclipse starten und das .zip-File folgendermassen via Eclipse-Installer installieren:
HelpInstall New Software…Add… → Im Eingabefeld Name den Wert Together eingeben / Auf Archive… klicken und zur entsprechenden .zip-Datei navigieren, Doppelklick auf die .zip-Datei, mit OK bestätigen, Haken für alle Together-Komponenten setzen und Installation beginnen.
Nach erfolgreicher Installation wird Eclipse nicht mehr über die opt/eclipse/Java-<meineEclipseVersion>/eclipse-Executable gestartet, sondern via opt/eclipse/Java-<meineEclipseVersion>/Together-Executable. Auf diese Weise wird Eclipse automatisch mit der in diesem Fall benötigten Together-Umgebung gestartet.

Zerofree
sudo apt install zerofree
ROS

ROS gemäss offizieller ROS-Installationsanleitung installieren.
Zusätzlich noch das Package „ROSinstall“ installieren, ebenfalls in der offiziellen ROS-Installationsanleitung zu finden. Danach die ROS-Umgebung einrichten gemäss dieser Anleitung → Achtung: Für den catkin-Workspace nicht den in der Installationsanleitung angegebenen Pfad ~/catkin_ws wählen, sonder den folgenden:
~/workspace/catkin.

Nach der Installation kann ROS folgendermassen getestet werden:
Ein neues Terminal öffnen und folgende Kommandos ausführen:

cd ~/workspace/catkin
roscore

Das Terminal geöffnet lassen und ein zweites Terminal öffnen. Das Kommando

rosnode list

sollte folgenden Output generieren:
/rosout
Und das Kommando

rostopic list

sollte folgenden Output generieren:
/rosout
/rosout_agg

Werden beide Outputs entsprechend generiert, war die ROS-Installation erfolgreich und beide Terminals können beendet werden.

Gazebo
curl -sSL http://get.gazebosim.org | sh
gazebo

Information: Das gazebo.desktop-File befindet sich unter /usr/share/applications. Das File für den Favoriten-Eintrag mit korrektem Icon:

[Desktop Entry]
Version=<meineGazeboVersion>
Name=Gazebo
Comment=
Exec=/usr/bin/gazebo
Path=/usr/bin
Icon=gazebo
Terminal=false
Type=Application
Categories=Utility;Application;Development;

Shared Folder(s)

VirtualBox erlaubt es, beliebige lokale Host-Verzeichnisse und/oder auf dem Host lokal eingebundene Netzlaufwerke mit einer VM zu „sharen“. Dabei nutzen wir in unserem Fall folgende zwei Varianten:

  • Einbindung von Netzlaufwerken direkt aus der VM via SMB (UNC-Pfad) → OST-User Passworteingabe nötig
  • Einbindung eines lokalen Verzeichnis via VirtualBox' Gemeinsame Ordner-Funktion → Keine Passworteingabe nötig

In unserem Fall werden wir drei Shared Folder konfigurieren: Das persönliche OST-Netzlaufwerk M:\, das OST-Netzlaufwerk X:\, sowie ein beliebiges gewünschtes lokales Verzeichnis, in unserem Fall share, bzw. meinVerzeichnis genannt. Diese Shared Folder(s) werden in unserem Fall nicht automatisch beim Systemstart der Ubuntu VM, sondern via Script bei Bedarf manuell eingebunden.

Shared-Folder(s) in der Ubuntu VM vorbereiten

Für den Zugriff auf vom Host bereitgestellte Shared-Folder(s) müssen in der Ubuntu VM folgende Pakete installiert werden:

sudo apt install nfs-common
sudo apt install cifs-utils

Zusätzlich müssen in unserem Fall direkt im Home-Verzeichnis folgende Shell-Script Dateien angelegt und ausführbar gemacht werden:

touch ~/mount-m.sh
chmod +x ~/mount-m.sh
touch ~/mount-x.sh
chmod +x ~/mount-x.sh
touch ~/mount-share.sh
chmod +x ~/mount-share.sh

Nun müssen die Shell-Script Dateien editiert und folgender Inhalt eingefügt werden:

mount-m.sh

#!/bin/bash
 
USER=""
USER_FILE="user.txt"
USERID=$(id -u)
GROUPID=$(id -g)
 
if [ -f $USER_FILE ]; then
        USER=$(cat $USER_FILE)
else
        read -p "OST-Benutzername: " USER
fi
 
mkdir -p m
sudo mount -t cifs -o user=$USER,uid=$USERID,gid=$GROUPID //fs01.ost.ch/home/$U>
 
if [ $? -eq 0 ]; then
        echo $USER>$USER_FILE
fi

mount-x.sh

#!/bin/bash
 
USER=""
USER_FILE="user.txt"
USERID=$(id -u)
GROUPID=$(id -g)
 
if [ -f $USER_FILE ]; then
        USER=$(cat $USER_FILE)
else
        read -p "OST-Benutzername: " USER
fi
 
mkdir -p x
sudo mount -t cifs -o user=$USER,uid=$USERID,gid=$GROUPID //fs03.ost.ch/x ./x
 
if [ $? -eq 0 ]; then
        echo $USER>$USER_FILE
fi

mount-share.sh

#!/bin/bash
 
USERID=$(id -u)
GROUPID=$(id -g)
 
mkdir -p share
sudo mount -t vboxsf -o uid=$USERID,gid=$GROUPID share ./share

Zusätzlich müssen in unserem Fall ebenfalls direkt im Home-Verzeichnis folgende Verzeichnisse angelegt werden:

mkdir ~/m
chmod 775 ~/m
mkdir ~/x
chmod 775 ~/x
mkdir ~/share
chmod 775 ~/share


Shared Folder(s) in VirtualBox konfigurieren

Im ersten Schritt sind die Shared Folder(s) in VirtualBox unter

Rechtsklick auf die VM → ÄndernGemeinsame Ordner

als Verzeichnis(se) der virtuellen Maschine einzutragen, in unserem Fall sinnvollerweise zum Beispiel mit den Namen m, x und share.

Invalid Link
Gemeinsame Ordner


Invalid Link
Beliebiges Verzeichnis


Wichtiger Hinweis

Die gewählte Bezeichnung im Eingabefeld Order-Name: muss pro Shared Folder identisch sein mit der Bezeichnung im Mapping-Script! Beispiel: Wenn wie in unserem Fall im Eingabefeld Ordner-Name: der Wert share eingetragen wird, muss im Mapping-Script (in unserem Fall das bereits vorhin erstellte Script mount-share.sh) ebenfalls die Bezeichnung share verwendet werden (in den folgenden beiden Screenshots rot eingerahmt):
Invalid Link
share
Invalid Link
share


Mit OK bestätigen, danach VM starten.

Nun kann durch Ausführen der entsprechenden Scripte der jeweilige gewünschte Shared Folder in die Ubuntu VM gemountet werden.

Quelle(n):