Swap ohne Platz für eine extra Partition

Wer kennt das nicht, ein vorkonfigurierter Rechner, der auch nicht geändert werden darf, hat keine expliziete Swap-Partition für Linux. Auch wenn die Workstation 8GB Arbeitsspeicher besitzt, kann es jedoch sehr schnell eng werden mit dem RAM.

Abhilfe?

Linux kann auf Swap Files verwalten. Analog zu den Partitionen, kann man diese während des Betriebes ein- und aushängen. Dazu dient swapon und swapoff.

Beispiel

Ich benötige auf der Workstation ca. 4GB Auslagerungsspeicher.

sudo fallocate -l 4096M /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Mit fallocate allozieren wir 4GB mit der 4096M Angabe. Dann werden die Dateirechte gesetzt. Jetzt muss die Datei nur noch in Swap File gewandelt werden. Hierfür dient mkswap. In der /etc/fstab muss nun nur noch ein Eintrag hinzugefügt werden und Systemd hängt beim nächsten Systemstart das Swap File aufmatisch ein.

/swapfile none swap defaults 0 0

JDK 11

Das JDK 11 war bislang nur als Oracle JDK aus dem AUR-Repository verfügbar. Seit dem 28.10.2018 ist in den normalen Repositories von Manjaro vorhanden, das heißt mit

yaourt --noconfirm -S jre-openjdk-headless jre-openjdk jdk-openjdk openjdk-doc openjdk-src

wird das aktuelle Java 11 als LTS Version installiert.

Weitere Versionen sind mit den jeweiligen Kennzahlen in dem Paketnamen markiert (siehe Arch Wiki).

Welche Java Versionen sind installiert?

Unter Arch basierten Linuxen wird das Handling von Java über ein kleines Helferprogramm gesteuert. Das Programm archlinux-java steuert die installierten JVM auf der Maschine.

archlinux-java status

Listet die installierten Java Versionen auf und zeigt welche Version gerade aktiviert ist.

Wechsel der JVM

Mit archlinux-java set kann die default JVM gewechselt werden.

archlinux-java set java-11-openjdk # wechsel auf JDK 11

Unterschiede Java OpenJDK und Oracle JDK 11

Seit Java 11 gibt keinen funktionalen Unterschied zwischen dem OpenJDK und der Oracle JDK Version mehr. Es muss nur für den Support eine kostenpflichtige Version von Oracle bezogen werden.

Installation

Die Installation von Wireguard beschränkt sich auf ein (noch out of tree) Kernelmodul und den wireguard-tools.

yaourt --noconfirm -S wireguard-dkms wireguard-tools linux-headers

Es müssen die Kernel Headers in der passenden Version zum laufenden Kernel installiert sein. Unter Manjaro Linux wird ein einfaches Schema dafür verwendet. Der Paketname lautet: linuxYYY-headers. YYY steht für die Kernelversion. Zum Beispiel: linux418-headers ist ein Paketname. Das Paket linux-headers zeigt immer auf den letzten Kernel.

Scenario

Es sollen 3 Rechner über ein privates Netzwerk 10.0.0.0/24 über das Wireguard VPN miteinander verbunden werden. Der Server am Standort A ist über eine DynDNS Adresse server.dyndns.com über das Internet erreichbar. Der Server bekommt die Adresse 10.0.0.1 im VPN. Am Standort B sollen 2 Clients mit den Adressen 10.0.0.2 und 10.0.0.3 mit dem Server verbunden werden.

Als Port wird hier in dem Beispiel 33333 verwendet. Der Port ist frei wählbar. Der Port muss bei NAT am Router auf die entsprechende IP Adresse im internen Netz zeigen. Wireguard verwendet das zustandslose Protokoll UDP.

Schlüssel anlegen

1. Schritt

Als Root die Dateien publickey und wg0.conf anlegen. Diese werden auf allen Maschinen benötigt und bilden die gemeinsame Basis für die Konfiguration von Wireguard.

