Alle Beiträge von Kamil Günay

Projekt Homeserver im Eigenbau 10: Der Dateiserver Samba

Der Samba Server ist vielleicht einer der wichtigsten Teile des Servers überhaupt. Letztlich wird der gesamte Dateiaustausch zwischen dem Server und Windows-Rechnern hierüber abgewickelt. Sogar mein XBMC-Mediacenter oder mein MacBook können über das SMB-Protokoll auf den Server zugreifen.

In diesem Beitrag geht es daher ausschließlich um Samba, dessen Grundkonfiguration und das Einrichten einer Freigabe, auf die von einem Windows-Rechner aus zugegriffen werden kann.

Geht mal an euren Windows-Rechner, drückt Windowstaste+R und gebt in das Dialogfeld mal folgendes ein:

\server01

Es wird zwar ein Fenster aufgehen, aber es wird leer sein. So, wie Samba zur zeit konfiguriert ist, werden wir auf keine Daten des Servers zugreifen können.

Samba konfigurieren

Um den Samba-Dienst zu konfigurieren, öffnen wir die Konfigurationsdatei von Samba.

sudo nano /etc/samba/smb.conf

Geht jetzt mit den Pfeiltasten zeilenweise durch die Datei. Hier sind in kommentierten Zeilen die Optionen einzeln erläutert. Stellt ein, was ihr für nötig haltet. Aber im Grunde ist erst mal nur eine Option wirklich wichtig:

workgroup: Tragt hier die Arbeitsgruppe eures Heimnetzwerks ein. Bei mir ist das “KAMIL”. Die Zeile sieht dann so aus:

workgroup = KAMIL

Um euch mal einen Überblick darüber zu verschaffen, welche Optionen in der smb.conf noch alles eingestellt werden können, könnt ihr euch mal die Manpage zu smb.conf ansehen.

Das Home-Verzeichnis als Freigabe

Um auf unser Home-Verzeichnis auch von Windows aus zugreifen zu können, damit wir z. B. Dateien davon sichern oder welche hochladen können, muss am Ende der Konfigurationsdatei ein Block mit diversen Parametern angefügt werden. Die Freigabe meines Home-Verzeichnisses sieht dann so aus:

[Home]
path = /home/kamil
comment = Home-Verzeichnis
browseable = yes
writeable = yes
create mask = 0775
directory mask = 0775
force user = kamil

So, nun noch mit STRG+X die Datei speichern und das Überschreiben bestätigen.

Und hier mal eine Beschreibung, was jede der Optionen eigentlich tut:

  • [Home]: In eckigen Klammern kommt der Freigabename, wie er später auch angezeigt wird.
  • path = /home/kamil: Das ist der Pfad zu dem Verzeichnis, welches ich freigeben möchte. In diesem Falle ist das mein Home-Verzeichnis.
  • comment = Home-Verzeichnis: Ein Kommentar oder Beschreibung, die ebenfalls in der Auflistung der Freigaben zumindest als Tooltip angezeigt werden.
  • browseable = yes: Die Freigabe soll in Auflistungen angezeigt werden und man soll sich den Inhalt der Freigabe anzeigen lassen können.
  • writeable = yes: Standardmäßig sind Freigaben schreibgeschützt, damit macht man sie auch beschreibbar.
  • create mask = 0775 und directory mask = 0775: Das sind die Standard-Dateiattribute, die den Dateien beim Erstellen zugewiesen werden. Das gilt für Dateien und Verzeichnisse.
  • force user = kamil: Dateien, die erstellt werden, gehören dem Benutzer Kamil.

Nach diesem Schema werden alle Freigaben nacheinander erstellt.

Mit dem Befehl “sudo service samba restart” können wir den Samba Dienst neu starten, ohne den ganzen Server neu starten zu müssen. Und sofort danach steht uns auch die Freigabe zur Verfügung. Wir können da aber jetzt noch nicht rein, da Samba uns noch nicht kennt. Die Samba Benutzerverwaltung ist getrennt von der Benutzerverwaltung in Linux selbst. Um also als Benutzer kamil auch über Samba reinzukommen, müssen wir dem Samba Server noch den User kamil hinzufügen. Der User muss aber auf dem Server schon als normaler Linux-User angelegt sein, was bei kamil ja der Fall ist:

sudo smbpasswd -a kamil

Anschließend werden wir noch nach unserem Passwort gefragt, dann noch mal wiederholen, fertig. Jetzt können wir auch über Windows zugreifen. Das Samba-Passwort muss übrigens nicht unbedingt das gleiche sein, wie das Linux-Passwort.

Einfach mal mit Windows+R wieder ins Ausführen-Dialog gehen und folgendes reinschreiben:

\server01

Nun ist das Fenster nicht mehr leer, sondern enthält die Freigabe “Home”. Öffnen wir diese mit Enter, werden wir nach Benutzername und Passwort gefragt. Hier geben wir dann die Werte ein, die wir am Server zuvor festgelegt hatten beim Erstellen des Samba-benutzers.

Sinnvoll ist es hier, weil wir ja öfter mal zugreifen wollen, diesen Ordner als Netzwerk-Laufwerk zu speichern. Aber wie das geht, soll hier nicht weiter besprochen werden.

Was kommt nun?

Leider erst mal nichts mehr. Um weiteres anstellen zu können, brauche ich das RAID. Aber dafür fehlen mir noch ein paar Festplatten. Ich will ja mindestens ein RAID5 einrichten, und dafür benötige ich mindestens 3 Platten. Also gibt es leider erst dann wieder was zu lesen, wenn ich alle nötigen Platten habe, um das RAID aufzubauen.

Oh, Moment, da fällt mir ein, im nächsten Teil kann ich euch mal die crontab erklären, die ist für die Administration des Servers nämlich sehr hilfreich.

Projekt Homeserver im Eigenbau 9: Diverse Programme installieren und konfigurieren

Man könnte sagen, das Grundgerüst des Servers steht. Aber um mit ihm einige sinnvolle Dinge machen zu können, fehlt es noch an diverser Software. So möchte ich z. B. die Sensoren für Temperatur und Lüfterdrehzahl abfragen können, Festplattenstatus und auch deren Temperatur, Hardwarekomponenten auflisten und, was auch sehr wichtig ist, im Problemfall eine Mail gesendet bekommen.

In diesem Beitrag werde ich also diverse Software installieren und konfigurieren. Welche davon ihr benutzen wollt, bleibt hierbei euch überlassen, keines der Pakete ist zwingend notwendig. Aber wenn man sich über den Status des Servers informieren will, sind die Pakete schon sehr nützlich.

Hardware auflisten

Mit dem Paket lshw können alle Hardwarekomponenten des Rechners aufgelistet werden. Es hat sogar die Möglichkeiten, die Ausgabe als HTML oder XML vorzunehmen. Für mich ist das Programm später noch wichtig, wenn es ums RAID geht. Denn hiermit kann ich auch identifizieren, wo welche Platte angeschlossen ist. Das ist wichtig, wenn man eine defekte Platte austauschen muss. Installiert wird es mit:

sudo apt-get install lshw

Aufgerufen wird es ebenfalls mit lshw. Wenn es beim RAID interessant wird, gehe ich hierauf noch ausführlicher ein.

Partitionstool Parted

Ich persönlich mag fdisk nicht wirklich. Zwar wird es später noch gebraucht, aber das eigentliche Partitionieren mache ich lieber mit Parted. Das liegt auch daran, dass es sich um die Ausrichtung der Partition an physischen Sektorgrenzen automatisch kümmern kann. Bei fdisk muss ich selbst angeben, bei welchem Sektor eine Partition anfängt und endet. Installiert wird es mit:

sudo apt-get install parted

Benachrichtigungen per Mail

Wenn ein Problem auftritt, dann soll mich der Server per Mail darüber informieren. So von sich aus geht das noch nicht. Es müssen noch Programme installiert werden, die eine Mail verschicken können. Da ich meinen Server nicht als eigentlichen Mailserver betreiben möchte, brauche ich also diese komplexen MTAs, wie Postfix oder dergleichen nicht. Ich installiere das kleine Programm SSMTP, welches über meinen eigentlichen Mailprovider, zum Beispiel GMX oder Google Mail, eine Mail verschickt. Sollte ich später mal den Server doch noch als Mailserver nutzen wollen, kann man das alles ja auch umkonfigurieren. Aber für jetzt, der Einfachheit halber, bleibe ich mal bei SSMTP.

Zunächst mal muss ssmtp installiert werden.

sudo apt-get install ssmtp

Nun muss es aber noch konfiguriert werden, und dazu müssen 2 Konfigurationsdateien angepasst werden.

sudo nano /etc/ssmtp/ssmtp.conf

Hier tragen wir bei den folgenden Feldern die Daten für meinen GMX-Account ein. Darüber sollen die Mails dann verschickt werden:

  • root=: Hier steht “postmaster”, aber hier tragen wir unsere GMX-Adresse ein. Die Zeile lautet dann “root=meine.adresse@gmx.de”. Natürlich steht dann da eure Mailadresse. :-)
  • mailhub=: Hier kommt der SMTP-Server plus Port von GMX rein. Die Zeile sähe dann so aus: “mailhub=mail.gmx.net:465″.
  • Die Zeile “rewriteDomain” ist auskommentiert. Entfernt das Nummernzeichen und schreibt gmx.net hinter das Gleichheitszeichen. Die Zeile sähe dann so aus: “rewriteDomain=gmx.net”.
  • hostname=: Hier wird auch gmx.net eingetragen. Die Zeile sieht dann so aus: “hostname=gmx.net”.
  • Die Zeile “FromLineOverride” ist auch auskommentiert, nehmt das Nummernzeichen hier wieder raus und ändert den Wert “Yes” zu “No”.

Und am Ende fügt ihr noch folgende Zeilen ein:

UseTLS=YES
AuthUser=eure_mailadresse@gmx.de
AuthPass=euer_gmx.de_passwort

Passt bei den beiden letzten Zeilen Benutzername und Passwort für euren GMX-Account an.

So weit für diese Datei, mit STRG+X speichern wir das jetzt.

Nun muss noch festgelegt werden, welche Benutzer alles diese Mailadresse zum Senden nutzen dürfen. Hierfür öffnen wir die Datei mit:

sudo nano /etc/ssmtp/revaliases

Und hier tragen wir folgendes am Ende ein:

root:eure_mailadresse@gmx.de:mail.gmx.net:465
www-data:eure_mailadresse@gmx.de:mail.gmx.net:465
kamil:eure_mailadresse@gmx.de:mail.gmx.net:465

Natürlich müsst ihr entsprechend eure eigenen Daten eintragen. Auch diese Datei speichern wir wieder mit STRG+X.

Dann könnte man das übrigens testen, aber irgendwas habe ich falsch gemacht. Mit dem Befehl “sudo ssmtp -v ” habe ich mir eine Mail schicken wollen. Es ging ein Fenster auf, in dem ich allerhand Zeugs reingeschrieben habe, und irgendwie muss ich das wohl auch abgeschickt haben. Jedenfalls landete mein Experiment in meinem Spam-Ordner. Egal, senden geht, auch wenn der Versuch irgendwie merkwürdig aussah. :-)

Übrigens habe ich die Informationen von der Linux und Ich Webseite, wo ihr auch Beispiele für Google Mail findet.

Hardware-Sensoren abfragen

Um Informationen über Temperatur, Stromspannung und Lüfter zu erhalten, brauchen wir das Tool lm-sensors.

sudo apt-get install lm-sensors

Damit alleine geht aber noch nichts. Es muss noch nach Sensoren gesucht werden. Hierfür braucht man den Befehl:

sudo sensors-detect

