Linux System mit Arch Linux

Installation

Hier soll eine Sammlung von Programmen entstehen, die ich aktuell nicht mehr auf meinen Rechner missen möchte und eine bestimmte Grundausstattung besitzen. Dieser Artikel wird immer wieder aktualisiert, wenn neue wichtige Programme hinzukommen.

Grundinstallation

Als Linux-System wird hier Manjaro verwendet, was auf dem Arch-Linux aufbaut. Vorteil von Manjaro ist der graphische Installer gegenüber dem reinen Arch-Linux.

Und wieso wurde es ein Arch-Linux?

Zum einen sind die meisten vorhanden Packete schon aktueller als in den anderen Distributionen und zusätzlich gibt es noch yaourt, mit dem die aktuellsten Sourcen der meisten Packete direkt übersetzen lassen und die Packete im Anschluss installieren.

Grapische Oberfläche

SDDM – Login-Manager – https://wiki.archlinux.org/index.php/SDDM

PacketnameTypBezugsquelle
SDDMLogin-Managerhttps://wiki.archlinux.org/index.php/SDDM
OpenboxWindows Manager
SynapseProgrammstarter
RemminaRDP (mstsc)http://www.remmina.org/wp/
KRDCRDP (mstsc) KDEhttps://www.kde.org/applications/internet/krdc/

Audioausgabe (mit AirPlay)

Damit die Ausgabe des Linux-System über AirPlay-fähige Geräte gestreamt werden kann, hab ich folgende 2 Pakete benötigt:

  • pulseaudio-raop2: Streamen der Ausgabe an AirPlay Geräte.
  • pavucontrol: damit wird die Ausgabe des Audiostreams eingestellt (Umschalter für z.B. MPlayer auf AirPlay-Gerät)

Nach dem Installieren müssen folgende Befehle ausgeführt werden:

sudo systemctl start avahi-daemon #startet den Dienst
avahi-browse -t --all #Zeigt alle AirPlay Geräte im Netz an
sudo systemctl enable avahi-daemon #aktiviert den Dienst für Autostart

Weitere Informationen findet man auch hier: AirTunes.

 

Weitere Programme:

PacketnameTypBezugsquelle
Visual Studio CodeEditorMicrosoft
AtomEditoryaourt

Logitech K350 MediaKeys mit AIMP und MPC-HC

Nach dem ich mir nun die K350 von Logitech zugelegt habe, hatte ich zuerst schon bedenken, dass ich wieder vom AIMP-MediaPlayer zu Winamp oder gar Windows Media Player wechseln muss, da im AIMP die MediaKeys von der Tastatur nicht funktionierten.

Glücklicherweise fand ich aber im Internet die Lösung, und zwar muss in der Player-Ini des SetPoint-Programmes AIMP nur nachgetragen werden. Wichtig dabei ist darauf zu achten, welche Version von AIMP installiert ist. Hatte hier ein paar Probleme da ich mit einer falsche Version gearbeitet hatte.

Die Ini findet man nach der Standard-Installation unter folgenden Pfad:

%ProgramFiles%\Logitech\SetPointP\players.ini

Die INI muss um die Zeilen 2-4 erweitert werden, die der Sektion „Players“ hinzugefügt werden müssen:

[Players]
AIMP2=cmd,AIMP2.exe,Winamp v1.x,xxx,xxx,40045,40046,40047,40044,40048,0,1,WinAmp 5
AIMP3=cmd,AIMP3.exe,Winamp v1.x,xxx,xxx,40045,40046,40047,40044,40048,0,1,WinAmp 5
AIMP4=cmd,AIMP.exe,Winamp v1.x,xxx,xxx,40045,40046,40047,40044,40048,0,1,WinAmp 5
mplayerc=wac,mpc-hc64.exe,MediaPlayerClassicW,Windows Media Player,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Media Player Classic
...