cd /etc/wireguard
umask 077
printf "[Interface]\nPrivateKey = " > wg0.conf
wg genkey | tee -a wg0.conf | wg pubkey > publickey
mcedit /etc/wireguard/wg0.conf

2. Schritt

Konfiguration Server

[Interface]
PrivateKey = DiesesIstDerGeneriertePrivateKey=
ListenPort = 33333
Address = 10.0.0.1/24

[Peer]
PublicKey = DiesesIstDerPublicKeyDesClients1=
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = DiesesIstDerPublicKeyDesClients2=
AllowedIPs = 10.0.0.3/32

Konfiguration Clients

Client 1
[Interface]
PrivateKey = DiesesIstDerGeneriertePrivateKey=
ListenPort = 33333
Address = 10.0.0.3/24

[Peer]
PublicKey = DiesesIstDerPublicKeyDesClients1=
AllowedIPs = 10.0.0.1/24
EndPoint = server.dyndns.com:33333
Client 2
[Interface]
PrivateKey = DiesesIstDerGeneriertePrivateKey=
ListenPort = 33333
Address = 10.0.0.3/24

[Peer]
PublicKey = DiesesIstDerPublicKeyDesClients2=
AllowedIPs = 10.0.0.1/24
EndPoint = server.dyndns.com:33333

Service aktivieren

sudo systemctl enable wg-quick@wg0

Service neustarten

sudo wg-quick down wg0; sudo wg-quick up wg0

Achtung: Wenn man Änderung auf einem entfernten PC durchführt und für die Verbindung Wireguard verwendet, so sollte man auf jeden Fall die Konfiguration doppelt prüfen. Kommt es zu einem Fehler, dann sperrt man sich selbst aus.

IPv4 Forwarding

Ich bevorzuge die Aktivierung des Forwarding nur für das wg0 Interface freizuschalten.

  • Für alle Interfaces

    sysctl net.ipv4.ip_forward=1

  • Nur für Wireguard IPv4-forwarding erlauben

    sysctl net.ipv4.conf.wg0.forwarding=1

Persistierung der Einstellung Forwarding

Die Datei /etc/sysctl.d/30-ipforward.conf mit folgenden Inhalt anlegen:

net.ipv4.ip_forward=1    

Überprüfung Einstellung

Nach einem Neustart kann die Verarbeitung der Datei mit sysctl -a überprüft werden.

sudo sysctl -a | grep net.ipv4.conf.wg0.forwarding

Benutzung von Gradle über die Kommandozeile

Das Buildsystem Gradle ist per se IDE agnostisch und daher lässt es sich natürlich über die Shell benutzen. Die weit verbreitete Linux-Shell Bash besitzt die vielseitige Autovervollstädigung über die Tabulatortaste. Da die Vervollständigung Kontextbezogen ist, werden auch nur die validen Optionen angezeigt.

Autovervollständigung für Gradle

Eric Wendelin hat nun eine Erweiterung gradle-completion für die Shells ZSH und Bash programmiert. Damit funktioniert die Autovervollständigung auch mit Gralde.

PKGBUILD für Arch basierte Distributionen

Da ich noch keine Zeit hatte es auf AUR zur Verfügung zu Stellen, hier ein PKGBUILD:

# Maintainer: MrPeacock
pkgname=gradle-completion
pkgver=1.3.0
pkgrel=1
pkgdesc="Bash and Zsh completion support for Gradle."
arch=(any)
url="https://github.com/gradle/gradle-completion"
license=('MIT')
depends=('bash' 'bash-completion')
makedepends=('git')
source=('gradle-completion::git+https://github.com/gradle/gradle-completion.git')
md5sums=('SKIP')

package() {
  mkdir -p $pkgdir/etc/bash_completion.d/
  cd gradle-completion
  cp gradle-completion.bash $pkgdir/etc/bash_completion.d/gradle-completion.bash    
}

Oder schnell installieren mit:

cd; mkdir gradle-completion; cd gradle-completion; curl https://mrpeacockgit.duckdns.org/Public/PublicFiles/raw/branch/master/PKGBUILDS/gradle-completion/PKGBUILD -o PKGBUILD; makepkg -i