Nun werden euch eine Menge Fragen gestellt, wobei ihr einfach mit Enter die Standard-Antworten akzeptieren könnt. Erst am Schluss kommt der Hinweis, “Just press Enter”. Anschließend kommt eine Anzeige und am Ende die Frage: “Do you want to automatically write these lines in /etc/modules?”. Diese Frage beantwortet ihr mit “yes”.

Nun könnt ihr mit dem Befehl “sensors” die Daten eures Mainboards abrufen. Es könnte sein, dass ihr erst vollständige Angaben bekommt, nachdem ihr den Rechner neu gestartet habt.

Temperatur der Festplatten abfragen

Auch die Festplatten dürfen nicht zu heiß werden. Und damit ich sehen kann, ob noch evtl. Lüfter nötig sind, muss ich wissen, wie warm die Platten werden. Dafür hilft mir das kleine Tool hddtemp.

sudo apt-get install hddtemp

Nun kann ich mit dem Befehl hddtemp die Festplattentemperatur ansehen:

sudo hddtemp /dev/sda

Das Tool zeigt mir nun an, welche Platte an /dev/sda angeschlossen ist und dessen Temperatur.

Einstellungen für Festplatten mit hdparm

Mit diesem Programm können diverse Einstellungen für Festplatten festgelegt werden. Zum Beispiel kann man hier festlegen, wann eine Platte in den Standby geht. Um hdparm nutzen zu können, muss es erst installiert werden:

sudo apt-get install hdparm

Nun muss für die Festplatten noch die Konfigurationsdatei angepasst werden:

sudo nano /etc/hdparm.conf

Für die SSD unter /dev/sda werden wir keine Änderungen vornehmen, aber für die Platten für das RAID ab /dev/sdb werden wir einige Einstellungen machen. Also beginnt die Zeile mit dem Gerätenamen und den Optionen in geschweiften Klammern. Der Gerätename kann auch mehrere Geräte umfassen, zum Beispiel /dev/sd[bcd]. Hier würden die Einstellungen für /dev/sdb, /dev/sdc und /dev/sdd gelten.

/dev/sdb {
    spindown_time = 240
    write_cache = on
    }

Dieser Block konfiguriert die Festplatte /dev/sdb so, dass sie nach 20 Minuten Inaktivität in den Standby geht und der Festplatten Schreibcache aktiv ist. Wenn ihr später eine zweite Platte hinzufügt, braucht ihr keinen neuen Block, sondern könnt die Zeile /dev/sdb so anpassen: /dev/sd[bc] usw.

Bei spindown_time steht 240. Eigentlich wollte ich 30 Minuten eingestellt haben. Aber der Wert, den ich ergoogled hatte, funktionierte irgendwie nicht. Nach 45 Minuten war die Platte immer noch aktiv. Der Wert für 20 Minuten, 240, funktioniert hingegen.

Festplatten S.M.A.R.T.

Hier kann man die S.M.A.R.T.-Daten der Festplatte prüfen lassen und einen Test in regelmäßigen Abständen ausführen lassen. Zwar ist das nicht 100 prozentig garantiert, dass ein Fehler sich auch wirklich durch S.M.A.R.T. ankündigt, aber wenn eine Festplatte anfängt, Probleme zu machen, hätte man hier evtl. die Chance, das recht frühzeitig zu erkennen. Die S.M.A.R.T.-Überwachung ist bereits installiert und muss eigentlich nur noch konfiguriert werden:

sudo nano /etc/default/smartmontools

Hier gibt es eine Zeile, die auskommentiert ist, und dessen Nummernzeichen entfernt werden muss.

#start_smartd=yes

Dann startet S.M.A.R.T. auch mit dem Systemstart.

sudo nano /etc/smartd.conf

Das ist die Konfigurationsdatei für den Hintergrund-Dienst. Relativ weit oben findet ihr eine nicht auskommentierte Zeile, die mit “DEVICESCAN” beginnt. Kommentiert diese Zeile mit einem Nummernzeichen aus und geht dann ganz nach unten in der Datei. Hier füge ich eine Konfigurationszeile für jede platte, die ich überwacht haben will ein. Eine der Platten für das RAID ist bereits im Server. Für diese Platte würde die Konfigurationszeile so aussehen:

/dev/sdb -a -d sat -n standby,10,q -S on -s (S/../../1/00|L/../01/./12) -m eure_mailadresse@gmx.de

Das testet die /dev/sdb Festplatte jeden Montag um 00:00 Uhr mit dem Schnelltest und jeden ersten Tag im Monat mit dem langen Selbsttest. Und bei Fehlern schickt es eine Mail.

Die Felder dieser Abfrage will ich aber denn doch mal kurz erklären. Als ich das das erste Mal gesehen habe, wusste ich damit überhaupt nichts anzufangen. Das gesamte Feld sieht so aus:

t/MM/TT/W/HH
  • t: Das kleine t am Anfang steht für den Test, der durchgeführt werden soll. Die Werte können L für Long, S für Short oder O für Offline lauten, in Großbuchstaben. Da gibt es glaube ich noch mehr Werte, aber die waren für mich uninteressant.
  • MM: Monat des Jahres, von 01 bis 12, immer in 2 Ziffern angegeben.
  • TT: Tag des Monats, von 01 bis 31, immer in 2 Ziffern angegeben.
  • W: Wochentag, 1, Montag, bis 7, Sonntag, immer in einer Ziffer angegeben.
  • HH: Stunden, immer in 2 Ziffern angegeben von 00 bis 23.

Will man 2 Argumente übergeben, wie z. B. einen kurzen Test jede Woche um 00:00 Uhr und einen langen Test jeden Monat um 12:00 Uhr, so packt man das alles in Klammern und trennt jedes Argument mit einem senkrechten Strich. Am PC erzeugt man das mit AltGR+Kleinerzeichen. Wie in meinem Beispiel angegeben, würde das Argument dann so aussehen:

-s (S/../../1/00|L/../01/./12)

Blöd ist halt nur, dass ihr diese Zeile für jede Platte einzeln eintragen müsst. So müsst ihr die Zeile für /dev/sdc wieder eintragen, wenn ihr eine 2. Platte für das RAID hinzufügt.

Für Details der Konfigurationsoptionen könnt ihr euch die Manpage zu SMARTD.conf ansehen.

Übrigens könnt ihr im Wiki Ubuntuusers.de mehr zu S.M.A.R.T. lesen.

Was kommt nun?

Fertig sind wir noch lange nicht, aber für’s erste wäre alles wichtige installiert und konfiguriert. Im nächsten Artikel will ich noch Samba konfigurieren, das ist der Dateiserver, so dass wir mit CIFS-Freigaben von Windows und anderen Programmen drauf zugreifen können.

Projekt Homeserver im Eigenbau 8: Kernel aktualisieren

Na toll! Eher so zufällig fällt mir auf, dass wir hier unter einem völlig veralteten Kernel arbeiten! Und ich dachte, wenn ich Debian 7.6.0 installiere, wird der aktuellste Kernel installiert? Nun, entweder habe ich bei der Installation was falsch gemacht, oder es wird tatsächlich nur ein veralteter Kernel installiert.

Um herauszubekommen, welcher Kernel derzeit installiert ist, gibt man den folgenden Befehl ein:

uname -r

Dann kommt eine Ausgabe wie diese hier:

3.2.0-4-amd64

Das ist der Kernel, der bei mir auf dem Server läuft, und der ist schon ein paar Tage alt. Wir sind doch jetzt schon irgendwo bei 3.17 oder zumindest mal 3.16? Gerade wegen der Hardware muss ich eigentlich den aktuellen Kernel installieren.

Ist ein Kernelupdate nötig?

Darüber streiten sich die Geister. Kurz gesagt, es passiert auch nichts schlimmes, wenn man es nicht tut. Andererseits, ich habe einen teuren Haswell-Prozessor und einen neuen Chipsatz eingebaut, dessen Funktionen ich auch gerne nutzen möchte. Zwar wird der Rechner auch mit dem 3.2er Kernel laufen, aber es könnte gut sein, dass manche der neuen Funktionen nicht optimal genutzt werden. Zum Beispiel bringt der Haswell neue Ruhemodi mit, wobei ich nicht weiß, ob er sich selbst bei Inaktivität in diese versetzt, oder vom Kernel in diese versetzt werden muss. Neue Prozessoren bringen oft neue Befehlssätze mit, die vom alten Kernel evtl. noch nicht unterstützt werden.

Nachdem ich den Kernel aktualisiert hatte, bootete der Rechner bedeutend schneller. Klar ist das kein Beweis dafür, dass der neue Kernel besser ist. Aber es ist doch ein Indiz. Es zeigt mir halt, dass die höheren Durchsatzraten des Chipsatzes oder eine ausgereiftere Multikern-Unterstützung eingesetzt wird. Zumindest vermute ich das.

Das ist das Problem, Sicherheit und Stabilität sind eine Sache, Aktualität eine andere. Ubuntu aktualisiert in meinen Augen zu oft, so dass man ständig sich um das System kümmern muss, Debian aktualisiert zu selten, so dass man mit neuer Hardware hinterherhinkt. Die Wahrheit, oder besser gesagt das Optimum, liegt wahrscheinlich irgendwo in der Mitte… Wie auch immer, ich werde den Kernel aktualisieren. Ob ihr das auch machen möchtet, könnt ihr ja anhand eurer Hardware entscheiden. Sollte es ein neuerer Rechner sein, würde ich aktualisieren, ist es eher ein älteres Modell, wird es wohl eher nicht nötig sein.

Editieren von Konfigurationsdateien

Das ist eine Aufgabe, die wir noch öfter machen müssen. Viele bevorzugen den Editor VI, aber ich kann dem absolut nichts abgewinnen. Total kompliziert und unhandlich. Ich bevorzuge Nano, der sich genau so benimmt, wie man es von einem Editor irgendwie erwartet…

Hier kommen jetzt ein paar Probleme zum Tragen, die sonst eher zu vernachlässigen sind. Ich benutze Putty mit Jaws. Der tatsächliche Cursor und der auf der Braillezeile angezeigte Cursor sind nicht gleich. Tatsächlich ist es so, dass der tatsächliche Cursor 1 oder 2 Felder links des Cursors ist, der auf der Braillezeile angezeigt wird. Das ist nicht schlimm, aber man muss es wissen, sonst löscht man evtl. die falschen Zeichen. Bis ihr euch daran gewöhnt habt, arbeitet hier sehr vorsichtig.

Die wichtigsten Tastenkombinationen für Nano sind am unteren Bildschirmrand angezeigt. Hier wird fast nur mit der STRG-Taste gearbeitet. STRG+X z. B. schließt den Editor und fragt gegebenenfalls nach, ob Änderungen gespeichert werden sollen.

Hinzufügen von Paketquellen

Debian holt sich ja Pakete von seinen Paketquellen. Hier liegen die Dateien, die für die Installation von Programmen nötig sind. Die neuen Kernel, ist jetzt das Plural kernels?, liegen in einem eigenen Repository, den Backports. Backports sind Rückportierungen. Neuere Pakete, wie z. B. eine neuere Kernelversion, werden so angepasst, dass sie auch unter einer älteren Distribution arbeiten. So muss der Kernel 3.16 z. B. rückportiert werden, damit er mit der Debian 7.6.0 Distribution kompatibel ist.

Also muss das Repository der Backports auch dem Server mitgeteilt werden, damit er auch dort nach Paketen sucht.

Die Liste der Paketquellen ist eigentlich eine simple Textdatei, in die wir nur 3 Zeilen einfügen müssen. Also öffnen wir die Datei im Editor Nano mit folgendem Befehl:

sudo nano /etc/apt/sources.list