Alle anderen Einträge müssen nicht angepasst werden. Die markierte Zeile 5 zeigt, wie der Eintrag definiert ist, damit der Media Player Classic (MPC-HC) von der SetPoint-Software zu erkennen wird.

VMware Player 6 unter Windows 10

Nach dem erfolgreichen Update von Windows 8.1 auf Windows 10 hat leider der VMware Player nicht richtig funktioniert.

Zuerst konnte die VM’s zwar gestartet werden, aber keine der gestarteten VM’s ist mehr ins Netzwerk gekommen. Bei „Configure Adapaters“ bei der Bridge-Einstellung, war auch keine der Netzwerkkarten mehr anzuwählen. Nach etwas Recherche bin ich darauf gestoßen, dass der Bridge-Dienst nicht mehr auf der Netzwerkkarte installiert ist.

Um dies zu beheben, muss man zu den Netzwerkeinstellungen. Öffnet dort das Eigenschaftsfenster der physikalischen Netzwerkkarte und dort kann man über die Schaltfläche „Installatieren…“ neue Komponenten einrichten. Nach dem Klick auf die Schalftfläche „Dienst“ auswählen und mit „Hinzufügen…“ bestätigen. Dann unter dem Hersteller VMware den „VMware Bridge Protocol“ Eintrag auswählen und mit „OK“ bestätigen. Nach dem installieren, können dann die Netzwerkkarten bei Bridge wieder konfiguriert werden und eine Verbindung ins Netzwerk ist wieder möglich.

Nach einen Neustart des Host ist dann ein andere Fehler aufgetaucht, und zwar wurde beim versuch eine VM zu starten die Fehlermeldung „error while powering on: internal error“ angezeigt.

Um diese Problem zu lösen, muss der Dienst „VMware Authorization Service“ manuell nach gestartet werden. Er steht zwar auf Automatisch, ist beim hochfahren aber nicht gestartet worden oder wieder abgestürzt. Nach dem Start des Dienstes funktioniert jede VM wieder

Arch Linux Single User Mode

Um bei Arch Linux in den Single User Mode zu kommen ist fogendes notwendig:

  1. Im Grub den Eintrag des zu startenden Linux auswählen und die Taste [E] drücken
  2. Im angzeigten Skript die nachfolgende Stelle suchen:
    ... rw  quiet splash
  3. „quiet splash“ entfernen und „single“ einsetzen
  4. Nun mit [Strg]+[X] das starten des Linux initieren
  5. nach kurzer Wartezeit, wird das root-Passwort verlangt, dies bitte eingeben
  6. nun kann man die notwendigen Änderungen durchführen damit das System wieder richtig startet, z.B. einen lightdm deaktivieren und lxdm wieder aktivieren:
    systemctl disable lightdm
    systemctl enable lxdm
  7. Wenn alles fertig ist, kann durch „exit“ der Single User Mode verlassen werden, und der Startvorgang läuft weiter.

Git GUI unter Linux an GitLab Server mit PuTTY-Key

Nach der Umstellung auf LInux System, benötigte ich meinen vorhanden PuTTY-Schlüssel als OpenSSH Schlüssel im Linux System. Für die Wandlung gibt es unter linux puttygen, was entweder einzeln oder im Packet putty-tools installiert wird. Zum Wandeln wird folgender Befehl benutzt:

puttygen <keyfile> -O  private-openssh -o <output>

In <keyfile-PuTTY> wird der Putty-Schlüssel angegeben und bei <output> wird die Ausgabedatei angegeben, welche auch direkt die Datei „~/.ssh/id_rsa“ sein kann.

Um den Public-Key zu ermitteln, wird folgender Befehl benutzt:

ssh-keygen -f <source-private-key> -y > <output>

Hier wird bei <source-private-key> der OpenSSH-Private-Key benötigt, und bei Output der Ziel des Public-Keys definiert, z.B: „~/.ssh/id_rsa.pub“.