Das Grub Bootmenü

Auf meiner 4K fähigen Grafikkarte wird automatisch der 4K Modus gewählt, was einen guten Eindruck für den gesamten Bootvorgang über Grub, Kernel und SDDM macht, da kein wechsel der Auflösung mehr vorkommt. Jedoch benötigt Grub beim Aufbau (man kann zusehen) des Menüs ca. 5 Sekunden. Und genauso lange benötigt er auch wieder um das Menü zu löschen.

Ändern der Auflösung

sudo mcedit /etc/default/grub

Anpassen der Auflösung. Ich habe hier 1024×768 mit einer Farbtiefe von 16 gewählt.

GRUB_GFXMODE=1024x768x16

Damit die Änderungen wirksam werden, muss jedoch die Konfiguration neu erstellt werden:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Gitea Dienst unter git.xxx.org soll mit SSL Verschlüsselung ausgestattet werden. Es werden verschiedene Domains auf dem Server bedient. Als Reverse Proxy ist bereits NginX vorgeschaltet. Daher muss nicht einmal die Gitea Konfiguration geändert werden. Es kann über NginX die Verschlüsselung mit SSL geschehen.

Die LetsEncrypt Initiative macht es sehr einfach Webseiten mit einem gültigen Zertifikat auszustellen. Dazu gibt es verschiedene Clients die die Verwaltung vornehmen. Ich verwende hier den Certbot.

Installation Certbot unter Arch Linux

yaourt -S --noconfirm certbot-nginx

Erstellen eines Zertifikates

Das Plugin für Certbot parst das ConfigFile von NginX und zeigt alle Domains an, die auf dem Server einen eigenen Serverblock besitzen. Da wir die Konfiguration nicht verändern wollen, rufen wir den certbot mit dem Parameter certonly auf. Damit wird nur ein Zertifikat für die gewählten Domains erstellt. Hierfür muss man natürlich im Besitz der Domain sein.

certbot --nginx certonly

[root@server conf]# certbot --nginx certonly
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): xxx@web.de

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: Y

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: ----
2: git.xxx.org
3: ----
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 2
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for mrpeacockgit.duckdns.org
2018/06/02 09:50:20 [notice] 9946#9946: signal process started
Waiting for verification...
Cleaning up challenges
2018/06/02 09:50:25 [notice] 9948#9948: signal process started

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/git.xxx.org/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/git.xxx.org/privkey.pem
Your cert will expire on 2018-08-31. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

Wie man in der Ausgabe erkennen kann, legt der certbot unterhalb /etc/letsencrypt/live/ für jede Domain ein Verzeichnis an. In diesem wird das Zertifikat und der private Schlüssel abgelegt.

Einbinden des Zertifikates in NginX

Die Konfiguration für den Gitea Service ist in eine eigene Datei ausgelagert. Diese wird per Include Anweisung eingebunden. Hierfür ist ein separates conf-Verzeichnis unterhalb /etc/nginx/ ratsam.

#
# Gitea Service
#
include conf/git.conf;

Damit alte Links bzw. der direkte Aufruf mit dem unverschlüsselten HTTP Protokoll weiterhin funtkioniert muss eine 301 Weiterleitung eingerichtet werden.