Den Rest der Datei lassen wir mal ganz in Ruhe, das sind die Paketquellen, woher Debian ohnehin seine Pakete holt. Das ist ja in Ordnung, wir wollen unten nur 3 Zeilen hinzufügen. Mit den Pfeiltasten gehen wir also ganz runter, und geben dort folgende Zeilen ein:

# Backports Paketquellen
deb http://ftp.de.debian.org/debian/ wheezy-backports main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy-backports main contrib non-free

Ihr könnt die Zeilen auch markieren und kopieren. Um sie in das Putty-Fenster einzufügen, wechselt dann in dieses, zieht die Maus zum Cursor und drückt dann auf der Maus die rechte Maustaste. Dann wird die Zwischenablage ins Putty-Fenster eingefügt. Das könnt ihr auch mit Befehlen machen.

Mit STRG+X schließen wir den Editor. Nano fragt noch, ob er die Datei überschreiben soll, ich antworte mit “y”, ich hab ja alles noch in Englisch. Der Dateiname wird mir angezeigt, auch hier drücke ich Enter, fertig! Wir haben erfolgreich eine Paketquelle hinzugefügt.

Den neuen Kernel installieren

Mit dem schon bekannten Befehl

sudo apt-get update

aktualisieren wir eben noch schnell die Paketliste. Um den Kernel nun aber installieren zu können, müssen wir apt-get explizit mitteilen, dass wir das Paket aus dem Backports-Repository haben wollen. Mit folgendem Befehl wird der Kernel installiert:

sudo apt-get install -t wheezy-backports linux-image-amd64 linux-headers-amd64

Es werden nun eine Menge Pakete installiert. Wie ich schon sagte, auch Pakete, von denen der Kernel abhängig ist, werden mit installiert.

Nun muss noch mit sudo reboot der Rechner neu gestartet werden.

Und wenn wir uns jetzt wieder am Server anmelden und wieder mit uname -r die Kernel-Version abfragen, erhalten wir folgende Ausgabe:

3.16-0.bpo.2-amd64

Das sieht doch schon wesentlich besser aus! nachdem wir das gerettet haben, kann’s ja normal weitergehen. :-)

One more thing…

Also einer meiner besten Freunde ist Kumpel Zufall! Ich suche ja schon nach einer Möglichkeit, auch ohne Monitor zu wissen, wann der Server nun hochgefahren ist. Und beim relativ unmotivierten Herumsurfen bin ich regelrecht über die Lösung gestolpert.

Die Linux Kommandozeile kennt tatsächlich einen einfachen Befehl, den PC-Lautsprecher piepsen zu lassen. Gedacht ist das für Skripte, und genau für so was nutzen wir den jetzt. Gebt mal in der Eingabeaufforderung “beep” ein. Passiert nix? OK, dann müssen wir das eben noch nachinstallieren:

sudo apt-get install beep

Nun müssen wir eine Datei editieren, die sich rc.local nennt. Wer noch mit DOS-Begriffen was anfangen kann, das ist so was wie die autoexec.bat. :-) Nachdem alle Dienste und Systemkomponenten gestartet sind, wird diese Datei ausgeführt. Was hier drin steht, kommt also als letztes dran. Das bietet sich ja geradezu an, oder? :-)

sudo nano /etc/rc.local

Damit wäre die Datei offen. Geht nun mit den Pfeiltasten ganz bis an das Ende der Datei. Als letzte Zeile steht da:

exit 0

Genau über diese Zeile schreiben wir jetzt den Beep-Befehl rein, so dass die beiden letzten Zeilen so aussehen:

beep -f 800 -l 500
exit 0

Nun noch mit STRG+X die Datei speichern, fertig.

Der Parameter -f legt die Frequenz des Tons fest, der parameter -l die Länge. Probiert auf der Konsole ruhig erst mal ein paar Variationen aus, aber ich finde, diese Kombination ist so ganz in Ordnung. Beep ohne Parameter gibt einen viel tieferen und kürzeren Ton aus. Ich finde, der ist etwas zu leise und könnte leicht überhört werden.

Gebt mal “sudo reboot” ein, um den Rechner neu zu starten. Wenn er fertig hochgefahren ist, wird als letztes der Piepton abgespielt. Nun braucht man nicht mehr raten, wann der Server bereit ist!

Projekt Homeserver im Eigenbau 7: Schreiben von Bash-Scripts

Weil das später vielleicht noch öfter vorkommt, und weil das auch ganz sinnvoll ist, seine Konfigurationsdateien zu sichern, will ich mal kurz auf die Shellscripts eingehen. Im Grunde sind Shellscripts nichts anderes als kleine Textdateien, in denen eine Sammlung von Befehlen stehen. Ganz ähnlich der Batch-Dateien, die unter Windows auch noch gelegentlich eingesetzt werden. Allerdings sind Shellscripts bedeutend mächtiger. Ich habe schon welche gesehen, die Programme installieren, und nach genauer Überprüfung sogar Konfigurationsdateien editieren können. Wer sich eingehend mit den Möglichkeiten von Linux auseinandersetzt, kann hier durchaus hochkomplexe Programme schreiben.

Das ist jetzt aber nicht das, was ich machen möchte. Ich möchte, dass meine Scripte auf Knopfdruck Konfigurationsdateien kopieren oder Pakete nachinstallieren können. Und das ist mit ein paar simplen befehlen gemacht.

Aufbau des Scripts

Jede Zeile, die mit einem # (Nummernzeichen) beginnt, ist ein Kommentar. Unterschätzt das nicht, in ein paar Jahren wisst ihr vielleicht nicht mehr genau, was ein bestimmter Befehl eigentlich tun sollte, daher kommentiert das nach Möglichkeit. Vielleicht habt ihr den Script auch einfach nur einem Bekannten gegeben, der weiß dann nicht, was ihr damit machen wolltet. Nutzt das also ausgiebig.

Jedes Script beginnt mit einem Shebang. Jetzt fragt mich aber nicht, wer auf den merkwürdigen Namen gekommen ist. Aber was es ist, kann ich euch erklären.

Jedes Script wird von einem Interpreter ausgeführt. Dieser kennt die befehle und tut, was im Script steht. Ich meine zwar, auch mal Scripte gesehen zu haben, wo diese erste Zeile fehlt, aber verschiedene Interpreter kennen unterschiedliche Befehle. Daher sollte man diese Zeile auch festlegen. ich verwende immer Bash als Interpreter, daher beginnen meine Scripte alle mit der Zeile:

#!/bin/bash

Ein kleines Script

Schreiben wir doch also einfach mal unser erstes kleines Script. Dieses soll die Konfigurationsdatei für das Netzwerk in das Unterverzeichnis “Server” in unserem Home-Verzeichnis kopieren.

Zunächst legen wir das Verzeichnis an mit dem Befehl:

mkdir Server

Hier werde ich jetzt alle Konfigurationsdateien, die ich je ändere, reinkopieren lassen, damit ich diese auf einen USB-Stick kopieren kann. Heute soll es aber erst mal nur die Konfiguration des Netzwerks sein.

Öffnen wir also einen Editor, und zwar Nano, mit der Scriptdatei. Die gibt es zwar noch nicht, Nano legt die dann aber an.

nano filecopy.sh

Da wir ja in unserem eigenen Home-Verzeichnis arbeiten, braucht es keine Admin-Rechte und deshalb auch kein sudo vor den Befehlen.

Und nun schreiben wir folgendes in die offene Datei hinein:

#!/bin/bash

## Konfigurationsdateien kopieren

# Konfigurationsdatei für das Netzwerk kopieren
sudo cp /etc/network/interfaces ~/Server

Wie ihr sehen könnt, habe ich alle Aktionen und den Grund des Scriptes in Kommentaren eingefügt. Die letzte Zeile ist der eigentliche Kopierbefehl.

Nun drücken wir STRG+X um Nano zu schließen. Wir werden gefragt, ob wir die Datei erstellen wollen, noch mal den Namen bestätigen, fertig! Unser erstes Script ist da. Aber es kann noch nicht genutzt werden.

Script ausführbar machen

Mit dem Befehl “ls -l” könnt ihr euch das Inhaltsverzeichnis des Verzeichnisses anzeigen. Da wir ja im Home-Verzeichnis stehen, sehen wir dann folgendes:

total 8
-rw-r--r-- 1 kamil kamil  139 Oct 17 15:14 filecopy.sh
drwxr-xr-x 2 kamil kamil 4096 Oct 17 15:13 Server
kamil@server01:~$

Uns interessiert die obere Zeile, die für die Datei filecopy.sh. Ich werde mal die einzelnen Abschnitte erklären:

  • -rw-r--r--: Das sind die Zugriffsrechte. Der Benutzer darf lesen und schreiben (rw-), die Gruppe und jeder andere dürfen nur lesen (r--). Der erste Bindestrich zeigt, dass es eine Datei ist, Stünde da ein kleines d, wäre es ein Verzeichnis. Das könnt ihr leicht in der Zeile mit dem Verzeichnis “Server” sehen.
  • 1: Ist nur eine Datei, wäre es ein Verzeichnis, könnte man die Anzahl darin befindlicher Dateien sehen.
  • kamil kamil: Benutzer, Gruppe. Ja, kamil ist auch eine Gruppe, weil jeder Benutzer beim Anlegen auch eine gleichnamige Gruppe angelegt bekommt.
  • 139: Größe der Datei.
  • Oct 17 15:14: Datum, ist ja offensichtlich. :-)
  • filecopy.sh: Ein Keks! Nee, quatsch, natürlich der Dateiname selbst. :-)

Sieht auch erst mal komplizierter aus, als es tatsächlich ist. Aber ich habe das so ausführlich gemacht, weil das noch öfter gebraucht wird. Schließlich will man ja mit Dateien arbeiten.

OK, jetzt müssen wir die Datei aber noch ausführbar machen:

chmod +x filecopy.sh

Jetzt gucken wir uns die Zeile doch nochmal an:

-rwxr-xr-x 1 kamil kamil  139 Oct 17 15:14 filecopy.sh

Das x zeigt jetzt an, dass die Datei ausführbar ist. Nun können wir sie mal testen.

Aufruf eines Scripts

Unser Script ist nun bereit, ausgeführt zu werden. Jedes Script wird aus dem Verzeichnis, wo es liegt, folgendermaßen aufgerufen:

./filecopy.sh

Geben wir diesen Befehl so ein, so scheint es, als wäre nichts passiert. Oder doch, evtl. werdet ihr noch nach eurem Passwort gefragt, es wird ja ein sudo-Befehl ausgeführt im Script. Aber sonst? Es erscheint wieder die Eingabeaufforderung.

Ergebnis prüfen

Schauen wir doch mal nach, ob das Kopieren geklappt hat. Also gehen wir mit dem Befehl “cd Server” in das Verzeichnis “Server” und rufen mal das Inhaltsverzeichnis auf:

-rw-r--r-- 1 root root 514 Oct 17 15:35 interfaces
kamil@server01:~/Server$

So, das hat also geklappt. Gut, dann können wir ja wieder mit dem Befehl “cd ..” eine Verzeichnisebene höher gehen ins Home-Verzeichnis.

Fazit

Auf ganz genau diese Weise trage ich jetzt jede geänderte Konfigurationsdatei in dieses Script ein, welches ich von zeit zu Zeit mal ausführe, um diese Dateien dann auf einem USB-Stick zu sichern. Dann schreibe ich noch ein Script, dass all diese Konfigurationsdateien auch wieder an ihren Ursprungsort kopiert, und bei einer Neuinstallation habe ich so in wenigen Sekunden meine Konfiguration des Servers wiederhergestellt. Und in das Script installserver.sh schreibe ich dann all die sudo apt-get install xxx Befehle rein, so dass diese auch nicht mehr per Hand gemacht werden müssen.

