====== 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]]