Damit dann meine gewählte Git-GUI, hab mich für GitEye entschieden, auch noch richtig funktionierte musste unter „Window -> Prfeferences -> General -> Nework Connections -> SSH2 -> Private keys: der id_rsa an den Anfang geschoben werden.

Linux Desktop Screenshots und Video-Aufzeichnung

Um unter Linux einen Screenshot vom Desktop oder nur eines Ausschnitts zu erzeugen, gibt es die Software Shutter. Nach dem Start dieser Software, kann damit genauso gearbeitet werden wie mit dem Snipping-Tool von Windows 8.

Zu Aufzeichnung eines Desktop-Videos, kann unter Gnome zum einem die Tastenkombination „Strg + Alt + Umschalt + R“ benutzt werden. Nach dem Starten erscheint oben rechts ein roter Punkt, der darstellen soll, dass die Aufnahme läuft. Das Video wird in den Benutzerverzeichnis im Ordner Videos abgelegt.

Des weiteren gibt es die Software SimpleScreenRecorder, welche eine Hülle an möglichen Einstellungen besitzt (die nicht angepasst werden müssen, aber können). Mit dieser können auch nur feste Ausschnitte bzw. der Maus folgende Ausschnitte aufzeichnet werden und nicht immer der ganze Desktop.

Windows 8 Energiesparmodus

Da ich immer wieder Probleme mit automatischen Aufwachen aus dem Energiesparmodus in Windows 8 hatte, hab ich mich im Internet etwas umgeschaut und bin auf folgenden Befehl gestoßen:

powercfg -devicequery wake_armed

Mit diesen, werden alle Geräte aufgelistet, die den Rechner aus den Energiesparmodus aufwecken dürfen. Und mit nachfolgenden Befehl, können einzelne Geräte entfernt werden:

powercfg -devicedisablewake [device_name]

(device_name, durch den Namen des zu entfernenden Gerät ersetzen. Vorsicht, wenn der Gerätename Leerzeichen beinhaltet, muss der Namen mit „“ umschlossen werden)

C# Dienst mit eigener Installationsroutine (per /i)

Nach langer suche und vielen Zusammenstückeln, habe ich nun endlich ein komplettes Paket um einen Dienst die Möglichkeit zu implementieren sich selbst per Kommandozeilenparameter zu installieren.

Ebenso wird zeitgleich eine Konsolenausgabe mit implementiert. Das einzige Problem hier ist, solange der Projekt-Typ nach Standard auf „Windows Anwendung“ steht, funktionieren das Attachen nicht ganz komplikationslos, da die Anwendung in der Konsole direkt zurückkehrt ohne aufs Ende des Prozesses zu warten. Um diese Problem wegzubekommen, muss der Projekt-Typ auf „Konsolen Anwendung“ umgestellt werden.

Dieser Quellcode hat einen großen Vorteil gegenüber anderen die noch vorhanden sind, da hier beim installieren und deinstallieren das gleiche durchgeführt wird, was auch das InstallUtil Programm durchführt. Daher kann das Array welches bei Install und Deinstall übergeben wird, entsprechend der Parameter die am InstallUtil vorhanden sind erweitert werden.

(Vorne weg noch ein kleiner Tip, sollte die using-Direktive zu einer Klasse fehlen und die Klasse wurde richtig geschrieben, dann kann per [Strg]+[.] die Direktive automatisch ermittelt und hinzugefügt werden. Für den Fall das ich welche vergessen habe.)

Zuerst einmal die Konstanten und die Imports, welche innerhalb der „static class Program“ eingefügt werden müssen:

const uint ATTACH_PARENT_PROCESS = 0x0ffffffff;
const int ERROR_ACCESS_DENIED = 5; // Process ist schon attached von einer anderen Konsole
[DllImport("kernel32", SetLastError = true)]
static extern bool AllocConsole();
[DllImport("kernel32", SetLastError = true)]
static extern bool FreeConsole();
[DllImport("kernel32", SetLastError = true)]
static extern bool AttachConsole(uint dwProcessID);

