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
.vdi
) gemäss Anleitung verkleinern, bevor sie auf dem Netzlaufwerk veröffentlicht wird.Die VM basiert auf einer Standard Ubuntu Minimal-Installation, ergänzt um folgende Installationen/Konfigurationen:
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
sudo apt install rabbitvcs-nautilus
Via VirtualBox-Menü der VM: Geräte → Gasterweiterungen einlegen Danach den weiteren Installationsanweisungen in der VM folgen.
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!
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
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
Es werden zwei Eclipse Versionen installiert:
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/CPP-<meineEclipseVersion>
/opt/eclipse/CPP-4.14
Einstellungen in Eclipse:
~/workspace/eclipse/eclipseCPP
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:
~/workspace/eclipse/eclipseJava
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:
Help → Install 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.
sudo apt install zerofree
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.
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;
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:
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.
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
Im ersten Schritt sind die Shared Folder(s) in VirtualBox unter
Rechtsklick auf die VM → Ändern → Gemeinsame Ordner
als Verzeichnis(se) der virtuellen Maschine einzutragen, in unserem Fall sinnvollerweise zum Beispiel mit den Namen m
, x
und share
.
Wichtiger Hinweis
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):
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.