Alle Beiträge von Kamil Günay

Mac: Installationsmedium für Yosemite erstellen

Dies ist ein Gastbeitrag. Diese Anleitung erschien als Mail in der TuKSuB-Mailingliste und wurde von Heiko W. verfasst.


Nachdem der Ruf nach einer einfachen Anleitung, einen bootfähigen Installationsstick für OSX Yosemite zu erstellen, laut wurde, möchte ich Euch so einfach und verständlich wie möglich erklären, wie das geht.

Was brauchen wir?

Zunächst brauchen wir die Yosemite Installationsdatei, die ungefähr 5,7 GB groß ist. Sie ist im Appstore herunterzuladen. Sucht im Appstore nach “Yosemite” und klickt dann auf “laden” bzw. “Update”, wenn Ihr noch OSX 10.8 oder 10.9 auf Eurem Rechner habt. Nach dem Herunterladen wird die Installation von Yosemite sofort gestartet. Bereits im ersten Bildschirm klickt Ihr dann auf die Schaltfläche “Abbrechen”, um die  Installation abzubrechen. Nun befindet sich im Ordner “Programme” eine Datei mit dem Namen “OS X Yosemite Installation.app”.

Dann benötigen wir noch einen USB-Stick mit mindestens 8 GB Kapazität oder eine externe Festplatte, am USB- oder Thunderbold-Anschluss des Mac.

Hinweis: Lasst Euch nicht vom Dateinamen täuschen, den Ihr im Programme-Ordner findet: OS X Yosemite Installation.app. Dieser Dateiname, den Ihr im Ordner findet, stellt lediglich die deutsche Übersetzung des originalen Dateinamens dar. Und wie heißt der Originaldateiname? Diese Frage kann sich jeder selbst beantworten. Markiert die Datei “OS X Yosemite Installation.app” und drückt dann CMD+I, um die Dateiinformationen angezeigt zu bekommen. Weiter unten in diesem Fenster findet Ihr den Punkt “Weitere Informationen”. Dieser Punkt lässt sich mit VO+# erweitern.  Dann findet Ihr den Punkt “Name und Suffix”. Diesen Punkt erweitert Ihr ebenfalls mit VO+#. Geht Ihr nun 2 Schritte weiter (mit VO+Pfeil-rechts), findet Ihr den Originaldateinamen. Dieser sollte sein: “Install OS X Yosemite.app”. Und genau diesen Originaldateinamen benötigen wir später noch. Übrigens: Auch der Ordnername “Programme” ist lediglich die deutsche Übersetzung des Originalnamens. Der Originalname ist “Applications”. Somit lautet der vollständige Pfad zur Installationsdatei im Original: /Applications/Install OS X Yosemite.app.

Die Möglichkeit, aus der Installationsdatei ein bootfähiges Installationsmedium zu erstellen, gibt es seit OSX 10.8. Speziell für diesen Zweck befindet sich im Installationspaket eine ausführbare Linuxdatei mit dem Namen “createinstallmedia”. Diese Datei befindet sich innerhalb der Installationsdatei im Ordner /Contents/Resources. Auch diesen Ordner werden wir noch brauchen.

Vorbereitungen

Bevor wir beginnen können, einen USB-Stick als Installationsmedium zu nutzen, müssen wir den USB-Stick vollständig löschen und eine neue Partition im Format Macintosh Journaled formatieren. Hierzu öffnen wir das Festplattendienstprogramm, das wir im Ordner “Dienstprogramme” finden. Dieser Ordner wird mit CMD+Umschalt+U geöffnet (U für Utilities).

Nun stecken wir den USB-Stick in den USB-Port des Rechners und starten das Festplattendienstprogramm. Dies kann möglicherweise einige Sekunden dauern.

Wir wählen im Festplattendienstprogramm nun den USB-Stick aus und öffnen den Karteireiter “Löschen”. Hier wählen wir als neues Format “Mac OS X Extended journaled” aus und geben dem Stick einen einfachen neuen Namen.  Nimm hier einen einfachen kurzen Namen, denn diesen werden wir später noch brauchen. Ich nehme als Partitionsnamen den Namen “stick”. Danach gehst Du auf die Schaltfläche “Löschen” und wartest, bis der Löschvorgang auf dem USB-Stick beendet ist. Beende danach das Festplattendienstprogramm.