Die Main-Prozedur (der noch der Paramter „string[] args“ hinzugefügt werden muss, wenn nicht vorhanden) muss nun folgender weise erweitert werden:

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new MyNewService() };
if (System.Environment.UserInteractive)
{
  if(!AttachConsole(ATTACH_PARENT_PROCESS) || Marshal.GetLastWin32Error() == ERROR_ACCESS_DENIED)
    AllocConsole();
  // Uebergabe Parameter
  bool install = false;
  bool uninstall = false;
  bool debug = false;
  string value = "";
  int pos = -1;
  for (int i = 0; i < args.Length; i++)
  {
    var arg = args[i];
    value = "";
    pos = arg.IndexOf('=');
    if (pos > 0)
    {
      value = arg.Substring(pos + 1);
      arg = arg.Substring(0, pos);
    }
    switch(arg.ToLower())
    {
      case "/i": install = true; break;
      case "/u": uninstall = true; break;
      case "/c": debug = true; break;
      case "/account": /*Account-Typ aus der Variable value speichern*/ break;
      case "/user": /*Benutzer aus der Variable value speichern*/ break;
      case "/passwd": /*Passwort aus der Variable value speichern*/ break;
      default:
        Console.WriteLine("Argument nicht verstanden: {0}", arg);
        break;
    }
  }
  try
  {
    if (install)
    {
      var combArgs = new string[] { Assembly.GetExecutingAssembly().Location };
      System.Configuration.Install
        .ManagedInstallerClass.InstallHelper(combArgs);
    }
    else if (uninstall)
    {
      var combArgs = new string[] { "/u", Assembly.GetExecutingAssembly().Location };
      System.Configuration.Install
        .ManagedInstallerClass.InstallHelper(combArgs);
    }
    else if (debug)
    {
      var svc = ServicesToRun[0] as MyNewService;
      svc.OnStartDebug(args);
      Console.WriteLine("[Return] fürs beenden drücken...");
      Console.ReadLine();
      svc.OnStopDebug();
    }
  }
  catch (Exception exc)
  {
    Console.WriteLine(exc.Message);
  }
  // Konsole wieder freigeben
  FreeConsole();
}
else
{
  // Wenn das Programm nicht ueber die Konsole gestartet wurde dann als Dienst starten lassen
  ServiceBase.Run(ServicesToRun);
}

Zusätzlich müssen die 2 Funktionen (OnStartDebug/OnStopDebug) angelegt werden, die einzig die gleichnamigen (ohne Debug am Ende) protected Methoden aufrufen, wenn der Debug-Modus gewünscht ist. Wenn nicht, dann einfach diesen Teil aus den obigen Quellcode entfernen.

Mit Munin ein Windows-System überwachen

Wichtige Informationen zu beiden Wegen

Der Name des Windowsrechners muss vom Linux System immer auflösbar sein. Wichtig ist dies bei Einstellungen in der munin.conf, das dort immer der richtige Rechnername verwendet wird. Funktioniert die Namensauflösung nicht, oder nicht richtig, dann ist es sinnvoller die Namen mit Verknüpfung auf die IP Adresse in die „/etc/hosts“-Datei einzutragen.

Alle Werte, welche mit {}-Klammern umrahmt sind, sind entsprechend durch die passenden Informationen auszutauschen und die {}-Klammern zu entfernen. Bei anderen Werten handelt es sich um feste Werte die nur bei entsprechendem Fachwissen ausgetauscht werden sollten.

Überwachen mit SNMP

Arbeiten auf Seite des Master-Servers (Debian Squezzy)

In der Datei „/etc/munin/munin.conf“ muss der Name des Windowscomputers hinterlegt werden (MeineGruppe ist der Name einer frei definierbaren Gruppe [wird für Gruppenweite Einstellungsmöglichkeiten benötigt], MeinComputer ist der Rechnername von Windows. Beides ist entsprechend anzupassen):

