ImageINFUbuntu-Installation

Für den Unterricht Betriebssysteme und SWE wird eine Linux VM benötigt. Unterrichtspezifische VMs des INF-Instituts liegen jeweils unter:
\\fs004\inf\001_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 mit Subclipse-Plugin und JavaHL
  • Eclipse Java SDK 4.6 mit Together 12.9.0 Plugin
  • xapt
  • Java 8 (OpenJDK)
  • VirtualBox Gasterweiterung
  • make
  • cmake
  • git
  • subversion
  • 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.

Subclipse gemäss dieser Anleitung installieren:
Subclipse Installation
Danach:
HelpInstall New Software… → Im Work with:-Dropdownmenü The Eclipse Project Updates - http://download.eclipse.org/eclipse/updates/<meineEclipseVersion> auswählen → Eclipse Java Development Tools anklicken → Finish

Subclipse benötigt eine aktuelle JavaHL-Bibliothek, um korrekt funktionieren zu können. Folgend die Installationsanleitung:
Installation von JavaHL:

sudo apt-get install libsvn-java

Pfad der Installation muss Eclipse nun mitgeteilt werden. Hierfür als Erstes den Pfad herausfinden, in dem sich die Datei „libsvnjavahl-1.so“ befindet:

sudo find / -name libsvnjavahl-1.so

Das sollte diesen oder ähnlichen Output generieren:

/usr/lib/x86_64-linux-gnu/jni/libsvnjavahl-1.so

Der benötigte Pfad ist in diesem Fall also folgender:

/usr/lib/x86_64-linux-gnu/jni/

Dieser Pfad muss nun in die „eclipse.ini“-Datei (im Eclipse-Installationsverzeichnis) mittels folgender Zeile am Ende der Datei eingefügt werden, damit Eclipse diesen Pfad für Subclipse verwenden kann:

-Djava.library.path=/usr/lib/x86_64-linux-gnu/jni/

Datei speichern und Editor verlassen.

Beispiel-Screenshot:
 Eclipse.ini



Jetzt sollte das Subclipse-Plugin korrekt funktionieren (Das zeigt sich erst beim Erstellen von Projekten oder dem Navigieren durch ein ausgechecktes SVN-Repository beim Import).

Sollte es Probleme mit der Authentifizierung gegen das Active Directory geben, kann in Eclipse anstatt JavaHL das SVNKit ausgewählt werden, welches jedoch weniger performant ist, und zwar in der Option SVN interface unter:
WindowPreferencesTeamSVN

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-Folders vorbereiten

Für den Zugriff auf vom Host bereitgestellte Shared-Folders (z.B. wie hier beschrieben) müssen folgende zwei Pakete installiert werden:

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

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

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

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

mount-m.sh

#!/bin/bash
 
USER=""
USER_FILE="m-user.txt"
USERID=$(id -u)
GROUPID=$(id -g)
 
if [ -f $USER_FILE ]; then
        USER=$(cat $USER_FILE)
else
        read -p "NTB-Benutzername: " USER
fi
 
mkdir -p m
sudo mount -t cifs -o user=$USER,uid=$USERID,gid=$GROUPID //fs003/stud/$USER ./m
 
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 muss ebenfalls direkt im Home-Verzeichnis folgender Order angelegt werden:

mkdir m
chmod 775 m
mkdir x
chmod 775 x

Shared Folder hinzufügen

Damit aus der VM auf das persönliche M:\ bzw. X:\-Laufwerk zugegriffen werden kann, werden zwei Shared Folder eingerichtet. Wie dies funktioniert, ist unter folgendem Link zu finden:
forums.virtualbox.org
Im ersten Schritt sind sie in der VirtualBox unter

Rechtsklick auf die VM → ÄndernGemeinsame Ordner

als Ordner der virtuellen Maschine einzutragen, zum Beispiel mit den Namen m und x:



In unserem Fall werden in Ubuntu die beiden Ordner unter ~/m und ~/x abgelegt, also müssen diese erstellt werden:

mkdir ~/m
mkdir ~/x

Anschliessend können folgende Zeilen in das File /etc/fstab eingetragen werden:

# VirtualBox shared folders
m ~/m vboxsf uid=1000,gid=1000,noauto 0 0
x ~/x vboxsf uid=1000,gid=1000,noauto 0 0

Troubleshooting

Kann Paket-Repository nicht hinzufügen

Sollte das Hinzufügen eines Repositorys fehlschlagen, kann das daran liegen, dass am NTB die meisten Ports geblockt werden. Lösung:

sudo gedit /usr/lib/python2.6/dist-packages/softwareproperties/ppa.py

Das Vorkommnis von keyserver.ubuntu.com sollte dann durch hkp://keyserver.ubuntu.com:80 ersetzt werden. Damit wird das Hinzufügen klappen.

Freeze nach dem Starten von Eclipse mit SVN-/Java HL-Plugin

Sollte nach dem Starten von Eclipse mit installiertem SVN-Plugin scheinbar ein Freeze auftreten, so sollte man eine Weile warten (kann bis zu ein paar Minuten dauern), ob folgende Meldung auftritt:

Wenn ja, mit OK bestätigen, dann sollte der Fehler automatisch behoben werden.