Jetzt haben wir alle Angaben, die wir benötigen.

  1. den Originalpfad- und -dateinamen der Yosemite Installationsdatei: /Applications/Install OS X Yosemite.app
  2. Den Pfad zum Linuxprogramm zur Erstellung eines Bootmediums innerhalb der Installationsdatei: /Contents/Resources/createinstallmedia
    und
  3. den Namen der Partition auf dem USB-Stick: stick

Es ist für alle nachfolgenden Anweisungen sehr wichtig, dass auf die exakte Schreibweise der Dateinamen geachtet wird. Dies schließt auch die Groß-/Kleinschreibung ein.

Vorgehen

Nachdem wir nun alle benötigten Angaben haben, können wir dazu übergehen, unseren Installationsstick zu erstellen. Wir kennen nun den genauen und vollständigen Pfad des Linuxprogrammes zur Erstellung eines Installationsmediums innerhalb der Installationsdatei. Der vollständige Pfad lautet: /Applications/Install OS X Yosemite.app/Contents/Resources/createinstallmedia.

Wir kommen hier an eine Besonderheit, an die sich insbesondere Windowsuser gewöhnen müssen. Unser vollständiger Pfad enthält Leerzeichen. Unter Windows würden wir nun den vollständigen Pfad in Anführungszeichen setzen. In OSX funktioniert das aber nicht. Wenn unter OSX ein Dateiname Leerzeichen enthält, müssen wir dem System mitteilen, dass das nachfolgende Zeichen zum Dateinamen dazugehört, in unserem Fall also das Leerzeichen. OSX kennt dafür den Befehl “\” (Backslash bzw. umgekehrter Schrägstrich). Dieser Befehl teilt dem Terminal mit, dass das nächste Zeichen zum Dateinamen gehört. Den Backslash bzw. den umgekehrten Schrägstrich erreichen wir auf unserer Mac-Tastatur mit der Tastenkombination Alt+Y. Die ALT-Taste befindet sich links neben der linken CMD-Taste.

Nun öffnen wir ein Terminalfenster. Das Terminal befindet sich im Ordner “Dienstprogramme”. Nachdem das Terminal geöffnet ist, geben wir folgenden Befehl ein:

sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/stick --applicationpath /Applications/Install\ OS\ X\ Yosemite.app/ --nointeraction

In Linux und somit auch in OSX werden Parameter zu einem Programm immer mit 2 Bindestrichen eingeleitet.

Nachdem wir den obigen sudo-Befehl korrekt eingegeben haben, drücken wir die Eingabetaste. OSX fragt nun nach dem Administratorkennwort. Dieses müssen wir nun eingeben und mit der Eingabetaste bestätigen. Während das Kennwort des Administrators eingegeben wird, erhalten wir keine Rückmeldung von OSX. Es werden weder Sterne, noch die getippten Buchstaben angesagt. Danach erhalten wir eine Meldung, dass der USB-Stick gelöscht wird und danach der Kopiervorgang beginnt. Es kann je nach Rechnergeschwindigkeit bis zu 20 Minuten dauern, bis der USB-Stick fertig ist und wir im Terminal die Meldung “Done” erhalten.

Nachdem die Erstellung des USB-Sticks beendet ist, können wir das Terminal mit CMD-Q schließen. Auf dem Schreibtisch befindet sich ein neues Icon mit der Bezeichnung “Install OS X Yosemite”. Wenn wir dieses Volumen öffnen, finden wir auf dem USB-Stick lediglich eine Datei, dessen Namen wir bereits kennen: OS X Yosemite Installation.app.

Um nun von diesem USB-Stick booten zu können, muss der Rechner mit gedrückter ALT-Taste gestartet werden. Nach ein paar Sekunden erhalten wir eine Auswahl der startfähigen Laufwerke. Leider ist diese Auswahl mit VO nicht zu benutzen. Haben wir den USB-Stick ausgewählt, wird Yosemite ohne weitere Benutzerangaben auf dem Mac installiert.

Die Recoverypartition