Je mehr wir über Linux lernen, können wir sicher auch mal komplexere Scripts schreiben, aber ich halte diese Scripte für wichtig. Später, wenn ihr viel am Server konfiguriert habt, müsstet ihr sonst Stunden damit verbringen, alles wieder richtig zu konfigurieren. So sind es nur paar Sekunden.

Viel ausführlichere Informationen über Scripting findet ihr auch im Wiki ubuntuusers.de. Zwar bezieht sich das Wiki auf Ubuntu, aber diese Informationen sind universell einsetzbar.

Ich hoffe, ihr seid soweit mitgekommen. Falls nicht, können wir das gerne in der Liste noch ausdiskutieren, und evtl. passe ich dann mit euren Vorschlägen den Artikel noch an.

Projekt Homeserver im Eigenbau 6: Erste Schritte am Server

Noch mal kurz ein kleiner Nachtrag zur Installation. Ich habe mit dem System noch etwas herumgespielt, um einiges auszuprobieren. Dabei habe ich so viel durcheinander gebracht, dass eine Neuinstallation schneller ging als das Problem zu beheben. Das wäre gegangen, aber ich war zu faul. Und dabei habe ich das System zwar genau so installiert, wie im vorigen Beitrag beschrieben, aber mit einer kleinen Änderung: Da, wo ich die Software-Pakete auswähle, die installiert werden sollen, habe ich Web Server und SQL Database nicht mehr ausgewählt. Das Debian Desktop Environment habe ich wieder abgewählt. Damit wird tatsächlich eine grafische Oberfläche mit allen Zusatzprogrammen installiert, das war übrigens eines meiner Experimente. Ich will das nur erwähnt haben, falls ihr euch zu gegebener Zeit fragt, warum ich Web Server usw. manuell installiere.

Übrigens, macht das ruhig mal paar mal. Installiert Linux, spielt damit herum, macht es kaputt, installiert es erneut, spielt wieder rum, versucht dann, das Problem zu finden und zu lösen. So lernt man fast mehr, als trocken irgendwelche Bücher zu lesen. Durch viel Rumprobieren an meiner Mediacenter-Installation habe ich das meiste über Linux gelernt. Und es ist ja nicht wie Windows, was man aktivieren muss. Es kostet euch nur etwas Zeit, sonst nichts.

Neuinstallation leicht gemacht?

Zur Zeit ist es ja egal, ich habe ja noch nichts produktives mit dem System angestellt, aber das ändert sich jetzt sehr schnell. Und damit ich bei einer eventuellen Neuinstallation nicht alles per Hand wieder machen muss, führe ich während meiner Arbeit 3 kleine Dateien. Das sind Shellscripte, die haben unter Linux in etwa die Funktion von Batch-Dateien. Allerdings sind die unter Linux um ein beträchtliches mächtiger.

Die erste Datei ist filecopy.sh. Die Dateiendung *.sh findet ihr bei diesen Scripts. Hier schreibe ich einen Kopierbefehl rein, wenn ich z. B. eine Konfigurationsdatei ändere. Ändere ich z. B. die Konfigurationsdatei für das Netzwerk, so trage ich hier folgenden Befehl ein:

sudo cp /etc/network/interfaces ~

Dieser Befehl kopiert mir die Datei in mein Home-Verzeichnis.

Die zweite Datei ist filerestore.sh, die kopiert die gesicherten Konfigurationsdateien wieder dort hin, wo sie hingehören. Hier z. B:

sudo cp interfaces /etc/network/interfaces

Die beiden Scripte und die kopierten Konfigurationsdateien kann ich z. B. auf einen USB-Stick kopieren, so dass ich nach einer Neuinstallation einfach nur filerestore.sh ausführen muss. Und innerhalb von Sekunden ist mein Server wieder korrekt konfiguriert.

Die dritte Datei ist die installserver.sh. Hier trage ich die Befehle für alle nachträglich installierten Pakete ein. So brauche ich auch das hinterher nicht mehr per Hand machen, wenn ich den Server mal neu aufsetzen muss.

Näher zu Scripten, wie man sie schreibt und ausführt, gehe ich später noch ein. Aber ich würde mir, um die Arbeit hinterher zu erleichtern, die Befehle für evtl. nachinstallierte Pakete und geänderte Konfigurationsdateien irgendwo notieren.

Jetzt aber, los geht’s!

Nun haben wir es also geschafft, der Server ist installiert. Aber, außer ein bisschen Strom verbrauchen, tut der im Augenblick nichts interessantes. Also müssen wir mal sehen, das wir den Server überhaupt erst mal gesteuert bekommen.

Putty

Putty ist ein SSH-Client, mit dem man sich mit Linux-Rechnern verbinden kann, um an oder auf ihnen zu arbeiten. Das war auch der Grund, warum ich während der Installation auch den SSH Server angewählt habe. Mit Putty haben wir eine Eingabeaufforderung am Server, als würden wir direkt an diesem arbeiten.

Zunächst mal müssen wir Putty runterladen. Das ist nur ein winzig kleines Programm. Putty gibt es hier zum Herunterladen.

Sucht auf der Seite nach der Windows-Version und ladet das Programm runter. Kopiert es nun an einen Ort auf eurem Rechner, wo ihr es leicht wiederfindet. Ich habe auf meinem Laufwerk D: einen Ordner, wo ich all diese kleinen Helferlein reinkopiere.

Verbindung zum Server herstellen

Zunächst mal muss der Server eingeschaltet werden. Da er jetzt keinen Monitor hat, müssen wir raten, wann er fertig mit booten ist. Dafür muss ich mir auch noch mal was einfallen lassen…

Legt euch nun auf dem Desktop eine neue Verknüpfung an, dann braucht ihr das nicht jedes mal per Hand eingeben. Klickt rechts auf euren Windows-Desktop, wählt aus dem Kontextmenü “Neu” und aus dem Untermenü “Verknüpfung” aus.

In das Feld “Geben sie den Speicherort des Elements ein”, gebt ihr nun den Pfad zu Putty ein, und natürlich den Parameter, mit dem es gestartet werden soll. Ihr könnt eine IP-Adresse angeben, aber auch einen Rechnernamen. Mein Server heißt ja “server01″. Also heißt die Zeile bei mir:

d:\tools\putty.exe server01

Nachdem ihr auf “Weiter” geklickt habt, gebt ihr der Verknüpfung noch einen vernünftigen Namen, bei mir heißt sie nun “Server 01″. Fertig, ab jetzt braucht ihr nur noch diese Verknüpfung, um euch mit eurem Server zu verbinden.

Erste Verbindung zum Server

Geht nun auf die neue Verknüpfung und drückt Enter. Das Putty-Fenster geht auf, und ein Dialogfeld erscheint.

Dieser englische Dialogtext sagt euch nichts anderes, als dass Putty den Schlüssel dieses Rechners nicht kennt und man sich nicht sicher sein kann, dass es wirklich der Rechner ist, den ihr erreichen wolltet. Da ich mir aber sicher bin, dass es mein Server ist, klicke ich auf “Ja”, wodurch der Schlüssel gespeichert wird und diese Frage nie wieder kommt.

Anschließend werdet ihr nach Benutzernamen und Passwort gefragt. Loggt euch ein, und es erscheint folgender Bildschirm:

Linux server01 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Oct 15 00:53:50 2014
benutzer@server01:~$

Der obere Text ist eigentlich erst mal uninteressant. Wichtig ist die letzte Zeile. Die sagt nämlich folgendes:

  • benutzer: Der Benutzername, mit dem ihr angemeldet seid.
  • @server01: Der Rechner, an dem ihr angemeldet seid.
  • :~: Das Verzeichnis, in dem ihr euch gerade befindet. Die ~ (Tilde) sagt euch, ihr seid in eurem eigenen Home-Verzeichniss.
  • $: Das Dollar-Zeichen sagt euch, dass ihr als normaler User verbunden seid. Als Root würde da ein # (Nummernzeichen) stehen.

So, und nun könnten wir ja eigentlich schon mal paar Befehle eingeben…

Zeit synchronisieren

Ihr erinnert euch? Bei der Installation gab es ja mal so paar Probleme mit der Internet-Zeit-Synchronisation. Nun, stellt sich raus, dass ich dem Server das noch beibringen muss… Also muss das Paket nachinstalliert werden. Benötigt wird das Paket NTP, Network Time Protocol. Und das installiert man folgendermaßen:

Da dies ein administrativer Eingriff ist, muss man dies als Admin tun. Also kommt vor den Befehl der Zusatz sudo. Das zeigt dem System, dass nun mit Admin-Rechten gearbeitet wird. Um das Paket also zu installieren, sind folgende 2 Befehle nötig:

sudo apt-get update

Dieser Befehl aktualisiert die Paketquellen und lädt die Liste verfügbarer Pakete runter. Gleichzeitig wird eine Datenbank erstellt, in der das System vermerkt, was schon installiert ist, und was nicht und deren Abhängigkeiten.

sudo apt-get install ntp

Dieses installiert nun das Paket NTP und alle seine Abhängigkeiten. Die nachfrage, ob man dies nun installieren möchte, bestätigt man mit Y.

Nachdem der NTP-Dienst installiert wurde, stimmt nun auch endlich meine Uhrzeit, die man immer mit dem Befehl “Date” abfragen kann.

Kurze Anmerkung zu apt-get

Das Programm, oder Paket, apt-get ist einer der Paketmanager, mit dem man Pakete installieren, deinstallieren, Systemupdates durchführen und vieles mehr machen kann. Auf alle Aspekte des Pakets einzugehen würde zu weit führen.

Ihr könnt übrigens jeder Zeit eine Handbuchseite zu einem Paket oder Befehl aufrufen. Dazu gebt ihr einfach “man” und den Befehl, über den ihr die Seite sehen wollt, ein. Für apt-get hieße die Zeile z. B.:

man apt-get

BRLTTY entfernen

Wieso denn das jetzt? Nun, BRLTTY hat nur einen Zweck, und zwar die Braillezeile anzusprechen. Da aber niemand mehr direkt am Server arbeiten wird, ist es auch nicht nötig, dass es permanent im Hintergrund läuft. Da ich Linux ja mit Braillezeile installiert habe, hat es BRLTTY auch standardmäßig installiert. Der einzige Grund, je wieder einen Monitor und Tastatur an den Server anzuschließen ist, wenn ich ihn über das Netzwerk nicht mehr erreichen kann. Und dann wird wahrscheinlich sowieso eine Neuinstallation fällig. Daher glaube ich, kann BRLTTY auch runter vom System. Und das geht mit diesem Befehl:

sudo apt-get remove brltty

Abhängigkeiten bereinigen

Wenn man ein Paket entfernt, wird oft eben nur dieses entfernt. Die anderen Pakete, die mit dem eigentlichen Paket installiert wurden, weil sie voneinander abhängig sind, wurden nicht entfernt. Daher müsst ihr gelegentlich mal gucken, ob es nicht mehr benötigte Pakete auf eurem Server gibt. Diese können in einem Rutsch ganz leicht mit folgendem Befehl entfernt werden:

sudo apt-get autoremove

Das müsst ihr nicht oft machen, aber es kann nicht schaden, diesen Befehl auszuführen, wenn ihr mal mehrere Pakete deinstalliert habt. Diese unbenötigten Pakete stören zwar nicht, müssen aber auch nicht unbedingt auf dem Server bleiben.

System update

Eigentlich sollte man meinen, das sei jetzt bei einem gerade aus dem Internet installierten System nicht nötig. Vielleicht ist es das tatsächlich nicht. Aber es würde doch mein Gewissen beruhigen, mal nach Updates zu gucken. Auch hierzu sind zwei Befehle nötig.

sudo apt-get update

