Mounten einer USB-Festplatte beim Start von eisfair
Nachdem ich mich einige Stunden durch Bücher und Newsgroups gewälzt habe, um meine externe Festplatte am eisfair direkt nach dem booten verfügbar zu haben, hier ein kleines Howto.
Ausgangslage: Eine externe Festplatte soll über USB angeschlossen und bei jedem Startvorgang sofort am Eisfair verfügbar sein. Bei mir funktionierte es letztlich folgendermaßen:
Das Beispiel geht von einer einzelnen Partition auf der Festplatte aus! Wenn zusätzliche Partitionen angelegt werden müssen die Device-Namen entsprechend geändert werden.
Schritt 1: USB-Festplatte (Maxtor: 400GB) an USB-Port anschließen. Darauf achten, daß das Filesystem nicht ntfs ist, ansonsten neues FS erzeugen (mit fdisk oder mit Hilfe einer Live-CD und qtparted). Partition entsprechend FS formatieren.
Schritt 2: Einen neuen Eintrag in der Datei /etc/fstab vornehmen nach folgendem Schema: device mountpoint filesystem optionen (wichtig :noauto!), z. B.:
/dev/sda1 /usb/festplatte ext2 default,user,noauto 0 0
Schritt 3: Zusätzlich benötigte Module einbinden: Die Datei /etc/init.d/local in einem Editor (z. B. joe) öffnen und dort nach 'start)' folgende Komandos eintragen:
//echo "USB-Module einbinden ..."\\ modprobe usb-storage >/dev/null 2>&1\\ insmod sd_mod >/dev/null 2>&1\\ insmod usb-uhci >/dev/null 2>&1\\ insmod usb-ohci >/dev/null 2>&1\\ sleep 2 \\ echo "/dev/sda1 mounten ..." \\ mount /dev/sda1///
Die Zeilen mit echo dienen lediglich dem Finden in den Bootmeldungen und können weggelassen werden.
Die sleep – Anweisung war bei mir nötig, weil sonst der mount-Befehl noch immer die Fehlermeldung (… is not a Block-Device) erzeugt hat, nach dem einloggen an der Konsole jedoch sofort funktioniert hat. Durch die Sleep-Anweisung wartet das Script mit der Ausführung der folgenden Anweisungen – dann klappt´s auch mit dem mounten. Jetzt steht die Platte direkt nach dem Bootvorgang in /usb/festplatte zur Verfügung.
Schritt 4 (optional): Je nachdem, welche Verzeichnisse auf der externen Festplatte liegen sollen, kann es aber nötig sein, noch weitere Manipulationen vorzunehmen. Ich habe beispielsweise mein Verzeichnis für die Seiten des Webservers dort liegen (htdocs). Da die Datei /etc/init.d/local jedoch beim Startvorgang erst abgearbeitet wird, nachdem der Apache gestartet wurde, kann dieser sein Verzeichnis nicht finden, bringt eine entsprechende Fehlermeldung und verweigert den Dienst. Abhilfe schafft dann folgendes vorgehen:
Wechseln in das Verzeichnis /etc/rc2.d:
# cd /etc/rc2.d
Dort stehen die links zu den Scripten, die beim starten abgearbeitet werden.
Mit
# ls
verschaffe ich mir einen Überblick über die Links.
Alle Links die mit einem S beginnen werden beim Starten in alphabetischer Reihenfolge abgearbeitet. Durch umbenennen des Links kann ich also die Ausführung zeitlich verschieben. Apache hatte bei mir den Eintrag: S60apache Local hatte den Eintrag: S99local Durch folgenden Befehl wird die Ausführung von /etc/init.d/local nun vor die Ausführung des Apache-Start-Scrips gelegt:
# mv S99local S59local
Jetzt findet der Apache das Verzeichnis und startet ganz ohne zu murren.
Boris Löffert 22.06.2007