Es kommt vor, dass wir in unserem Mac eine neue Festplatte einbauen lassen mussten. In diesem Fall befindet sich auf der neuen Festplatte logischerweise auch keine Rettungspartition (Recoverypartition). Wenn wir Yosemite jedoch vom USB-Stick installieren, wird automatisch eine neue Recoverypartition erstellt, so dass wir in der Lage sind, beim booten des Rechners CMD+R zu drücken und die Wiederherstellungsprogramme zu bekommen. Sofern sich auf der Installationsplatte eine Recoverypartition befindet, wird diese mit der Yosemiteinstallation aktualisiert.

Zukünftige OSX-Versionen

Wenn wir in einem Jahr OSX 10.11 installieren wollen, können wir genauso vorgehen, wie mit OSX 10.10. Einzige Voraussetzung ist, dass sich im Installationspaket wieder die Linuxdatei “createinstallmedia” befindet.

Mac: Konvertierung von Mediendateien

Dies ist ein Gastbeitrag. Dieser Text wurde von Heiko geschrieben und erschien zuerst als Mail in der TuKSuB-Mailingliste.


Wer sich bereits das neue iTunes 12 angesehen hat, der wird ersteinmal verwirrt sein. Es sieht völlig anders aus und einige Funktionen lassen sich nun an anderen Stellen finden. Und wer öfter mal Dateien, die auf seinem Rechner liegen, in ein anderes Format wandeln möchte, um Speicherplatz zu sparen, der wird sich spätestens mit iTunes 12 eine einfachere und bequemere Möglichkeit der Dateikonvertierung wünschen.

Und tatsächlich, es gibt eine einfache und nützliche Möglichkeit zur Dateikonvertierung. Diese Möglichkeit werde ich später noch etwas genauer betrachten, doch vorweg ersteinmal ein paar grundlegende Dinge.

Die Möglichkeit der Dateikonvertierung, die ich vorstellen werde, wandelt Musik- und Videodateien in das Apple-Format um. Dies ist bei Audiodateien das M4A-Format und bei Videodateien das M4V-Format. Damit ist schon mal klar, welche Dateien wir später wiederfinden werden. Aber welche Dateien lassen sich denn nun in das Appleformat umwandeln? Dies sind die wichtigsten Dateiformate aus der Windows-Welt. Hierbei handelt es sich um Dateien mit der Endung AIF und WAV für Audiodateien und AVI, WMV und MOV für Videodateien.

Na? Aufgepasst? Eines dieser Formate stammt nicht aus der Windowswelt. Welches? Richtig, es ist das MOV-Format für Apple Quicktimevideos.

Wandeln wir z. B. eine 4-Minütige WAV-Datei in das Apple-Format M4A um, können wir eine Speichehrplatzersparnis von bis zu 50 % erreichen, manchmal sogar bis zu 75 %. Bei Videodateien erreichen wir Dateien, die nur etwa 3/4 so groß sind, wie das Original.

Und wie konvertieren wir nun eine Audiodatei?

Bevor wir eine Audio- oder Videodatei konvertieren können, müssen wir sicherstellen, dass sich die zu konvertierende Datei auf unserer Festplatte des Macs befindet oder zumindest auf einem am Mac angeschlossenen Datenträger wie einer USB-Festplatte oder einer Speicherkarte. Die Konvertierung von Dateien, die sich auf einem Netzwerklaufwerk befinden, funktioniert nicht. Hier wird der Menüpunkt zum Konvertieren gar nicht erst angeboten.

Also müssen wir zunächst die zu konvertierende Datei auf die Festplatte des Mac kopieren. Ich gehe hier nicht darauf ein, wie das gemacht wird, denn ich denke, es wird Jeder wissen, wie das geht. Ich habe dafür einen neuen Ordner auf dem Schreibtisch erstellt und diezu konvertierende Datei dort hineinkopiert.

Ich habe die Datei applaus.wav vom Windowsrechner nun in meinem Konvertierungsordner liegen. Nun markiere ich diese Datei und drücke VO+Umschalt+M, um das Kontextmenü aufzurufen. Nutzer ohne Voiceover bewegen den Mauszeiger auf die Datei applaus.wav und halten nun die CTRL-Taste gedrückt und führen einen Mausklick mit dem Trackpad oder der Maus aus.