Ja, hatten wir eben schon mal, aber wenn wir später mal wieder ein Update machen wollen, müssen beide Befehle sein.

sudo apt-get upgrade

Dieser Befehl führt das eigentliche Update durch.

OK, war nicht nötig, keine Updates vorhanden.

Und eine Vorschau auf den nächsten Artikel erspare ich mir, weil ich wahrscheinlich sowieso wieder was ganz anderes dazwischen schieben werde, als ich vor hatte… :-)

Projekt Homeserver im Eigenbau 5: Debian auf dem Server installieren

Das hat man nun davon! :-) Da wollte ich die Wartezeit, bis die Hardware da ist, abkürzen, und schon mal paar Texte vorschreiben, da gerät alles durcheinander. Da verspreche ich die Installation zu Teil 3, da fällt mir auf, oh, wir haben ja noch gar nicht über Linux gesprochen. Da verspreche ich die Installation zu Teil 4, da fällt mir auf, oh, wir haben ja noch gar kein Installationsmedium. Aber jetzt ist’s wirklich so weit, in diesem Teil installieren wir Linux auf dem Server!

Kleiner Nachtrag zur Hardware

Es scheint immer mehr in Mode zu geraten, in die Gehäuse keine PC-Lautsprecher mehr einzubauen. Ich meine dieses Pieps-Ding. Klar, im normalen PC-Betrieb ist der Nutzen so eines Piepsers zu vernachlässigen. Es gibt meiner Ansicht nach aber trotzdem eine Menge Gründe, auf so einen Piepser nicht zu verzichten. Als Blinder weiß man z. B. ob der Rechner normal bootet, oder einen Fehler hat, weil er dann einen längeren Piepton von sich gibt. Fällt ein CPU-Lüfter aus, ob er nun kaputt ist oder nur ein Kabel sich darin verfangen hat, piept der Rechner. All diese Meldungen bekommt man nicht, wenn der Piepser fehlt. Und bei meinem Zalman Z11 Plus ist leider keiner dabei gewesen.

Ich habe für 5,37 € ein Mainboard Diagnoseset gekauft, welches aus 5 Teilen besteht. Da sind die LEDs für Power und HDD, Reset-Taster und Power-Taster. Die brauche ich nicht, lege ich mal bei Seite. Aber es war halt auch ein aufsteckbarer Piepser im Tütchen, so dass mein Board wieder Pieptöne von sich geben kann.

Das ist auch später noch mal wichtig, weil ich versuchen will, dem Server beizubringen, bei Fehlern sich akustisch bemerkbar zu machen.

Installation

Naja, das BIOS haben wir nun konfiguriert, den Installations-Stick erstellt, die Kaffeemaschine ist aufgetankt und mit ausreichend Kaffee beladen, dann kann es ja los gehen.

Ich habe den Server jetzt neben meinen eigentlichen Windows-Rechner gestellt, weil ich mir paar Kabel davon ausleihen möchte. Ich schließe den Monitor, Tastatur, Netzwerk, Strom und Braillezeile an den Server an.

Ja, Debian unterstützt von Haus aus Braillezeilen. Und zwar läuft im Textmodus der Screenreader brltty. Hat man eine Zeile, die davon unterstützt wird, so wird diese automatisch erkannt, und ab einem bestimmten Punkt der Installation, relativ am Anfang sogar, hat man Brailleunterstützung. Ich habe eine Handy Tech EasyBraille, die von brltty unterstützt wird.

Anschließend stecke ich den Stick mit der Debian-Installation in einen freien USB-Anschluss an der Vorderseite des Gehäuses und schalte den Rechner ein. Für eine kurze Zeit noch braucht ihr sehende Hilfe, bis der Debian-Installer auf den Textmodus umgeschaltet hat und die Braillezeile läuft. Falls ihr keine Zeile habt, die von Debian unterstützt wird, oder überhaupt keine, so könnte man die Installation mittels Sprachausgabe nutzen. Aber wie das geht und wie genau das funktioniert, habe ich nicht getestet. In so einem Falle würdet ihr für die Installation noch sehende Hilfe benötigen.

Wenn ich den Rechner jetzt also einschalte, und er piepst einmal ganz kurz, drücke ich mehrmals F11, damit ich den Auswahlbildschirm bekomme, in dem ich das Boot-Laufwerk auswählen kann. Von der SSD können wir ja nicht booten, da ist ja noch nix drauf. Hier wähle ich meinen USB-Stick aus und drücke Enter. Wenige Sekunden später piepst es erneut, und diejenigen unter euch, die einen Sehrest haben, sehen das grafische Debian-Menü vor sich.

Installationsmethode

In so gut wie allen Fällen sollte die Standardinstallationsmethode die richtige sein. Hier werden einem nur sehr wenige Fragen gestellt und vieles mit Standardwerten festgelegt. Der Cursor steht da schon drauf, wollt ihr also die normale Installation nutzen, drückt einfach auf Enter.

Ich möchte aber den Expertenmodus nutzen. Hier werden einem alle Fragen gestellt, was natürlich auch etwas länger dauern könnte. Aber dafür muss ich hinterher die Werte nicht manuell in irgendwelchen Konfigurationsdateien anpassen. Offen gestanden, ich weiß nicht, welche Fragen da alle kommen, aber ich nehme fast an, es könnte mir später Arbeit ersparen, wenn ich den Expertenmodus nehme. Den erreicht ihr, wenn ihr gleich 2 mal Pfeil runter drückt, Enter, und noch 1 mal Pfeil runter und Enter. Ein paar Sekunden später kommt die Braillezeile und es steht “Choose language” auf der Zeile.

Sprache und Regionseinstellungen

Bei der Sprache wähle ich Englisch. Das hat mehrere Gründe:

  • Manche Programme sind nicht übersetzt. So hätte ich ein Gemisch aus deutschen und englischen Programmen. Und für mich ist es relativ egal, weil mein Englisch für so was ausreicht.
  • Wenn ich Skripte aus dem Internet abschreibe oder herunterlade, funktionieren die evtl. nicht, wenn ich auf Deutsch umstelle. Die suchen auf dem Bildschirm nach bestimmten Texten, und die sind in Deutsch dann ja anders als im Skript hinterlegt.
  • Wenn man Anleitungen im Internet liest, sind da oft die englischen Begriffe aufgeführt. So komme ich zumindest mal nicht durcheinander.

Letztlich könnt ihr das so handhaben, wie es euch beliebt. Ich habe es gerne in Englisch.

Bei der Auswahl des Landes nehmen wir wieder Deutschland, damit Zeitzone und andere Werte korrekt gesetzt werden. Auch für die Tastatur wähle ich Deutschland.

CD-ROM Erkennung und Installer-Module

Anschließend wird das System nach CD-ROM-Laufwerken durchsucht, um evtl. CDs oder DVDs mit Debian zu finden. Ist dies getan, kommt eine Liste der Installer-Module, die man optional laden kann. Hier ist nichts nötig, denke ich mal.

Netzwerk

Zuerst wird man gefragt, ob man das Netzwerk automatisch konfigurieren will. Nein, das will ich nicht. Ich will dem Server eine feste IP geben, und damit ich das nicht nachher umständlich in Konfigurationsdateien machen muss, mache ich das gleich hier. Also wähle ich “Nein” als Antwort.

Nun kommt die übliche Abfrage nach IP-Adresse, Subnetzmaske und Gateway, und zwar jeder Wert in einem eigenen Dialogfeld. Schön ist, dass Subnetzmaske und die Adresse der Fritz!Box als Gateway schon eingetragen waren, nachdem ich die IP-Adresse eingegeben hatte. Und am Ende gibt es noch ein schönes Dialog, wo die Daten noch einmal angezeigt werden und bestätigt werden müssen.

Danach kommt etwas wichtiges, nämlich der Hostname. Der Server braucht einen Namen, und so einfallsreich, wie ich nun mal bin, nenne ich den einfach mal “server01″. :-) Anschließend wird man nach einem Domain Name gefragt. Das Feld lasse ich leer.

Benutzer

Als erstes wird man gefragt, ob man Shadow Passwords nutzen möchte. So ganz habe ich das nicht verstanden, aber es werden die Passwörter wohl in einer separat verschlüsselten Datei gespeichert. Es soll das System noch sicherer machen. OK, dann sagen wir mal ja dazu.

Die Frage, ob der User Root sich einloggen kann, beantworte ich mal mit nein. Root darf alles, und wer sich als Root einloggen kann, hat alle Rechte. Lieber habe ich es, dass es den User Root nicht gibt, aber ein Admin sich je nach Bedarf Root-Rechte aneignen kann. So weiß niemand von außen, wer die Rechte hat, am Rechner alles zu dürfen…

Hierauf kommen Dialogfelder, die den vollständigen Namen, Nutzernamen und Passwort des Hauptbenutzers abfragen. Da sag ich jetzt mal nicht, was ich da so alles eintrage… :-)

Zeiteinstellungen

