Mein alter Hörspielserver, ein eMac G4, geht nun in Rente, und so brauchte ich Ersatz.
Die Aufgabe des Servers besteht darin, MP3-Dateien abzuspielen und CDs zu rippen.
Gesteuert wird er über das Netzwerk per VNC und FreeNX.
Im Leerlauf soll der Server in den Ruhezustand fahren. Per Wake on LAN wird er dann bei Bedarf wieder aufgeweckt.
Folgende Hardware kommt zum Einsatz:
- ASRock N68-S (AM2)
- AMD SAM3 Sempron 2700Mhz
- 2048MB PC800 DDR2-RAM
- 2 Festplatten: 160GB fürs System, 1TB für die Daten
Mit einem Mini-Tower kostet die Hardware beim Laden um die Ecke ca 280,-.
Als System wird ein frisches Ubuntu Karmic Koala 32bit verwendet. Dieses hab ich von CD aus installiert. Da der Server keinen graphischen Schnick-Schnack machen muss, benutze ich keine proprietären Grafiktreiber (auf dem Board sitzt eine GeForce 7025 mit nForce 630a Chip. Ich hab hier gelesen, dass bei Verwendung der NVIDIA-Treiber evtl. noch ein BIOS-Update durchgeführt werden muss. Da hatte ich keine Lust drauf).
Systemeinrichtung
Scriptordner
Eigentlich habe ich auf so ziemlich jedem System meinen eigenen Scriptordner. Logisch also, dass auch der Hörspielserver einen bekommt. Ich erstelle daher einen eigenen bin/-Ordner im home-Verzeichnis:
cd ~
mkdir bin
chmod 744 bin
Damit auch alle Dateien des Verzeichnisses von “überall” in der Konsole aufgerufen werden können, muss noch der PATH entsprechend angeglichen werden. Hierzu editiert man im Homeverzeichnis die Datei .bashrc um folgenden Inhalt:
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/produnis/bin
Hierbei müsst ihr auf eurem System natürlich das “produnis” gegen euren Benutzernamen tauschen.
Wenn die Datei gespeichert wurde, müsst ihr euch einmal aus der Konsole aus- und wieder einloggen. Ab jetzt können alle Scripte im /home/BENUTZER/bin-Verzeichnis ohne ./ vorweg aufgerufen werden.
Wake on Lan
Damit Wake on LAN (WOL) funktioniert, muss zunächst im BIOS des Boards diese Funktion aktiviert werden. Ist das System wieder hochgefahren, muss das Paket ethtool installiert werden, z.B. per
sudo apt-get install ethtool
Mein Server besitzt nur die On-Board-Netzwerkkarte (eth0). Über diese Karte soll der Server per “Magic Package” geweckt werden. Um diese Funktion zu aktivieren gibt man ein:
sudo ethtool -s eth0 wol g
Damit diese Funktion auch beim Systemstart automatisch zur Verfügung steht, öffnet man die Datei /etc/rc.local und trägt den Befehl dort über dem “exit 0“-Eintrag ein.
Das sieht bei mir so aus:
#!/bin/sh -e # # (...) # # By default this script does nothing. sleep 5 ethtool -s eth0 wol g exit 0
Standardmäßig wird die Netzwerkkarte beim Herunterfahren deaktiviert, so dass sie keine Packages im Ruhezustand annehmen kann. Um dies zu verhindern, muss in der Datei /etc/init.d/halt der Eintrag NETDOWN=yes geändert werden in NETDOWN=no
Auf meinem Server funktioniert nun WOL ohne Probleme.
VNC
Der Server besitzt keinen eigenen Monitor, und überhaupt soll er hauptsächlich über das LAN, also per VNC oder FreeNX gesteuert werden. Ich persönlich finde vino (Ubuntus Standard-VNC-Server) nicht so dolle, und daher installiere ich mir lieber x11vnc:
sudo apt-get remove vino
sudo apt-get install x11vnc
Damit nicht jeder aus meinem Heimnetz den Server ansteuern kann (es soll Leute geben, die Die drei ??? nicht mögen, und daher lieber auf Point Whitmark umschalten! Frechheit!), hinterlege ich ein VNC-Passwort.
Im Terminal wird hierzu folgender Befehl eingegeben:
x11vnc -storepasswd
Man wird nach dem neuen VNC-Passwort gefragt (plus Bestätigung). Dieses ist anschließend in der Datei ~/.vnc/passwd gespeichert.
Nun bastel ich mir ein kleines Startscript für x11vnc mit dem Namen x11vnc.start.sh:
cd ~/bin/
touch x11vnc.start.sh
chmod +x x11vnc.start.sh
vim x11vnc.start.sh
Dieses bekommt folgenden Inhalt:
#!/bin/bash echo "Kille evtl. laufende x11vnc-Prozesse" killall -9 x11vnc echo "starte x11vnc neu" x11vnc -avahi -display :0 -usepw -forever & bg echo "fertig"
Die Parameter des Scripts bedeuten:
-avahi= Der Server wird den VNC-Clients als “potentiell verfügbar” angezeigt-display :0= Der Standardmonitor wird übertragen-uswepw= Das Passwort wird abgefragt-forever= x11vnc beendet sich nicht, falls ein Client die Verbindung beendet
Damit das Script bei jedem Systemstart ausgeführt wird, trage ich es unter “System/Einstellungen/Startprogramme” als zusätzliches Programm ein. Alternativ kann man auch per Terminal ins Verzeichnis ~/.config/autostart wechseln, und dort eine neue Datei mit Endung .desktop anlegen, z.B. x11vnc.desktop. Diese bekommt folgenden Inhalt:
[Desktop Entry] Type=Application Exec=/home/produnis/bin/x11vnc.start.sh Hidden=false X-GNOME-Autostart-enabled=true Name[de_DE]=x11vnc Name=x11vnc Comment[de_DE]=x11vnc Comment=x11vnc
Sollte wider Erwartens x11vnc mal absaufen, kann man einfach das eben erstellte Script im Terminal aufrufen:
x11vnc.start.sh
automatische Useranmeldung
Auf dem Server gibt es nur einen Benutzer, und desses GNOME-Session wird dazu verwendet, die Musikwiedergabe und -verwlatung zu regeln. Es gibt keine “kritischen” oder “privaten” Daten, und daher darf “jeder” die Session dieses Users (per VNC) benutzen, sofern er das VNC-Passwort kennt. Deshalb möchte ich, dass beim Booten direkt in die Usersession gestartet wird (automatische Useranmeldung). Hierfür editiert man die Datei /etc/gdm/custom.conf und setzt AutomaticLoginEnable auf true, sowie AutomaticLogin auf den entsprechenden User. Bei mir sieht das dann so aus:
[daemon] TimedLoginEnable=false AutomaticLoginEnable=true TimedLogin=produnis AutomaticLogin=produnis TimedLoginDelay=30
Bildschirmauflösung
Da beim Booten des Servers kein Monitor angeschlossen ist, setzt das System die maximale Bildschirmaulösung auf 800×600. Damit man per VNC eine höhere Auflösung erhält, wird die Datei /etc/X11/xorg.conf mit folgendem Inhalte (neu) angelegt (Die Datei xorg.conf wird vom System nicht mehr benötigt und fehlt daher bei der Standardinstallation bzw. wenn keine proprietären Treiber installiert wurden. Wenn man sie aber neu anlegt, dann wird sie vom System gelesen und verwendet):
Section "Device" Identifier "VNC Device" Driver "vesa" EndSection Section "Screen" Identifier "VNC Screen" Device "VNC Device" Monitor "VNC Monitor" SubSection "Display" Modes "1024x768" EndSubSection EndSection Section "Monitor" Identifier "VNC Monitor" HorizSync 30-70 VertRefresh 50-75 EndSection
Ruhezustand
Der Server soll Musik abspielen, namentlich Hörspiele für abends zum Einschlafen. Wird keine Musik abgespielt, soll er in den Ruhezustand fahren. Per Wake on LAN wird er bei Bedarf wieder aufgeweckt.
In GNOME kann dies unter System/Einstellungen/Energieverwaltung unter “Rechner bei Leerlauf in Energiesparmodus versetzen” eingestellt werden (bei mir: 10 Minuten).
Das hat aber folgenden Effekt:
Wenn man sich nicht per VLC sonder per NX verbindet, dann wird nach 10 Minuten “nur” die virtuelle NX-Sitzung in den Ruhestand geschickt. Oder andersherum: obwohl man per NX recht aktiv ist, die “richtige” GNOME-Session aber im Leerlauf ist, dann fährt der Rechner nach 10 Minuten in den Suspend. Das ist übrigens der Grund, warum ich den Server (vor allem abends) ausschließlich per VNC steuer.
Hierbei kann es Probleme mit VNC geben, wenn nach dem Aufwachen der GNOME-Bildschirm gesperrt ist, und man das Benutzerpasswort eingeben muss um die Sitzung zu entsperren.
Um diesen “Lock”-Modus abzuschalten, verbindet man sich per VNC mit dem Server, öffnet dann in der VNC-Session ein Terminal und tippt ein:
gconf-editor
Es öffnet sich der Konfigurationseditor. Hier wählt man aus der linken Leiste apps/gome-power-manager/lock aus, und entfernt die Häkchen bei “hibernate” und “suspend“.
Anschließen wählt man in der linken Spalte desktop/gnome/lockdown und setzt bei “disable_lock_screen” ein Häkchen.
Musikplayer
Tja, auf dem alten eMac habe ich natürlich iTunes verwendet. Daher möchte ich bestimmte Funktionen, an die ich mich 8 Jahre lang gewöhnt habe, weiterhin nutzen:
- Dateimanager – neue Titel werden automatisch anhand des ID3Tags umbenannt in
Artist/Album/Tracknummer - Titelund so im Hauptordner der Musiksammlung hinterlegt. - Cover aus ID3Tags werden angezeigt
- Cover werden in den ID3Tag gespeichert (so sind sie dann auf externen Playern verfügbar)
- während der Musikwiedergabe wird der Ruhezustand unterdrückt
So ziemlich alle Player unter Linux haben Probleme mit dem Speichern der Covers innerhalb des ID3Tags. Lediglich bei aTunes und Songbird habe ich diese Funktion entdeckt. Während aTunes Probleme mit dem Dateimanagement hat, kann Songbird den Suspend-Modus nicht unterdrücken (betrifft aTunes auch).
Für Rhythmbox steht hierfür ein Plug-In zur Verfügung, und Amarok verhindert wohl auch, dass bei Musikwiedergabe der Ruhezustand aktiviert wird. Bei beiden fehlt aber wieder dieses Cover-in-Tag-speichern-Feature. Die Auswahl ist also schwierig, aber so hab ich es für mich gelöst:
- abends nutze ich Rhythmbox, damit der Rechner nach dem Hörspiel einschläft – so wie ich
- wenn ich das Cover im ID3-Tag ändern möchte, verwende ich Songbird. Meist hab ich die Dateien eh liebevoll getaggt, bevor ich sie meiner Sammlung hinzufüge
Ich verstehe gar nicht, warum dieses Cover-Metadata-Feature sich noch nicht wirklich durchgesetzt hab. Ich hab mich da so dran gewöhnt, ich möchte es nicht mehr missen…
[UPDATE:]
Mittlerweile habe ich einen Workaround herausgefunden, so dass auch bei Songbird ein Suspend verhindert wird.
Links:




24. Januar 2010 13:50
Da habe ich eben nur den Artikel aus dem Planeten gelesen und kommentiert und dabei völlig diesen Post übersehen, wo steht dass du auch FreeNX benutzt.
24. Januar 2010 13:51
24. Januar 2010 14:49
Ein sehr schöner Artikel, aus dem man viele Informationen ziehen kann. Genau solche Artikel machen einen Blog wie diesen wertvoll. Dein Schreibstil ist sehr angenehm zu lesen und alles ist verständlich strukturiert.
Sauber
24. Januar 2010 19:25
Schöner Artikel. Ich würde aber X-Server/-Client (XDMCP) bevorzugen.
Die Vorteile ggü. VNC: Der entfernte Bildschirm ist immer so groß wie das Fenster, ohne dass man sich darum kümmern muss, und man braucht nicht am Server lokal angemeldet sein.
Ab Ubuntu 9.10 ist die Aktivierung jedoch nicht mehr über ein grafisches Tool erreichbar. Statt dessen ändert man in der /etc/gdm/gdm.schemas folgende Einträge (anschließend muss gdm neu gestartet werden).
security/DisallowTCP
b
false
xdmcp/Enable
b
true
Dann braucht man noch einen Remote-XServer, wie Xephyr, ein passender Aufruf ist z.B. folgender:
Xephyr -screen 1000×800 -kb -ac -query 192.168.1.1 -once :10
Mit dieser Methode lässt sich übrigens auch das verlorene “In Fenster neu anmelden” erreichen; man nehme einfach 127.0.0.1 als Adresse…
25. Januar 2010 09:18
Ein toller Beitrag, danke dafür!
25. Januar 2010 13:14
Ähm. EasyTag is ein sehr mächtiges Tagging-Tool. Ich nutze das um die meist eher unschönen Tagging-Geschichten von $Musikprogramm zu ersetzen. (Da hat jeder Player ja so seine eigenen Macken)
25. Januar 2010 19:08
Ich kann Dir auch nur EasyTag empfehlen. Früher gab es Probleme mit den eingebetteten Grafiken (wurden von den Playern nicht richtig angezeigt), aber inzwischen funtioniert das einwandfrei.
Auch gut, um bei großen Mengen von mp3s den gleichen Tag zu ändern/löschen oder die Dateien in ein bestimmtes Muster umzubenennen.
16. Februar 2010 16:17
Ich hab auch so meine Probleme mit dem EasyTag, es ist einfach nur noch nen overkill. Zwei anmerkungen:
1) Warum ein Cover ~20 mal speichern, wenn eine cover.jpg reicht?
2) Wie gehts du bei deiner bennenung mit mehren Künstlern pro Album und mehrere CD pro Album um?
16. Februar 2010 16:25
zu 1) Wenn ich nur ein Stück irgendwohin kopiere (z.B. Mp3-Player), dann hab ich da auch das Cover
zu 2) Wenn mehrere Künstler auf einer CD sind, dann hab ich dafür extra den Ordner “Compilation”. Da kommt die CD dann rein. Wenn es bei einem Album mehrere CDs gibt, z.B. Die Toten Hosen “Kreuzzug ins Glück”, dann haben die Titel der ersten CD eine 1- davor, die der zweiten eine 2- …. das sieht dannn so aus: 1-01_Overtuere.ogg 1-02_Kreuzzug_ins_Glueck.ogg 2-01_Willi.mp3
Ich hab das so von iTunes übernommen…
17. Februar 2010 14:10
re 1) man kopiert doch keine Musik
re 2) klingt gut, werds mal testen, danke