Fast ganz unten in diesem Kontextmenü befindet sich der Eintrag “ausgewählte Audiodateien codieren”. Diesen wählen wir an und drücken die Eingabetaste.

Nach einigen Sekunden öffnet sich ein neues Fenster. Dieses Fenster sollte sich normalerweise direkt im Vordergrund befinden, jedoch kommt es öfter vor, dass sich dieses neue Fenster im Hintergrund befindet. In diesem Fall muss man es mit CMD+TAB in den Vordergrund holen. Das Fenster trägt den Titel “In MPEG Audio codieren von Automatorrunner”.

Der Focus des Cursors befindet sich normalerweise auf der Schaltfläche “Fortfahren”. Jetzt springen wir an den Anfang dieses Fensters. Voiceover sagt nun “Codierer”. Im Folgenden gehe ich jeden Punkt dieses Fensters durch und gebe ein paar Erklärungen dazu ab.

Qualität: Hier ist bereits der Punkt “hohe Qualität” ausgewählt. Es handelt sich hier um ein Aufklappmenü, welches mit VO und Leertaste geöffnet wird. Ausgewählt kann hier:

  • iTunes Plus: Dies ist die Audioqualität, wie sie im iTunes-Stor zu bekommen ist (44,1 khz).
  • Apple Lostless: Die maximale Qualität bei geringem Platzverbrauch (48 khz).
  • Gesprochene Potcasts: gesprochene Audiodateien müssen nicht in höchster Qualität konvertiert werden. Mit dieser Einstellung werden Audiodateien mit 22 khz konvertiert.

Ziel: Hier kann das Ziel der kodierten Datei ausgewählt werden. Dieser Punkt ist normalerweise nicht aktiv und wird durch deaktivieren des nachfolgenden Punktes “Wie Originaldatei” erst aktiv.

Originaldatei nach dem Verarbeiten löschen: Soll die Originaldatei nach der Konvertierung direkt gelöscht werden? Wenn ja, sei Dir darüber im Klaren, dass sie unwiderbringlich verloren ist, denn sie wird nicht in den Papierkorb verschoben. Dieser Punkt ist normalerweise nicht aktiviert. Aktiviere ihn nur, wenn Du Dir sicher bist, dass die Originaldatei wirklich unwiderruflich gelöscht werden soll. Das sollte sie aber nur, wenn noch eine Kopie der Originaldatei vorhanden ist.

Mit der Taste “Abbrechen” brechen wir die Codierung ab und schließen das Fenster, ohne eine Aktion auszuführen.

Mit der Taste “Fortfahren” wird das Fenster geschlossen und die Codierung der Datei läuft im Hintergrund ab. Dies kann je nach Größe der Originaldatei und Art der Kodierung einige Sekunden oder Minuten dauern. Bei einer 10-minütigen WAV-Datei dauert die Kodierung auf meinem MacBook aus Mitte 2012 etwa 12 Minuten, wenn ich die oben besprochenen Einstellungen auf ihren Standardwerten belasse.

Und nun kommen wir zu einem nicht ganz schönen Punkt. Wir erhalten nämlich keine Benachrichtigung, dass die Kodierung abgeschlossen ist. Das Ergebnis kann sich allerdings, was den Platzverbrauch betrifft, durchaus sehen lassen. In meinem Beispiel der Datei applaus.wav hat sich eine Platzersparnis von über 50 % ergeben, ohne dabei einen hörbaren Qualitätsverlust zu bemerken.

  • Größe der Originaldatei applaus.wav: 28 kb
  • Größe der kodierten Datei applaus.m4a: 12 kb

Auf diese Art und Weise lassen sich auch die eingangs erwähnten Videodateien kodieren. Hier sind allerdings weitere Einstellungen zu finden, die aber im Normalfall selbsterklärend sein dürften. Die Vorgehensweise ist die Gleiche, wie bei Audiodateien. Logischerweise dauert die Kodierung von Videodateien etwas länger. Ein 45-minütiger Film hat auf meinem MacBook etwa 75 Minuten benötigt. Die Dateigröße ist dabei ebenfalls um mehr als 50 % geschrumpft. Eine Kleinigkeit möchte ich in Bezug auf Videodateien allerdings nicht außer Acht lassen. Mit dieser Methode der Kodierung ist es nämlich möglich, aus einem Video lediglich die Audiospur zu kodieren und zu speichern. Dies könnte insbesondere für Blinde User nicht uninteressant sein.