Seit hier bitte ganz besonders vorsichtig. Das hat mich gerade eine Menge Zeit gekostet, man beachte die Ironie… :-) Denn wenn ihr gefragt werdet, ob ihr die Zeit mittels eines Zeitservers einstellen möchtet, sagt bitte “NEIN”! Denn wenn ihr “Ja” sagt, steigt euch die Braillezeile aus. :-( Ich habe also “Nein” gesagt, und bekomme nun endlich die Liste der Zeitzonen, aus der ich “Europe/Berlin” auswähle.

Festplatten und Partitionierung

Hier mache ich nicht viel, weil ich ja die ganze SSD als Systemplatte nutzen möchte. Daher verlasse ich mich auf die Automatik des Installers und wähle die geführte Partitionierung der gesamten Platte aus.

Nun erscheint eine Liste, aus der ich meine SSD auswählen kann. Auch hier muss man vorsichtig sein, man könnte nämlich auch seinen USB-Stick versehentlich auswählen. Auch, wenn schon andere Platten im System sind, ist hier Vorsicht geboten.

Anschließend werdet ihr noch nach dem Partitionsschema gefragt, also ob ihr eine große Partition für alles, oder getrennte Partitionen für diverse Dinge haben wollt. Warum so kompliziert? Ich packe alles auf eine Partition. Und auch im nächsten Dialog, wo man noch per Hand eingreifen könnte, gehe ich auf “Finish partitioning and write changes to disk”. Im folgenden Dialog gibt es noch mal eine Zusammenfassung, die, wenn alles richtig ist, mit “Ja” bestätigt wird.

Nun dauert es etwas, weil jetzt das Basissystem installiert wird.

Kernel und weitere Fragen dazu

Es kommt die Frage, welcher Kernel installiert werden soll. Angezeigt werden mir 2, einer mit der Versionsnummer 3.2 und einer ohne Versionsnummer. Der ohne Versionsnummer ist schon markiert, also nehme ich den mal.

Anschließend wird man nach einem initrd gefragt. Es geht darum, ob es ein generischer initrd sein soll, der alle Treiber enthält, oder ein gezielter, der nur die Treiber dieses Systems enthält. Ich habe mich für den generischen entschieden, weil ich so problemlos hardware austauschen kann, ohne das System neu installieren zu müssen.

Paket-Manager

Die Netinst-Installation beinhaltet ja nur das Basissystem. Also muss der Rest aus dem Internet nachgeladen werden. Hier wird man als nächstes auch gleich gefragt, ob man einen Spiegelserver nutzen möchte. Das wollen wir natürlich. Und als Protokoll nehme ich HTTP. In der Länderauswahl wähle ich wieder Deutschland. Hier kommt nun die Liste der Spiegelserver, von denen ich den obersten nehme.

Gefragt nach meinen Proxy-Einstellungen, lasse ich das Feld leer. Ich gehe ja nicht über einen Proxy ins Netz.

Bei der Frage, ob ich auch Non-Free-Software nutzen möchte, sage ich “Ja”. Das ist Software, die zwar mit Debian läuft, aber evtl. andere Urheberrechte hat, als Debian üblicherweise verwendet. Daher nennt Debian diese auch Nicht-freie Software.

In einem anschließenden Dialog kann man festlegen, ob man nur Sicherheitsupdates, oder auch neue Versionen von Programmen haben möchte. Das sind aber keine automatischen Updates, sondern nur die Möglichkeit, beides zu nutzen. Daher habe ich es so gelassen, wie es eingestellt ist, beide sind angehakt.

Software Installation

Nun kommen noch paar Fragen zur Software selbst. Die erste Frage ist z. B., ob ich am Popularitätswettbewerb für die Pakete teilnehmen will. Klingt erst mal doof, ist es aber gar nicht. Hier wird statistisch erfasst, welche Pakete am beliebtesten sind, so dass diese bei den Installations-CDs auf die erste Disk kommen. So braucht man sich nicht alle CDs oder DVDs von Debian runterladen, sondern hat die beliebtesten Pakete immer gleich auf der ersten CD. Ich möchte da trotzdem nicht mitmachen.

Dann kommt eine Frage bezüglich von man und mandb, das sind die Online-Hilfeseiten für Befehle und Linux selbst. Hier wird gefragt, ob ich die Seiten als vorformatierte Seiten haben will, sage ich “Nein”.

Und nun kommt mit einer der wichtigsten Teile der Installation. Hier wird nämlich jetzt ausgewählt, wofür der Rechner eigentlich genutzt wird. Genau genommen ist hier eine Liste von Programmen, die ich auswählen kann, um z. B. einen Webserver, Mailserver, Dateiserver usw. zu betreiben. Daher werde ich in einer Liste angeben, was ich an-, oder abgewählt habe:

  • Debian desktop environment, Abgewählt. Wahrscheinlich grafische Benutzeroberfläche, brauche ich nicht.
  • Web Server, angewählt.
  • SQL Database, angewählt.
  • File Server, angewählt.
  • SSH Server, angewählt.

Nun, das dauert jetzt, bis er alles runtergeladen und installiert hat… Oh, so lange hat das gar nicht gedauert, weniger als 3 Minuten!

Bootloader installieren

Die SSD muss ja auch noch bootfähig gemacht werden. Das geht mit dem Bootloader GRUB. Zunächst sucht GRUB, ob noch andere Betriebsysteme installiert sind. In meinem Falle natürlich nicht. Also fragt es, ob es den Botloader in den Master Boot Record der ersten Platte schreiben darf. Da das meine SSD ist, sage ich mal “Ja”.

Abschluss der Installation

Nun tut das System noch was, ich denke, es schreibt noch Konfigurationen. Anschließend werde ich gefragt, ob die Systemuhr auf UTC eingestellt ist, oder auf Lokalzeit. Ich war eigentlich immer der Ansicht, die sei auf Lokalzeit eingestellt. Wie auch immer, standardmäßig gibt er UTC vor. OK, akzeptiere ich mal so. Wenn es falsch ist, kann man das evtl. später noch korrigieren.

Er will, dass ich den USB-Stick abziehe und Enter drücke. OK, mache ich das, er will neu starten. Nun noch mal schnell einloggen um zu sehen, ob alles geklappt hat. Ja, es geht!

Und jetzt?

Ja, jetzt drücke ich mal kurz den Power-Taster, um den Rechner abzuschalten. Danach bekommt mein Windows-Rechner erst mal seine Kabel zurück. Der Server verschwindet jetzt in eine Ecke, wo es nur Strom und Netzwerk gibt. Ab jetzt wird er von meinem Windows-Rechner ferngesteuert.

Und wie das geht, schreibe ich im nächsten Teil.

Projekt Homeserver im Eigenbau 4: BIOS konfigurieren und Installations-Stick erstellen

So, genuch geredet, nu wird Hand an den Server gelegt! :-)

Um den Server nun installieren zu können, sind mehrere Schritte und einige Tools nötig. Gehen wir also mal der Reihe nach.

BIOS konfigurieren

Hierfür werdet ihr sehende Hilfe benötigen. Viel ist auch gar nicht zu tun. Das BIOS muss hier nicht bis zum Äußersten ausgereizt werden. Eher im Gegenteil, beim Server ist es wichtig, dass er stabil läuft. Übertackten, optimieren oder sonstige Spielchen sind hier eher nicht so das, was man machen möchte.

Da jedes BIOS anders aussehen könnte, werde ich jetzt auch nicht im Detail beschreiben, wo ihr welche Option findet. Aber wir wollen hier sowieso erst mal nur 2 Dinge ändern.

  • Die Lüftersteuerung muss evtl. angepasst werden. Diese Option findet ihr entweder bei den Power Settings oder es gibt eine eigene Rubrik Health oder Motherboard Health, manchmal auch Monitor. Bei meinem Board heißt die Rubrik H/W Monitor. Hier werden die CPU-Fans und die Chassis-Fans auf “Silent” gestellt. So laufen sie am langsamsten und drehen hoch, wenn die Temperatur sich erhöht.
  • In der Rubrik “Boot” müssen wir nun überprüfen, ob die SSD auch wirklich das Startlaufwerk ist. Schließlich soll davon ja gebootet werden.

Das ist eigentlich alles, was im BIOS geändert werden muss. Zwar könnt ihr andere Einstellungen anpassen, aber bedenkt, Stabilität sollte euer Hauptaugenmerk sein.

Installationsmedium

Wir wollen Linux von einem USB-Stick installieren. Damit haben wir uns ja auch ein unnötig teures DVD-Laufwerk gespart. Also brauchen wir einen USB-Stick. Ich habe hier einen 8 GB Stick, den ich für solche Zwecke immer mal wieder nutze. Da die Linux-Installation aber recht klein ist, würde ein Stick mit 1 GB völlig ausreichen.

Linux Installationsdatei

Nun braucht’s noch die Linux Installationsdatei. Ich habe mich für die Netinst-Variante entschieden. Die ist klein, bringt nur das Grundsystem mit und holt sich den Rest aus dem Netz. Die Netinst Distribution von Debian gibt es in verschiedenen Versionen. Klickt auf den Link und sucht nach “AMD64″, das ist die Variante, die ich installieren werde. Die Image-Datei ist ein ISO-CD-Image und ist etwa 230 MB groß.

USB-Stick vorbereiten

Nun muss das Image ja irgendwie auf den USB-Stick, damit wir davon installieren können. Es gibt eine menge Wege dazu, aber ich bevorzuge den Universal USB-Installer. Das ist ein kleines Progrämmchen, mit dem ihr den USB-Stick erstellt. Ladet euch den Universal USB-Installer also runter und kopiert ihn an einen Ort, wo ihr ihn leicht findet. Zum Zeitpunkt, an dem ich diesen Text schreibe, ist es Version 1.9.5.6.

Startet nun das Programm, indem ihr die “Universal-USB-Installer-1.9.5.6.exe” doppelklickt oder mit Enter startet. Es erscheint ein Lizenzvertrag, den ihr mit “I Agree” annehmt.

Im folgenden Dialog wandert ihr mit der Tab-Taste von Feld zu Feld. Zwar sind die Felder und das ganze Programm an sich in englisch, aber die Bedienung ist auch so möglich, so viel gibt es da ja nicht.

In der ersten Auswahlbox wählt ihr nun eure Linux-Distribution aus. Dies ist bei mir “Debian Netinst”. Als nächstes wählt ihr den Speicherort, an den ihr die Debian ISO-Datei heruntergeladen habt. Dazu aktiviert ihr einfach die Schaltfläche “Browse”. Darauf öffnet sich eine Dialogbox, in der ihr den Pfad zur heruntergeladenen ISO-Datei angebt.

Steckt nun euren USB-Stick an den PC und schaut nach, welchen Laufwerksbuchstaben er bekommen hat. Denkt bitte dran, alles, was jetzt noch auf dem Stick drauf ist, wird gelöscht. Wählt jetzt also im nächsten Feld euren USB-Stick aus. In meinem Fall ist das F:. Macht auch einen haken in das Feld, wo gefragt wird, ob ihr das Laufwerk F: formatieren wollt. Laufwerk F: könnte bei euch jedoch ein anderes sein, je nachdem, welchen Buchstaben euer USB-Stick bekommen hat.

Geht jetzt mit Tab weiter, bis ihr zur Schaltfläche “Create” kommt. Aktiviert diese. Nun werdet ihr noch mal gefragt, ob ihr das alles wirklich genau so machen möchtet und ob ihr euch sicher seit. Wenn ihr euch sicher seit, bestätigt mit “Ja”. Der Vorgang, den USB-Stick zu formatieren und die ISO-Datei zu installieren beginnt und dauert eine ganze Weile. Anschließend erscheint ein Dialog, indem ihr euch die einzelnen Schritte noch einmal ansehen könnt. Aktiviert hier die Schaltfläche “Close”.

OK, der Server ist soweit vorbereitet, das Installationsmedium ist auch erstellt, dann können wir im nächsten Teil ja endlich zur Installation kommen. :-)

Projekt Homeserver im Eigenbau 3: Kleiner Versuch einer Linux-Einführung

Bevor wir jetzt Linux aber auf dem soeben fertiggebauten Server installieren können, müssen wir reden. Natürlich, über Linux selbst. Schließlich ist das ein völlig anderes Betriebssystem mit einer vollkommen anderen Bedienstruktur. Und ich möchte in diesem Artikel versuchen, mit einem Hauruck-Crashkurs zumindest die Grundprinzipien von Linux zu vermitteln, zumindest, soweit ich diese auch verstanden habe… :-)

Als ich mit XBMC einen eigenen Mediacenter-PC gebaut habe, habe ich, weil ich eben über Linux nichts oder nur wenig wusste, die fertige XBMC-Distribution genutzt, die das XBMC-Team auf ihren Seiten zum Download angeboten hatte. Damals war das noch XBMC 9.11. Der Vorteil war, man legt die CD ein, lässt es installieren, und muss sich um nichts mehr kümmern. Alles ist vorkonfiguriert, alle nötigen Programme und Pakete sind bereit und man muss den PC hinterher wirklich nur noch einschalten, um XBMC nutzen zu können. Aber wie das so ist, es packte mich die Neugier. Also habe ich mir Anleitungen im Netz gesucht, um XBMC von Grund auf selbst zu installieren und zu konfigurieren. Dabei habe ich eine Menge Probleme gehabt, viele Lösungen gesucht und gefunden und dabei auch beträchtlich über Linux gelernt. OK, so ein bisschen weiß ich jetzt also über Linux, aber auch das ist nur unwesentlich mehr, als zum einfachen Betrieb nötig ist. Daher muss ich auch jetzt noch oft in Foren suchen oder Anleitungen lesen. Aber dennoch, Linux ist längst nicht mehr das Unbekannte, wovor man sich fürchten müsste… :-)

Debian für den Server

Auf dem Server will ich Debian installieren. Linux ist eigentlich nur der Kern, oder was auch Kernel genannt wird. Das ist das eigentliche Herz des Systems. Eine Distribution ist der Linux-Kernel und eine Sammlung von Programmen, die zum Betrieb eines PCs oder Servers nötig sind. Jede Distribution hat andere Schwerpunkte. Manche sind für kommerziellen Einsatz optimiert, manche für den möglichst einfachen Gebrauch von Heim-PCs, und so hat jede Distribution ihre Berechtigung. Ubuntu mit seinen vielen Unterformen z. B. basiert auf der Debian-Distribution, unterscheidet sich aber in einigen Details. So wird hier mehr Wert auf einfache Bedienbarkeit gelegt. Debian hingegen wird gerade für Server gerne genommen, da es hier schneller und zuverlässiger arbeitet, so entnehme ich das jedenfalls einigen Forenbeiträgen, wo es um die Diskussion ging, welche Distribution denn nun für was am besten geeignet ist.

