ImageINFUbuntu-Installation

Für den Betriebssystem-Unterricht wird eine Linux VM benötigt. Die Maschine heisst „kdev“. Diese 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: NTB
PW: NTB
root-PW: tr… (dasselbe Passwort wie bei den lokalen Windows INF-PCs)

Installierte Tools

  • GCC (Debian package build essential)
  • GDB (Debian package GDB)
  • Eclipse C/C++ mit Subclipse-Plugin und JavaHL
  • XAPT
  • Java (Oracle)
  • VirtualBox Gasterweiterung
  • Make
  • CMake
  • Git
  • Subversion (SVN)
  • Rabbitvcs Nautilus
  • ROS
  • ROSinstall
  • Gazebo
  • CIFS-Tools
  • NFS-Tools
  • Zerofree

Arbeitsschritte für das Bereitsstellen der VM

  1. Das System aktualisieren und nötigenfalls einen 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 Galileo:
      Window→Preferences→Install/Update→Automatic Updates
  4. Automatische Update-Suche von Ubuntu deaktivieren
    • Für Ubuntu Update Manager:
      1. Update Manager starten
      2. Settings öffnen
      3. Im Register „Updates“ alle Häckchen entfernen
  5. VDI gemäss Anleitung verkleinern
  6. VDI Datei packen
  7. Anleitung aktualisieren und auf Server legen.

Installationsdetails

Die VM basiert auf dem aktuellen Ubuntu Release ergänzt um einige Details. In nachfolgenden Abschnitten werden die notwendigen Werkzeuge welche nicht in der Standard-Installation enthalten sind dokumentiert.

Allgemein

Nautilus integration diverser Versionsverwaltungssysteme
sudo apt -y install rabbitvcs-nautilus
VirtualBox Gasterweiterung

Installation:

sudo apt-get install virtualbox-guest-dkms
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!

Oracle Java

Für die Nutzung von Eclipse C/C++ ist eine Oracle Java-Installation erforderlich. Diese kann mit folgenen Befehlen eingeleitet werden (es sollte immer die aktuellste Version installiert werden, in diesem Beispiel Java Version 10):

sudo add-apt-repository ppa:linuxuprising/java
sudo apt-get update
sudo apt-get install oracle-java10-installer
Einstellungen in Eclipse
  • Hintergrundfarbe der Quelltext-Hover-Fenster von Schwarz umstellen:
    1. Window→Preferences→C/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

Das Subclipse-Plugin für Eclipse kann über den Eclipse-Marketplace wie folgt installiert werden:
In Eclipse:
Help→Eclipse Marketplace…
Im Suchfeld nach „Subclipse“ suchen und installieren.
Danach im Suchfeld nach „Eclipse Java Development Tool 4.7“ suchen uns installieren (das Package kann über den Eclipse-Marketplace via JDT gefunden werden).

Aktuellstes Subclipse-Plugin für Eclipse

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 in einem 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

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 vom User „NTB“ folgende zwei Shell-Script Dateien angelegt und ausführbar gemacht werden:

sudo touch mount-m.sh
sudo chmod +x mount-m.sh
sudo touch mount-share.sh
sudo 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="dummyinf"
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 vom User „NTB“ folgender Order angelegt werden:

sudo mkdir m
sudo chmod 775 m
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.

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.

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 Geräte → Gemeinsame Ordner als Ordner der virtuellen Maschine einzutragen, zum Beispiel mit den Namen drive_m und drive_x.
In unseren VMs werden die beiden Ordner unter /host/drive_m und /host/drive_x abgelegt.
Anschliessend können folgende Zeilen in das File /etc/fstab eingetragen werden.

# VirtualBox shared folders
drive_m         /host/drive_m   vboxsf uid=1000,gid=1000,noauto 	  0	  0
drive_x		/host/drive_x	vboxsf uid=1000,gid=1000,noauto	          0	  0

Zusätzlich müssen die beiden Drives im File /etc/rc.local eingetragen werden, damit sie beim Aufstarten automatisch gemountet werden.

mount drive_m
mount drive_x