Fazit: Wer schnell mal eine oder mehrere Dateien in das Apple-Audioformat M4A oder in das Apple-Videoformat M4V kodieren will oder muss, hat hier eine einfache und bequeme Möglichkeit an die Hand bekommen. Diese Möglichkeit der Dateikodierung besteht seit OSX 10.8 und wurde meiner Meinung nach seit dem optimiert. Ich habe nämlich den subjektiven Eindruck, dass die Kodierung von Dateien mit OSX 10.10 etwas schneller als unter 10.8 abläuft.

Vorteile:

  • Schnelle Erreichbarkeit
  • keine Zusatzprogramme erforderlich
  • einfache Bedienung
  • schnelle Codierung
  • zu 100 % VoiceOver-tauglich

Nachteile:

  • Seitens Apple nicht dokumentiert
  • Codierung nur ins appleeigene Format M4A oder M4V möglich
  • Codierung nur mit AIF, WAV, AVI, MOV und WMV möglich
  • Keine Kodierung von und nach MP3 möglich, auch nicht mit entsprechend installierten Codecs.

So, ich hoffe, ich habe Euch eine nützliche Funktion von OSX etwas näher gebracht. Eigentlich wollte ich hieraus einen Podcast machen, doch für diese wenigen Informationen hätte sich das nicht gelohnt.

Für Anregungen und Anmerkungen bin ich Euch dankbar. So, und nun viel Spaß beim Kodieren wünscht Euch

Euer Heiko

Projekt Homeserver im Eigenbau 11: Geplante Aufgaben mit cron

Was auch sehr wichtig ist, sind wiederkehrende Aufgaben. Das ist das, was man unter Windows wohl die Tasks, oder die geplanten aufgaben nennt. Am Server sind sie daher sehr nützlich, da sie immer wiederholte Aufgaben ausführen können, ohne dass ein Administrator etwas dazu tun muss.

Hierfür ist “cron” zuständig, der die Aufgaben jeweils abarbeitet. Um einen “cron job” zu erstellen, braucht man eigentlich nur eine Datei editieren, die sogenannte crontab. Jeder Benutzer kann seine eigene Crontab haben, aber weil dies ein Server ist, nutzen wir die systemweite Crontab.

sudo nano /etc/crontab

Damit wäre die Datei offen. Übrigens muss die Crontab mit einem # (Nummernzeichen) enden, oder mit einer Leerzeile. In diesem Falle endet sie mit einem Nummernzeichen.

Geht mit den Pfeiltasten bitte zeilenweise runter, bis ihr zu den Zeilen kommt, die mit “SHELL=” und “PATH=” anfangen. Darunter schreibt ihr die Zeile:

MAILTO=root

Wenn es bei der Ausführung der Jobs nun zu Fehlern kommt, erhaltet ihr eine Mail mit dem Inhalt der Fehlermeldung. Ich habe das mal mit einem fehlerhaften Script probiert. Es kommt dann tatsächlich eine Mail mit dem Betreff “cron /home/kamil/fehlerscript.sh”. Im Text steht dann die eigentliche Fehlermeldung. Das war zu erwarten, weil ich im Script absichtlich einen falschen Befehl eingegeben hatte. :-)

Weiter unten beginnt die Liste mit den einzelnen Jobs. Hier sind auch schon einige Aufgaben eingetragen. Man kann hier recht einfach sehen, welche Struktur jede Zeile haben muss:

  • m: Minuten
  • h: Stunden

Wenn also m und h die Werte 30 10 haben, so wird die Aufgabe um 10:30 Uhr ausgeführt.

  • dom: Tag des Monats, also am wievielten des Monats der Task ausgeführt werden soll.
  • mon: An welchem Monat soll der Task ausgeführt werden
  • dow: Tag der Woche, 1, Montag, bis 7, Sonntag.
  • user: Unter welchem Benutzer soll der Befehl ausgeführt werden?
  • command: Der Befehl, der ausgeführt werden soll.

