====== 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:
{{:software:virtualbox:kdev-installation:vm-einstellungen_inf-image.pdf|VM-Einstellungen}}
\\ User: **ost**
\\ PW: **ost**
===== Installierte Tools =====
* gcc (Debian package //[[http://packages.debian.org/de/wheezy/build-essential| build essential]]//)
* gdb (Debian package //[[http://packages.debian.org/de/wheezy/gdb|GDB]]//)
* [[software:linux:buildroot:zoom:dev | Buildroot-Toolchain für Zoom-Board]]
* 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 ====
- Das System aktualisieren und nötigenfalls ein Upgrade ausführen
- Unnötige Pakete entfernen (insbesondere Pakete des alten Kernels nach einem Upgrade)
- Automatische Update-Suche von Eclipse deaktivieren
* Für Eclipse:\\ //Window// → //Preferences// → //Install/Update// → //Automatic Updates// deaktivieren
- Automatische Update-Suche von Ubuntu deaktivieren
* Ubuntu Update Manager starten → //Updates// → //Automatically check for updates// deaktivieren
- Ggf. virtuelle Festplatte (''.vdi'') gemäss [[..:diskverkleinern:start | Anleitung]] verkleinern, bevor sie auf dem Netzlaufwerk veröffentlicht wird.
==== Installationsdetails ====
Die VM basiert auf einer Standard Ubuntu **Minima**l-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äte// → //Gasterweiterungen einlegen//
Danach den weiteren Installationsanweisungen in der VM folgen.
=== XAPT ===
Als ''.deb''-File von [[https://launchpad.net/ubuntu/trusty/amd64/xapt/2.2.20 | 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-'' \\ 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:
- //Window// → //Preferences// → //C/C++// → //Editor//
- Unter "Appearance color options" den Eintrag "Source hover background" markieren, den Haken bei "System Default" entfernen und die Farbe für auf gelb ändern
- 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-'' \\ 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:
- //Window// → //Preferences// → //Java// → //Editor//
- Unter "Appearance color options" den Eintrag "Source hover background" markieren, den Haken bei "System Default" entfernen und die Farbe für auf gelb ändern
- 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: \\
//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-/eclipse''-Executable gestartet, sondern via ''opt/eclipse/Java-/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 [[http://wiki.ros.org/ROS/Installation | 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 [[http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment | 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=
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:
#!/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
#!/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
#!/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 → //Ändern// → //Gemeinsame Ordner// \\ \\ als Verzeichnis(se) der virtuellen Maschine einzutragen, in unserem Fall sinnvollerweise zum Beispiel mit den Namen ''m'', ''x'' und ''share''.
[{{:software:virtualbox:kdev-installation:sharedfolder01.jpg?200|Gemeinsame Ordner}}]
\\ [{{:software:virtualbox:kdev-installation:sharedfolder04.jpg?200|Beliebiges Verzeichnis}}]
\\
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):
[{{:software:virtualbox:kdev-installation:sharedfolder07.jpg?200|share}}] [{{:software:virtualbox:kdev-installation:sharedfolder05.jpg?200|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): ====
[[https://forums.virtualbox.org/viewtopic.php?t=15868| Shared Folders: forums.virtualbox.org]]