[{MeineGruppe};{MeinComputer}]
address 127.0.0.1

Die Datei „/etc/munin/plugin-conf/munin-node“ muss noch um einen Abschnitt erweitert werden, damit der munin-node weiß von welcher Addresse er die Information beziehen soll (IP ist entsprechend anzupassen, MeinComputer muss genauso wie im Abschnitt drüber angepasst werden):

[snmp_{MeinComputer}*]
env.ip {x.x.x.x}
env.port 161
env.community public

Im Verzeichnis „/usr/share/munin/plugins/“ sind verschiedene Scripte für SNMP vorhanden, diese müssen nun noch in den „/etc/munin/plugins/“-Ordner gelinkt werden, mit der Namenskonvention snmp_MeinComputer_*. Damit dies nicht alles per Hand durchgeführt werden muss, existiert folgender Befehl (MeinComputer wieder entsprechend oben angegeben anpassen):

munin-node-configure -snmp {MeinComputer} --shell | sh -x

Dadurch werden Shell-Befehle ausgeben welche durch „| sh -x“ direkt ausgeführt werden und alle SymLinks erstellen, welche noch nicht existieren.

Dann noch mit folgenden Befehl, den munin-node neustarten lassen und schon wurde auf Master-Seite alles durchgeführt:

/etc/init.d/munin-node restart

Arbeiten auf Seiten des Client Computers (Windows)

Windows XP

Hier muss „nur“ ein SNMP-Dienst installiert werden. Dieser wird ab Windows XP von Microsoft direkt mitgeliefert und muss nur noch installiert werden. Die Installation findet man unter „Systemsteuerung“-> „Software“ -> „Windows-Komponenten hinzufügen/entfernen“ -> „Verwaltungs- und Überwachungsprogramme“ -> „SNMP (Simple Network Management Protocol)“ (Hier kann man auch gleich den „WMI SNMP-Anbieter“ mit aktivieren). Hacken aktivieren und mit Ok und Weiter die Installation starten.

In der Dienste-Verwaltung (Start -> Ausführen -> „services.msc“ -> OK drücken) am „SNMP-Dienst“ die Eigenschaften öffnen, auf der Tabreiter „Sicherheit“ den Hacken bei „Authentifizierungstrap senden“ aktivieren, „SNMP-Pakete von jedem Host annehmen“ aktivieren und als Communitynamen public mit Standardberechtigung erstellen wenn nicht vorhanden. Nach den verändern der Einstellung nochmal den Dienst neu starten.

Windows 7

Arbeitsschritte sind die gleichen wie bei Windows XP nur die Elemente sind anderes benannt. Die Installation ist hier unter „Systemsteuerung“ -> „Programme und Funktionen“ -> „Windows-Funktionen aktivieren oder deaktiveren“ -> „Simple Network Managment-Protokoll (SNMP)“ (auch hier kann „SNMP WMI-Anbieter“ aktiviert werden).

Konfiguration und neu starten des Dienstes nicht vergessen!

Windows 2008 Server

Ebenfalls die selben Schritte. Die Installation findet man unter „Systemsteuerung“ -> „Programme und Funktionen“ -> „Windows-Funktionen aktivieren oder deaktiveren“ -> „Server-Manager\Features“ -> „Features hinfzufügen“ (Rechts oben im eck) -> „SNMP-Dienst“ (anwählen, dadurch werden die 2 Unterpunkte mit aktivieret) mit Weiter und Installieren die Installation starten.

Konfiguration und neu starten des Dienstes nicht vergessen!

Überwachen mit munin-node