Die einzelnen Elemente können durch Leerzeichen oder Tabstops voneinander getrennt werden.

Zwei Beispiele

Der NTP-Dienst synchronisiert die Uhrzeit des Systems mit einem Internet-Server, wenn der Server neu gestartet wird. Was ist aber, wenn der Server mehrere Wochen lang läuft? Dann kann man eben einen Cron Job einrichten, der das Problem löst. Ein solcher könnte so aussehen:

30 7    * * 1   root    ntpd -q -g

Dieser Job synchronisiert die Systemzeit jede Woche am Montag um 7:30 Uhr. Der Befehl ntpd -q -g erledigt das. Und der Befehl wird als root, also als Admin, ausgeführt.

Und jetzt kommen wir mal zu einer Besonderheit: Linux setzt die Systemzeit nämlich nur im laufenden Betrieb. Die Hardware-Uhr, die sich auf dem Mainboard befindet und per Batterie weiter betrieben wird, wenn der Rechner aus ist, wird nicht angerührt. Ist diese also falsch, und schaltet man den Rechner ein, startet man den Rechner mit einer falschen Uhrzeit. Das kann, wenn die Differenz zur tatsächlichen Zeit größer als 1000 Sekunden ist, zu Problemen führen. Dann kann es nämlich passieren, dass NTP die Zeit nicht synchronisiert. Jedenfalls habe ich die Informationen, die ich darüber gelesen habe, so verstanden. Daher müssen wir von Zeit zu Zeit auch die Hardware-Uhr nachstellen. Auch dies kann ein Cron Job tun:

31 7    * * 1   root    hwclock --systohc

Wie ihr seht, wird eine Minute nach der Zeitsynchronisation die Hardware-Uhr nachgestellt. Nun brauche ich mich nicht mehr darum kümmern, weil das alles jetzt jeden Montag um 7:30 Uhr passiert.

Übrigens habe ich mir mal die Crontab meines QNAP NAS angesehen. Auch hier befindet sich ein Cron Job, der die Systemzeit jeden Tag sogar in die Hardware-Uhr schreibt. Und noch etwas ist mir dabei aufgefallen. Während ich die S.M.A.R.T. Tests in der Konfigurationsdatei smartd.conf geplant habe, ist hier für jede Platte in der Crontab ein Job hinterlegt. Kann man auch machen, aber ich überlasse das lieber dem smartd-Dienst.

Ausführen von Scripts

Auch das kann man zeitgesteuert machen. Hier mal ein kleines Beispiel. Ich lege ein Script mit der Datei “dateikopieren.sh” an und schreibe folgendes da rein:

#!/bin/bash
cp /etc/crontab /home/kamil/Server
cp /etc/samba/smb.conf /home/kamil/Server

Dieses Script liegt nun in meinem Home-Verzeichnis. Nun muss es also von Cron nur noch ausgeführt werden. Ich möchte, dass jeden Freitag um 18:00 Uhr diese Dateien gesichert werden. Also lautet die Zeile in crontab wie folgt:

00 18   * * 5   root    /home/kamil/dateikopieren.sh

Fazit

Insbesondere das letzte ist wirklich nur ein Beispiel. Das Script zur Sicherung meiner Konfigurationsdateien führe ich in größeren Abständen selbst aus. Das sollte nur illustrieren, dass, und wie es geht. So kann man auch komplexere Aufgaben zeitlich steuern.

Die beiden Zeilen für die Zeitsynchronisation habe ich tatsächlich so in meiner crontab stehen. Manche machen das öfter, aber ich denke, ein Mal die Woche reicht völlig.

Übrigens ist zu bedenken, dass der Server zum Zeitpunkt der Ausführung laufen muss. Denn cron kann keine Jobs nachholen. Er wird also erst zum nächsten Ausführungstermin wieder ausgeführt.

Falls mir in der Zwischenzeit keine wichtigen Themen mehr einfallen, kommt als nächstes das Einrichten des RAIDs. Und da mir hierzu noch Festplatten fehlen, kann das noch ein Weilchen dauern. Habt etwas Geduld, es geht hier noch weiter. :-)

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. :-)