Keine grafische Oberfläche

Für Linux gibt es eine Menge grafischer Oberflächen. Diese machen das Arbeiten unter Linux auch nicht wirklich komplizierter, als unter Windows. Für blinde Anwender, soweit jedenfalls meine Informationen, ist Gnome eine beliebte grafische Oberfläche, weil es hierfür den Screenreader Orca gibt. Ich selbst habe mit grafischen Oberflächen auf Linux nie gearbeitet.

Auf dem Server wird jedoch keine grafische Oberfläche installiert. Wieso auch? Am Server selbst wird niemals jemand arbeiten. Er wird vollständig aus der Ferne gesteuert und soll ja nur Daten anliefern und andere Dienste bereitstellen. Also wird hier so gut wie nur mit der Eingabeaufforderung gearbeitet werden. Ab und zu werden Texteditoren gebraucht, um Konfigurationsdateien zu bearbeiten, aber das Meiste wird mit Kommandozeilenbefehlen erledigt. Für mich persönlich ist das nicht so wild. Ich habe lange noch unter DOS gearbeitet, und auch jetzt noch, unter Windows 7, gibt es Dinge, die ich immer noch mit der Kommandozeile erledige, weil es, aus meiner Sicht, leichter ist.

Linux im Überblick

Im Laufe der Artikelserie über die Einrichtung des Servers werde ich vieles noch im Detail beschreiben. Dennoch werde ich, weil es zum Verständnis wichtig ist, einige Dinge kurz anreißen. Wenn ihr also mit meiner stichwortartigen Beschreibung im Augenblick noch nichts anfangen könnt, macht euch keine Sorgen, wenn es wichtig wird, werde ich es noch im Detail beschreiben.

Installation

Die Installation werde ich zwar beschreiben, vor allem auch, welche Antworten ich bei bestimmten Fragen des Installers ausgewählt habe und warum, aber ich werde den Prozess nicht sehr detailliert ausführen. Die Installationsanleitung auf der Debian Webseite ist sehr ausführlich und beschreibt den Vorgang und alles was dazu gehört sehr präzise und leicht verständlich. Daher denke ich, muss ich das nicht wiederholen. :-)

Bedienung

Die Bedienung des Servers wird von einem anderen PC im gleichen Netzwerk aus durchgeführt. Ich verwende hierfür Putty, einen SSH-Client. Wie das genau geht, was dazu nötig ist und wie man das einrichtet, werde ich dann noch zu gegebener Zeit genauer erläutern. Ich nutze Putty unter Windows 7 X64 mit Jaws eigentlich schon länger für meine XBMC-Maschine. Das lässt sich eigentlich ganz gut so bedienen.

Kleiner Überblick über Linux-Eigenheiten

Für den Einsatz von Linux gibt es eine Reihe von Dingen zu beachten, die ich mal hier aufzählen möchte:

  • Linux hat eine viel strengere Trennung von Administratoren und Benutzern. Der Benutzer kann bestimmte Operationen einfach nicht durchführen. Das Editieren der Konfigurationsdateien z. B. ist einem normalen Benutzer nicht möglich. Damit er es doch kann, braucht er das Administrationskennwort, oder auch das Root-Passwort. So könnte ein Benutzer eine Konfigurationsdatei editieren, wenn er dem System sagt, dass er das jetzt als Admin tut. Dafür wird dem jeweiligen Befehl ein sudo vorangestellt. Wundert euch daher nicht, dass fast alle administrativen Befehle mit einem sudo beginnen. Dann wird das Admin-Kennwort abgefragt, und ihr editiert die Datei z. B. mit Admin-Rechten.
  • Linux kennt keine Laufwerksbuchstaben. Jede Festplatte hat einen Gerätenamen oder eine Gerätedatei, und jede Partition auf der Festplatte ist nummeriert. Die Gerätedateien findet man im Verzeichnis /dev. Zu Verzeichnisnamen sage ich gleich noch was. SATA-Festplatten heißen in der Regel sdXY, wobei X für die Platte und Y für die Partition steht. Die erste SATA-Platte hieße dann sda und die zweite Platte sdb. Die erste Partition auf Platte 1 wäre dann sda1 und so weiter. Der ganze Pfad zur ersten Partition der ersten platte wäre dann also /dev/sda1.
  • In Linux werden für Verzeichnisse keine Backslashe genutzt. Genau genommen habe ich diese nur in Skripten oder komplexen Suchmustern gesehen. Hier ist der normale Schrägstrich das, was in Windows der Backslash ist. Das Hauptverzeichnis, oder auch Root, ist also /. Hierunter befinden sich dann die einzelnen Verzeichnisse. Zum Beispiel ist /etc das Verzeichnis, indem die Konfigurationsdateien liegen, /home ist das Verzeichnis, indem die Benutzerverzeichnisse liegen, /dev ist das Geräte-Verzeichnis usw.
  • Um also ein Verzeichnis oder eine Datei von einer Festplatte zu lesen, bedarf es eines Zwischenschritts. Wie gesagt, es gibt ja keine Laufwerksbuchstaben. Was man in Linux tut ist, man Mountet ein Laufwerk. Oder auch ganz einfach gesagt, man hängt es in den Verzeichnisbaum ein. Ist also die zweite Partition auf der ersten Platte, also /dev/sda2, die Datenpartition? Nun könnte man im Hauptverzeichnis / ein Verzeichnis “Daten” anlegen. Hier hängt man dann, also mountet, die Partition /dev/sda2 ein. Nun erreicht man alle Verzeichnisse und Dateien auf der ersten platte und der 2. Partition dadurch, dass man in das Verzeichnis /Daten wechselt. Hier ist das Hauptverzeichnis der 2. Partition der ersten Platte. Klingt erst mal kompliziert, ich weiß. Macht man sich mit dem Konzept aber mal vertraut, ist es eigentlich ziemlich einfach.
  • Linux achtet in allem auf Groß- und Kleinschreibung. Das gilt für Verzeichnisse, Dateien, Befehle und auch dessen Optionen. Das Verzeichnis /daten ist ein anderes als /Daten. Die Option -p tut was anderes als -P. Daher ist es ungemein wichtig, dass ihr Befehle, die ich in Beispielen aufführe, ganz genau abschreibt und dabei auf Groß- und Kleinschreibung achtet. Bestenfalls passiert nichts, schlimmstenfalls löscht ihr Daten oder beschädigt das Dateisystem.
  • Programme, oder auch Pakete, in Linux zu installieren, ist eigentlich auch total einfach. Jede Distribution installiert erst mal nur die Pakete, die unbedingt nötig sind. Will man andere Pakete nachinstallieren, kommen sie aus einem Repository, also einer Quelle für Programme, die speziell für diese Distribution gedacht sind. Das System kennt seine Paketquelle, so dass man ihm nur sagen muss, was man haben möchte. Wollte man also den Editor Nano installieren, würde man mit dem Befehl “apt-get install nano” sein Ziel erreichen. Genauso einfach kann man es auch wieder loswerden, mit “apt-get remove nano” verschwindet das Paket wieder vom System. Auch, wenn ein Programm installiert wird, welches auf andere Pakete angewiesen ist, kümmert sich das System drum, dass auch diese mit installiert, oder später auch wieder entfernt werden.

War sonst noch was?

Wie gesagt, das soll euch nur mal einen groben Überblick geben, was Linux ist, wie es in etwa funktioniert und wie wir es in Zukunft bedienen werden. Wie ich schon sagte werde ich auf die wichtigen Punkte noch im Detail eingehen, wenn es so weit ist und wir damit arbeiten. Für jetzt möchte ich nur, dass euch Begriffe wie root, sudo, mount und dergleichen nicht völlig fremd sind.

Wenn ihr euch etwas in Linux einlesen möchtet, kann ich euch das Debian Anwenderhandbuch von Frank Ronneburg empfehlen. Zwar solltet ihr auch die ersten Kapitel lesen, aber so ab Kapitel 3 geht es dann um die Grundlagen von Debian.

Tja, dann würde ich sagen, fangen wir mal mit der Installation an. Falls sich weitere Fragen ergeben, beantworte ich diese, so bald sie akut werden. Und falls ich etwas falsch erklärt haben sollte, bitte ich um einen Hinweis, damit ich den Text entsprechend korrigieren kann. Ich will ja keine Falschinformationen verbreiten. :-)

Projekt Homeserver im Eigenbau 2: Die Hardware

Nun, nachdem ich mir also überlegt habe, was mein Server können soll, muss ich mir jetzt die Hardware zusammensuchen, auf dem das System installiert werden soll. Hierbei gibt es einiges zu beachten:

  • Er soll leise sein. Das bedeutet aber nicht, dass die Lautstärke die oberste Priorität hat. Also so leise wie nötig, aber auch lauter, wenn es nicht anders geht.
  • Er soll stromsparend sein. Natürlich, denn der Server wird 24 Stunden, 7 Tage die Woche laufen. Also müssen Komponenten ausgewählt werden, die möglichst sparsam arbeiten. Aber auch hier: Wenn die Leistung nötig ist, dann muss man halt auch mit einem gewissen Stromverbrauch leben.
  • Er soll lange halten. Klar, denn ich will ja nicht alle Nase lang neu bauen. Also muss ich zum Beispiel dafür sorgen, dass er gut belüftet werden kann. Denn was Rechner und Bauteile gar nicht mögen ist Hitze!
  • Er soll zwar klein sein, aber möglichst effektiv ausgenutzt werden können und erweiterbar sein. Fast schon zu viel verlangt, aber mit dem richtigen Gehäuse ist auch das durchaus machbar.
  • Er soll bezahlbar bleiben. Ja, sogar das ist machbar.

Ich werde im Folgenden also die ausgewählte Hardware beschreiben, dessen Preis angeben und warum ich mich gerade für dieses Bauteil entschieden habe. Allerdings könnte, und da muss sich jeder so seine eigenen Gedanken machen, mein Bauvorschlag einer sein, der zu euren Ansprüchen weniger passt. Ich hoffe aber, dass ihr von dem Prozess, die richtige Hardware zu finden, genug Informationen mitnehmen könnt, um euch selbst Gedanken für eure Anforderungen machen zu können. Auch würde ich mich darüber freuen, wenn ihr hier in den Kommentaren oder in der Mailingliste zu diesem Thema diskutiert oder eigene Vorschläge einbringt.

Also, dies ist dann der Server, den ich zusammengebaut habe:

Gehäuse Zalman Z11 Plus

Preis: 59,03 €

Hierbei handelt es sich um ein Midi-Tower-Gehäuse mit genügend 3,5″ und 5,25″ Einschüben. Den Spezifikationen nach ist das ein Gaming-Gehäuse. Warum ich mich dafür entschieden habe? Nun, weil ich faul bin. :-) Gaming-Gehäuse sind darauf optimiert, dass eine weißglühende Grafikkarte und ein übertakteter Prozessor darin laufen können, ohne dass sie den Hitzetot sterben. Kurz gesagt, diese Dinger haben schon eine ausgeklügelte Belüftung. So sind Lüfter für Festplattenschächte, Gehäuse Rück- und Oberseite schon installiert. Ich brauche also nicht noch extra Lüfter kaufen. Allerdings werde ich nur den hinteren 120 mm Lüfter und den vorderen anschließen. Das müsste für die Kühlung ausreichen. Wenn ich feststelle, dass es das nicht tut, kann ich die zusätzlichen Lüfter ja immer noch anschließen. Das Netzteil wird unten eingebaut, so dass es nicht noch unnötig die warme Abluft des Mainboards ansaugt und die Festplatten sind hier ebenfalls vibrationsgedämpft einbaubar. Zwar sollte die Lüftung nicht gerade geräuschlos sein, aber so schlimm ist das auch nicht. Zumal man die Lüfter über die Steuerung am Board noch langsamer laufen lassen kann.