# Redirect http -> https
server {
    listen 80;
    server_name git.xxx.org;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;

    server_name git.xxx.org;

    # logging
    error_log /var/log/nginx/gitea_error.log debug;
    access_log /var/log/nginx/gitea_access.log;

    client_max_body_size 100M; # Push large Objects to gitea

    # Configuration for letsencrypt
    location ^~ /.well-known/acme-challenge/ {
        allow all;
        root /var/lib/letsencrypt/;
        default_type "text/plain";
        try_files $uri =404;
    }

    location / {
        proxy_pass http://127.0.0.1:3000;
    }

    # SSL
    ssl on;
    ssl_certificate /etc/letsencrypt/live/git.xxx.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/git.xxx.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

Konfiguration von Gitea

Da in diesem Beispiel NGinX als Reverse Proxy vorgeschaltet ist, muss hier nur die Root URL angepasst werden. Es ist HTTPS als Protokoll und 443 als Port anzugeben. Gitea selbst arbeitet weiterhin mit dem HTTP Protokoll.

[server]
; Listen protocol. One of 'http', 'https', 'unix' or 'fcgi'.
PROTOCOL                   = http
DOMAIN                     = git.xxx.org
ROOT_URL                   = https://git.xxx.org:443/

Wildcard Zertifikate

In einem anderen Artikel beschreibe ich wie man lokale Dienste mit einem Wildcard Zertifikat absichern kann. Hierfür setzte ich den freien DNS Dienst DuckDNS ein.

Konfiguration

Uhrzeit

sudo systemctl start systemd-timesyncd

Uhrzeit überprüfen

Die Einstellungen die die Uhrzeit betreffen, lassen sich mit timectl überprüfen.

$ timedatectl
               Local time: Fr 2018-12-07 09:27:36 CET
           Universal time: Fr 2018-12-07 08:27:36 UTC
                 RTC time: Fr 2018-12-07 08:27:36
                Time zone: Europe/Berlin (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Sudo Timeout verlängern

Man muss hierzu nur in der Datei /etc/sudoers am Ende folgende Zeile einfügen:

Defaults timestamp_timeout=120 Die Angabe erfolgt in Minuten. Hier ist der Nutzer also 2 Stunden berechtigt, bevor er zunächst wieder das Passwort eingeben muss.

Software

yaourt aus community repository

Installation Text Editor

Ich verwende gern den Texteditor mcedit mit einer einfachen TUI.

sudo pacman -S mc

Als eine Alternative dazu ist der sehr einfach zu bedienende Editor tilde. Dazu muss aber zuvor yaourt installiert werden.

yaourt --noconfirm -S tilde

Anzahl der Prozesse beim Kompilieren

GNU Make kennt den Parameter -jXX. Mit -j kann die Anzahl der parallelen Prozesse festegelegt werden. Dieses beschleunigt den Buildprozess.

sudo mcedit /etc/makepkg.conf

Ich habe hier auf meinem Dual Xeon SMP den Wert auf 20 eingestellt.

#-- Make Flags: change this for DistCC/SMP systems
MAKEFLAGS="-j20"

Repository hinzufügen

Zunächst muss in der /etc/pacman.conf das archlinuxfr Repository am Ende hinzugefügt werden.

[archlinuxfr]
SigLevel = Optional TrustAll
Server = https://repo.archlinux.fr/$arch

mit

sudo mcedit /etc/pacman.conf

Das Packen der Pakete verhindern

Die Programme die mit yaourt installiert bzw. mit makepkg gebaut werden, werden per default mit xz gepackt. Dieses dauert bei größeren Paken wie bei JDK unnötig lange. Dieses bringt bei der lokalen Installation keinen Vorteil.

Daher sollte in der /etc/makepkg.conf die Endung der Pakete auf .pkg.tar geändert werden. Somit wird eine Kompression der Pakete unterbunden.

sudo mcedit /etc/makepkg.conf

Zeilen ändern in…

#########################################################################
# EXTENSION DEFAULTS
#########################################################################
#
# WARNING: Do NOT modify these variables unless you know what you are
#          doing.
#
PKGEXT='.pkg.tar'
SRCEXT='.src.tar.gz'

Installation

Dann aktualisieren und installieren

sudo pacman -Syy yaourt

Als TUI eignet sich die angepasste Version des yourt-gui Programms.

yaourt --noconfirm -S yaourt-gui-manjaro

Nicht vorhandene gpg keys können automatisch von einem Key Server bezogen werden. Dazu muss die Konfiguration des aktuellen Benutzers von gnupg angepasst oder erstellt werden. Die Datei gpg.conf befindet sich in ~/.gnupg und es muss der Konfigurationsschlüssel keyserver-options mit dem Wert auto-key-retrieve hinterlegt werden.

keyserver-options auto-key-retrieve

Dropbox (optional)

Ich bevorzuge syncthing, da meine Daten nur auf meinen Server liegen und die Bedienung mindestens genauso einfach wie unter Dropbox ist.

yaourt --noconfirm -S dropbox && yaourt --noconfirm -S kde-servicemenus-dropbox

Hinweis: Dropbox GUI im Systray hat Probleme mit dem Öffnen der Nonce URL. Wenn nichts passiert beim Klick auf “sign in”, dann dropbox-cli installieren und dropbox-cli start ausführen und URL im Browser öffnen.

Syncthing

yaourt --noconfirm syncthing

Starten des Dienstes als User beim einloggen.

systemctl --user enable --now syncthing.service

Status von Syncthing überprüfen

systemctl --user status syncthing.service

Tail des Logs des Userprozess kann mit journalctl als User ausgeben werden

journalctl --user -f -u syncthing.service

Die WebUI kann dann auf localhost:8384 erreicht werden.

Java und Entwicklungstools

Full OpenJDK Stack

yaourt --noconfirm -S jre-openjdk-headless jre-openjdk jdk-openjdk openjdk-doc openjdk-src # default = current = JDK 11
yaourt --noconfirm -S jre10-openjdk-headless jre10-openjdk jdk10-openjdk openjdk10-doc openjdk10-src
yaourt --noconfirm -S jre8-openjdk-headless jre8-openjdk jdk8-openjdk openjdk8-doc openjdk8-src

Der Support für Java 9 ist beendet und daher gibt es auch keine Pakete mehr.

Gradle

yaourt --noconfirm -S gradle

Maven

yaourt --noconfirm -S maven

Smartgit

yaourt --noconfirm -S smartgit

Bluetooth Headset

yaourt --noconfirm -S pulseaudio-bluetooth pulseaudio-alsa pavucontrol

Bash-completion

yaourt --noconfirm -S bash-completion

Windows emulation mit Wine

yaourt --noconfirm -S wine-staging wine-mono winetricks wine_gecko q4wine

Fernwartung Anydesk

yaourt --noconfirm -S anydesk

Plasma Integration von Chromium

Die Browser Integration ist mittlerweile im Extra Repository, daher muss nicht mehr die plasma-browser-integration-git aus dem AUR kompiliert werden

yaourt --noconfirm -S plasma-browser-integration

Printing

HP Multifunktionsgeräte

yaourt --noconfirm -S hplip avahi

Avahi Daemon starten

sudo systemctl enable --now avahi-daemon

Druckerkonfiguration mit dem Setup-Tool von HP anlegen. Der Scanner wird auch erst nach dem Setup von scanimage oder skanlite erkannt.

sudo hp-setup

Achtung: Manchmal wird der Drucker nicht richtig per Service discovery erkannt. Dann über advanced -> manual discovery gehen.

Advanced Printing

yaourt --noconfirm -S boomaga-qt5

Mysql & Tools

yaourt --noconfirm -S mariadb mysql-workbench innotop mtop percona-toolkit mycli dbeaver dbeaver-plugin-apache-poi dbeaver-plugin-batik dbeaver-plugin-office dbeaver-plugin-svg-format

Optionnal Gnome-Keyring zum speichern von Passwörtern in Mysql-Workbench

yaourt --noconfirm -S gnome-keyring

Setup MariaDB

Install

sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo systemctl enable --now mysqld

Secure

sudo mysql_secure_installation

Postgres

yaourt --noconfirm -S postgres

Setup

Bestimmte Befehle müssen mit rechten der Gruppe postgres ausgeführt werden. Dazu wechselt man am besten mit sudo -u postgres -i den Benutzer.
initdb -D ‘/var/lib/postgres/data’
createuser –interactive

Postman

REST Abfragen werden in der Cloud gespeichert. Anmeldung über Google.

yaourt --noconfirm -S postman    

Fonts

 yaourt --noconfirm -S ttf-ms-fonts ttf-inconsolata

Virtualisierung

Virtualbox

yaourt --noconfirm -S virtualbox linux418-virtualbox-host-modules vde2 vboxtool virtualbox-ext-oracle
sudo vboxreload # (re)loads all virtualbox kernel modules

ReactOS

Unter https://sourceforge.net/projects/reactos/files/ReactOS/ aktuelle ISO für die BootCD runterladen.

Einstellungen

Trim bei SSD

Wie unter Soild State Drive beschrieben, kann mit dem Programm hdparm festgestellt werden, ob das Laufwerk die TRIM-Funktion unterstützt.

yaourt --noconfirm -S hdparm
sudo hdparm -I /dev/sdX | grep TRIM

Bei Unterstützung gibt hdparm aus…

sudo hdparm -I /dev/sdb | grep TRIM
           *    Data Set Management TRIM supported (limit 8 blocks)
           *    Deterministic read ZEROs after TRIM

Laut Wiki wird empfohlen bei neueren SSD auf periodic Trim zu setzen, da continuous Trim zu häufigen einfrieren führen kann. Daher sollte der Timer fstrim.timer aus dem Paket util-linux aktiviert werden.

sudo systemctl enable fstrim.timer

Mit systemctl list-timers kann man den Timer überprüfen. –all muss angegeben werden, weil der Timer noch nicht gelaufen ist.

#sudo systemctl list-timers --all
NEXT                          LEFT     LAST                          PASSED       UNIT                         ACTIVATES
Sat 2018-08-25 00:00:00 CEST  12h left Fri 2018-08-24 09:09:00 CEST  1h 51min ago logrotate.timer              logrotate.service
Sat 2018-08-25 00:00:00 CEST  12h left Fri 2018-08-24 09:09:00 CEST  1h 51min ago man-db.timer                 man-db.service
Sat 2018-08-25 00:00:00 CEST  12h left Fri 2018-08-24 09:09:00 CEST  1h 51min ago shadow.timer                 shadow.service
Sat 2018-08-25 09:47:41 CEST  22h left Fri 2018-08-24 09:47:41 CEST  1h 12min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean>
n/a                           n/a      n/a                           n/a          fstrim.timer                 fstrim.service

Dolphin mit META+E öffnen

Unter Systemeinstellungen –> custom shortcuts eine neue Gruppe my anlegen. Unterhalb der Gruppe my einen neuen Eintrag open dolphin anlegen. Als Trigger META+E angeben und Programm dolphin eintragen.

Quick Window Tiling

Siehe hier

SmartGIT

SmartGIT ist ein umfangreicher GIT Client. SmartGIT ist in Java geschrieben und benötigt bis Version 17.1 Java 8. Hat man ein aktuelles ArchLinux oder Manjaro System, dann ist Java in der 9 an Bord.

Java unter ArchLinux

ArchLinux unterstützt parallele Installation von Java Versionen. Diese befinden sich unter dem Vereichnis /usr/lib/jvm/. Der Pfad zur JRE kann im bin Verzeichnis von SmartGIT angegeben werden. Dazu muss in der smartgit.vm die Variabel jre gesetzt werden.

jre=/usr/lib/jvm/java-8-jdk/jre/

Das TmpFS

Das TmpFS erlaubt das schnelle Zwischenspeichern von temporären Dateien im RAM.

Unter ArchLinux und Manjaro wird beim Starten mit Systemd das TmpFS eingehangen. Das RAM Filesystem belegt Arbeitsspeicher und kann auf Geräten mit wenig RAM dazu führen das sich einige Programme nicht kompilieren lassen bzw. durch Swapping enorm verlangsamt werden.

Im Wiki wird beschrieben wie das automatische Einhängen beim Systemstart verhindert werden kann.

Deaktivierung und (Re)aktivierung

systemctl mask tmp.mount # deaktivieren
systemctl unmask tmp.mount # aktivieren

Beim deaktivieren wird ein symbolischer Link auf /dev/null in /etc/systemd/system/tmp.mount erstellt. Unmask entfernt diesen wieder.