Ich finde die Methode über munin-node angenehmer zu konfigurieren. Da hier zum größten Teil alles in der munin-node.ini-Datei (zu erstellen im Verzeichnis der Exe) auf dem Windowscomputer konfiguriert wird. Ebenso ist die Ausbeute bedeutend größer als über SNMP, da hier durch eigene Plugins sowie Performance Counter erweitert werden kann. Der einzige Nachteil, es muss eine zusätzliche Software heruntergeladen und installiert werden.

Arbeiten auf Seite des Master-Servers (Debian Squezzy)

In der Datei „/etc/munin/minun.con“ folgenden eintrage hinzufügen (MeineGruppe ist der Name einer frei definierbaren Gruppe [wird für Gruppenweite Einstellungsmöglichkeiten benötigt], MeinComputer ist der Rechnername von Windows, x.x.x.x ist die IP-Adresse des abzufragen Windowsrechners. Alle 3 sind entsprechend anzupassen):

[{MeineGruppe};{MeinComputer}]
address {x.x.x.x}
use_node_name yes

Zum aktiveren jetzt noch den Dienst neustarten per:

/etc/init.d/munin-node restart

Arbeiten auf Seiten des Client Computers (Windows)

Zuerst muss „munin-node-win32“ installiert werden. Der Download ist unter http://code.google.com/p/munin-node-win32/downloads/list zu finden. Nach der Installation findet man im Installationsverzeichnis nur 2 Dateien, den Dienst selbst und eine Uninstall.exe.

Zur Konfiguration gibt es auf der oben genannten Website noch eine kleine Wiki. Hier aber mal eine vorgefertigte Version (Aufpassen bei der Codierung, muss „UTF-8 ohne BOM“ sein) für ein Deutsches Windows XP (Wichtig ist hier zu beachten, das bei den PerfomanceCountern auf die Sprache zu achten ist!):

 

[Plugins]
; Plugin Section, 1 enables plugin, 0 disables
Disk=1
Memory=1
Processes=1
Network=1
MbmTemp=1
MbmVoltage=1
MbmFan=1
MbmMhz=1
SMART=1
HD=1
Cpu=1
SpeedFan=0
;uptime=1 ;Ist in den Sourcen noch nicht freigeschalten (Stand 1.6.0)
External=0
NewExternal=0
[ExternalPlugin_free]
;Command=c:\1\disk_free.py
;env.foobar=free
[DiskPlugin]
; Default Warning and Critical values for % space used
Warning=92
Critical=98
[ExternalPlugin]
; For External Plugins just add an entry with the path to the program to run
; It doesn't matter what the name of the name=value pair is
;Plugin01=C:\Users\Jory\Documents\Visual Studio Projects\munin-node\src\plugins
python\disk_free.py
[PerfCounterPlugin_disktime]
DropTotal=1
Object=Logischer Datenträger
Counter=Zeit (%)
CounterFormat=double
CounterMultiply=1.000000
GraphTitle=Disk Time
GraphCategory=disk
GraphArgs=--base 1000 -l 0
GraphDraw=LINE
[PerfCounterPlugin_processor]
DropTotal=1
Object=Prozessor
Counter=Prozessorzeit (%)
CounterFormat=double
CounterMultiply=1.000000
GraphTitle=Processor Time
GraphCategory=system
GraphArgs=--base 1000 -l 0
GraphDraw=LINE
[PerfCounterPlugin_uptime]
Object=System
Counter=Systembetriebszeit
GraphTitle=Uptime
GraphCategory=system
GraphDraw=AREA
GraphArgs=--base 1000 -l 0
DropTotal=0
CounterFormat=large
CounterMultiply=1.1574074074074073e-005
[PerfCounterPlugin_processtime]
DropTotal=1
Object=Prozess
Counter=Prozessorzeit (%)
CounterFormat=double
CounterMultiply=1.000000
GrapTitle=Processtime
GraphCategory=system
GraphDraw=AREA
GraphArgs=--base 1000 -l 0
[SpeedFanPlugin]
BroadcastIP=192.168.0.255
UID=FF671100