Netzteil Be quiet! BN141 System Power 7 – 350 Watt

Preis: 39,89 €

Dieses Netzteil habe ich auch schon in einem Windows-PC eines Bekannten verbaut. Seinen kleineren Bruder, das 300 Watt Modell, habe ich in meinen Mediacenter-PC gebaut. Dieses hier habe ich für den Server vorgesehen, da es 2 getrennte 12V-Schinen hat. Das kommt zum Tragen, weil ich viele Platten in das System einbauen will. Es ist sehr effizient, also es verbrennt nicht nutzlos Strom. Dazu kommt, dass es extrem leise ist. Selbst der 120 mm Lüfter an der Unterseite macht so gut wie keine Geräusche und das Netzteil selbst wird so gut wie nicht warm.

Diverse Y-Kabel

Preis: 5,69 €

Zwar hat das Netzteil genug Leistung, aber viel zu wenig Stecker. Ich könnte niemals 8 Platten oder dergleichen daran anschließen. Also musste ich noch paar Y-Kabel kaufen, um die SATA-Stromanschlüsse und die 4-Pin-Molex-Anschlüsse zu vervielfachen. Paar habe ich hier schon zu hause, paar waren noch nötig. Da die Dinger zwischen 2 und 4 Euros je Stück kosten, ist das kaum der Rede wert.

Lian-Li EX-36B1 Festplattenkäfig

Preis: 30,79 €

Wie ich schon sagte, was ich am dringendsten brauche sind Festplatten! Das Gehäuse hat 4 ungenutzte 5,25″ Schächte. In 3 davon kommt dieser Festplattenkäfig rein. So kann ich 4 3,5″ Platten und 2 2,5″ Platten einbauen. Die SSD z. B. könnte man gut hier unterbringen, dann belegt die keinen wertvollen 3,5″ Platz im Gehäuse.

An diesem Käfig ist auch gleich ein 120 mm Lüfter angebracht, so dass die 4 Festplatten auch gut belüftet werden können. Außerdem ist davor ein waschbarer Staubfilter, so dass das Gehäuse nicht zum Staubparadies verkommt und später mal Probleme verursacht. Die Platten sind vibrationsgedämpft in den Käfig eingesetzt. Der Rahmen selbst wird noch mal mit Gummipuffern vom Gehäuse entkoppelt und überträgt seine eigenen Vibrationen nicht auf dieses. Das sollte den Geräuschpegel auf einem erträglichen Niveau halten.

Der einzige wirkliche Nachteil ist, dass man den ganzen Rahmen aus dem Gehäuse ausbauen muss, wenn man eine Festplatte hinzufügen oder ausbauen möchte. Anschließend müssen die Festplatten wieder korrekt angeschlossen werden, damit es keine Probleme mit dem RAID gibt.

SATA-Datenkabel

Preis: Gar nix :-)

In den letzten 5 oder 6 Jahren ist bei jedem Kauf eines Boards ein Satz SATA-Kabel dabei gewesen. Längst nicht alle wurden auch gebraucht. Daher habe ich jetzt genug übrig, um 8 Platten anschließen zu können, und mit dem neuen Board sind ja wieder 2 dazu gekommen. Aber selbst wenn ihr keine haben solltet, die Dinger gibt es für knapp 1,70 € bis 3,50 € je Stück, oder auch Sätze mit 2 oder 4 Kabeln für um die 5 €.

SSD Sandisk SDSSDHP-064G-G25 64 GB

Preis: 44,12 €

Hierauf wird das System installiert. Außer dem Home-Verzeichnis des Benutzers kommt hier nichts drauf. Die SSD habe ich nicht ausgewählt, weil sie super schnell ist. Darum ging es mir hierbei gar nicht. Aber sie ist lautlos, wird nicht warm und verbraucht fast keinen Strom. Dadurch ist sie als Systemplatte sehr pflegeleicht.

Prozessor Intel Core I5 4590 mit 3,3 GHz

Preis: 177,36 €

Die Haswell-Prozessoren verbrauchen im Leerlauf fast gar nichts. Daher ist es fast egal, welchen Haswell ich nehme. Ich muss mich nur für eine Maximalleistung entscheiden. Ich habe mich für 3,3 GHz entschieden, weil das Preis-Leistungsverhälltnis für mich zum Zeitpunkt des Kaufs am besten passte. Der Unterschied zum 3,2 GHz Prozessor waren nur wenige Cent, der hätte 176,79 € gekostet. Außerdem ließe sich dieser noch leicht kühlen, selbst wenn er mit Vollast betrieben wird. Aber das wird eher weniger passieren, die meiste Zeit wird der Server Däumchen drehend darauf warten, dass ich was von ihm will. :-) Allerdings kann ich jetzt noch nicht absehen, welche aufgaben der Server noch aufgedrückt bekommt, daher wollte ich nicht zu klein kaufen.

Arbeitsspeicher Kingston HyperX PC3-12800 8GB

Preis: 81,85 €

Wahrscheinlich hätten 4GB auch gereicht, aber man bekommt ja fast nur noch 8GB-Kits. Und auch hier, wer weiß, wohin meine Anforderungen noch gehen.

Mainboard Asrock H87 Pro4

Preis: 73,90 €

Dieses Board passt zu Prozessor und Speicher. Ich habe mich für ein ATX-Board entschieden, anstatt eines kleineren Boards, weil dieses schon 6 SATA-Anschlüsse hat. Außerdem kann ich mit einer Erweiterungskarte weitere SATA-Ports nachrüsten. Wie ich schon sagte, ich brauche viele Platten…

Erweiterungskarte Assmann DS-30104-1 Digitus PCI-Express Karte für 4 weitere SATA-Ports

Preis: 47,22 €

Diese Karte ist nötig, um weitere 4 Festplatten anschließen zu können. Ein SATA-Anschluss am Board ist mit der SSD belegt, somit kann ich mit dieser Karte insgesamt noch 9 Festplatten ins Gehäuse einbauen. So viele werden es wohl nicht werden, aber es könnte sein. Besser, ich bin vorbereitet… Und gleich noch 2 SATA-Kabel, davon kann ich gar nicht genug haben… :-)

Wichtig ist noch, dass diese Karte eine PCIE X4-Karte ist. Sie passt in die Steckplätze für PCIE X1 Karten nicht rein. Falls das Board keinen regelrechten PCIE X4 Steckplatz hat, muss man den PCIE X16 Steckplatz nutzen, der eigentlich für Grafikkarten gedacht ist. Da wir aber die OnBoard-Grafik nutzen, macht das nix, wenn wir den Platz mit dieser Karte belegen.

Grafikkarte?

Nein, die braucht’s nicht. Der Grafikkern ist, wenn ich das richtig gelesen habe, bei den neueren Prozessoren schon auf dem Chip. Und das Board hat DVI- und HDMI-Ausgänge, so dass ich einen Monitor anschließen kann. Zwar dürfte die Grafikkarte nicht unbedingt spieletauglich sein, aber das muss sie ja auch nicht. Reicht völlig, wenn sie eine Textkonsole oder minimale Grafik darstellen kann, und das kann sie allemal. Sie kann noch mehr, aber mehr ist für den Server nicht nötig.

Fazit

Es ist nicht der billigste Rechner geworden. Mit einem Preis von insgesamt 559,85 € für die Hardware ist es aber noch erträglich. Aber da sind jetzt noch keine Festplatten für das RAID enthalten, das ist jetzt nur der nackte Server selbst.

Wie ihr bemerkt haben dürftet, gibt es hier auch kein DVD-Laufwerk. Wozu auch? Es würde sowieso, wenn alles gut geht, nur ein mal gebraucht. Ich habe ein externes Laufwerk, falls mal eines nötig sein sollte. Da kann man sich die Ausgabe sparen. Und das Linux-System werde ich von einem USB-Stick installieren, weswegen nicht mal dafür ein Laufwerk nötig ist.

Im nächsten Teil werde ich also auf dem Server das Linux installieren und einige Grundkonfigurationen vornehmen. Zwar werde ich auch hier nicht bei Adam und Eva anfangen, aber ich werde versuchen, so viele Infos wie möglich zu geben, so dass ihr wisst, was da genau vor sich geht. Für Diejenigen also, die mit Linux vertraut sind, dürfte der nächste Teil also eher langweilig sein. Dennoch würde ich mich freuen, falls auch die mitlesen, denn falls ich was übersehen habe oder etwas auf einem anderen Wege einfacher zu erreichen ist, würde ich mich über diese Info sehr freuen.

Kleiner Nachtrag

Diesen Artikel habe ich immer dann ergänzt und bearbeitet, wenn ich ein Bauteil bestellt oder erhalten hatte. Das Gesamtkunstwerk steht erst jetzt vor mir. Und ich muss sagen, es gefällt mir.

Die im Gehäuse integrierten Lüfter sind in der Tat leise. Auch die blaue LED-Beleuchtung des vorderen Lüfters trägt nicht zu dick auf. Obwohl, wenn es nervt, kann ich den Lüfter immer noch austauschen. Der Lüfter des Lian-Li-Festplattenkäfigs hingegen ist nicht sehr leise. Man kann es aber ertragen, zumal der Server ja irgendwohin kommt, wo er nicht nervt, also nicht genau im Wohnzimmer neben meine Ohren… :-)

Die SSD wird übrigens bei diesem Gehäuse hinter das Board gebaut. Zugegeben, das habe ich bisher auch noch nie gesehen, gefällt mir aber. Die SSD ist ja nun nicht gerade ein Bauteil, das schnell warm wird, und die Luft zirkuliert auch hinter dem Board noch genug. So bleiben alle anderen Schächte frei für platten.

Für alles gibt es Normen. Kurz gesagt, es gibt keinen Stecker, den man falsch anschließen kann. Die Stromanschlüsse haben Aussparungen oder abgewinkelte Ecken an einer Seite, der USB-3-Header auf dem Board hat einen Stecker mit einer kleinen Plastiknase, auch die Stecker des USB-2-Headers passen nicht falsch rum drauf, es fehlt ein Pin, und da wo der Pin fehlt, gibt es kein Loch im Stecker. Das einzige, wo sich irgendwie gar keiner Gedanken gemacht hat, sind die Anschlüsse des Gehäuses. Power-Knopf und -LED, HDD-LED, Reset-Knopf, alles kleine Steckerchen die sehr klein und sehr schmal sind. Am Board hat man dann einfach einen Block von Pins, auf die diese Steckerchen aufgesteckt werden müssen. Ehrlich, wer sich da mal einen Standardstecker ausdenkt, würde echt einen Entwicklerpreis verdienen. Das ist nämlich der Teil, der beim PC-Bauen bei mir am längsten dauert. Aber egal, auch das ist geschafft. Nun kann es mit der nächsten Stufe weitergehen.

Podcast Nr. 74: Der KNFB Reader für das iPhone

Auf dem N82 von Nokia war dieses Programm für Blinde und Sehbehinderte eine Möglichkeit, Texte schnell und unkompliziert zu lesen. Lange Zeit ging das mit dem iPhone nur mit Apps, die diesen Aufgaben nicht wirklich gerecht wurden. Aber nun, da der KNFB Reader auch für das iPhone verfügbar ist, ist diese Lücke auch geschlossen. Rene Zimmer führt uns hier die Grundfunktionen der App an praktischen Beispielen vor.

Download