Archiv ‘Linux’

Freitag, 16. März 2007

Gigabit Ethernet mit Debian

Dass ich heute Freitag morgen etwas müde aus der Wäsche geguckt habe, hängt einerseits mit den 1. Schweizerischen Geschichtstagen zusammen, die derzeit in Bern stattfinden. Andererseits aber auch, weil gestern digitec endlich das heissersehnte Päckchen geliefert hat.

Komponenten

Dessen Inhalt:

Fallstrick ethX

Im Server werkelte bisher eine dieser „tubelisicheren“ 3Com-Karten, für die Linux wohl seit Ewigkeiten Treiber-Support mitbringt. Deren Dienstpflicht war nun zu Ende und sie wurde zwecks Antritt des Ruhestands ausgebaut. In denselben Slot steckte ich nun die Gigabit-NIC.

Der erste Boot-Vorgang mit der neuen Ethernet-Karte verlief zu Beginn völlig reibungslos – mit dem mit Ctrl-S zu erreichenden Konfigurations-Menu schaltete ich die PXE-Funktion aus und sparte so ca. 10-20 Sekunden, die für die Suche nach einem DHCP-Server draufgingen.

Als jedoch Linux die Kontrolle übernahm, klappte dagegen nicht alles sauber. Zwar wurde das für den Betrieb der Netzwerkkarte nötige Modul e1000 anstandslos geladen – im Laufe des Boot-Prozesses stachen mir aber einige FATAL-Meldungen ins Gesicht, die sich auf eth0 respektive e1000 bezogen („could not set device flags“ oder ähnlich). Was zum Teufel?

Jedenfalls hatte ich keine aktive Netzwerkverbindung zur Verfügung, und ifconfig zeigte kein schönes Bild:

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:323240 errors:0 dropped:0 overruns:0 frame:0
          TX packets:323240 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:226873684 (216.3 MiB)  TX bytes:226873684 (216.3 MiB)

(Ersatz-Ausgabe nach 24h Betrieb). Wo blieb eth0?

Nach einer ca. 30 Minuten dauernden Schrecksekunde, die auch unzählige Google-Suchen beinhaltete, fand ich die Lösung dann eher unerwartet, als ich folgenden Befehl eingab:

ifconfig -a

Dort wurde eth1 erwähnt, eth0 fehlte hingegen. Wieso das so ist, kann ich mir immer noch nicht erklären. Entweder hat Linux die Identifikation der Vorgänger-Karte gespeichert und vergibt neuen Karten eine fortlaufende Nummer, oder irgendwas ist mit dieser NIC anders. Ich weiss es nicht.

Jedenfalls genügte es nun, eth0 in /etc/network/interfaces mit eth1 zu ersetzen. Nach dem nächsten Reboot funktionierte die Karte endlich.

Fallstrick Patchkabel

ALPHA kernel: e1000: eth1: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex

Was’n löus? Wieso nur 100 Mbps, wenn ich doch soeben viel Geld für ein Gigabit-Netzwerk ausgegeben hatte?

Meine erste Vermutung erwies sich dieses eine Mal als goldrichtig: Das ca. 2001 mit dem Kauf eines Wireless-Access-Points (Elsa/Lancom L-11) mitgelieferte Patch-Kabel erfüllte die Qualitätsanforderungen an ein Gigabit-Netzwerkkabel nicht (mind. Cat 5e – hier wohl Cat 5). Nachdem ich dieses Kabel entfernt und mit einem neueren Modell ersetzt hatte, hiess es nun endlich:

ALPHA kernel: e1000: eth1: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex

Durchsatz?

Folgender Test führte ich aus „Gwunder“ durch, um den Durchsatz zu messen:

BETA:/Volumes/INCOMING/KNOPPIX mario$ time cp KNOPPIX_V5.1.1CD-2007-01-04-EN.iso /Volumes/Multimedia/Software/

real    0m39.920s
user    0m0.040s
sys     0m6.730s

40 Sekunden für ein knapp 700MB grosses File? Das ergibt 17.5MB pro Sekunde oder 140Mbit/s. Freude herrscht!

Doch wieso? Die errechnete Zahl ist ja meilenweit von 1000Mbit/s weg … Ja, schon, aber:

  1. Das CIFS/SMB-Protokoll ist nicht gerade bekannt dafür zu sein, besonders performant zu laufen (die Datei wurde von einem unter Mac OS X gemounteten Samba-Share auf die lokale Festplatte kopiert)
  2. Auch wenn es sich um eine Intel-Netzwerkkarte handelt – im Vergleich zu einer PWLA8490MT muss wohl irgendwo gespart worden sein. Ich betrachte die im Einsatz befindliche Karte als Consumer-Variante.
  3. Dasselbe gilt wohl für den Netzwerk-Chipsatz im PowerMac G5
  4. Auch der Zyxel-Switch GS-105A ist ein Consumer-Gerät, von dem nicht Spitzenleistungen erwartet werden dürfen
  5. Die Festplatten im Quellsystem (ATA100, RAID10) sowie die SATA im Zielsystem sind wohl die Bottlenecks
  6. Jumbo-Frames sind keine im Einsatz – Mac OS X erlaubt diese Option nur bei den Xserves

Wie dem auch sei – der Geschwindigkeitsgewinn ist bereits jetzt äusserst spürbar und ich habe absolut keinen Grund für Wehklagen.

Tags:
Labels: Linux

1 Kommentar | neuen Kommentar verfassen

Mittwoch, 14. März 2007

Fritz!Box-Traffic mit cacti aufzeichnen

Da habe ich mich heute kurzerhand dazu entschlossen, meinen IPCop-Router (Pentium 90 auf einem Asus P5A-B – bald ein Museumsstück!) durch die hier herumgammelnde Fritz!Box Fon 5012 zu ersetzen, doch – schreck lass nach – das Ding bringt natürlich keinen SNMP-Support mit sich. Was nun?

UPnP?

Nun gut, was sich hinter UPnP genau verbirgt, lese ich ein andermal nach. Jedenfalls scheint dieses Protokoll/Feature von Natur aus sehr geschwätzig zu sein, was den Traffic anbelangt. Ein findiger Linux-Hacker hat denn auch schon ein kleines, aber hochstehendes Shell-Scriptlein programmiert, das MRTG (der Vorfahre von rrdtool, auf das cacti exzessiv zurückgreift) „füttert“:

Monitoring Fritz!Box With MRTG

Bastelstunde

Was wäre eine schicke Linux-Anwendung, wenn man nicht auch hier etwas Hand anlegen und Feintuning betreiben müsste (vom Grundkonzept her zu vergleichen mit Alpinisierern und Brabierern)? Damit das Scriptlein auch mit cacti zusammenspielt, habe ich den Shell-Output folgendermassen umgebogen:

...
# output for mrtg
printf "IN:${b1:-UNKNOWN} OUT:${b2:-UNKNOWN}\n"
#printf "%s\n%s\n%d days %.2d:%.2d:%.2d h (online)\nFritz!Box\n" \
#  "IN:${b1:-UNKNOWN}" "OUT:${b2:-UNKNOWN}" "${h% *}" "${h#* }" "${m#* }" "${s#* }"
...

Nachtrag

Der 32bit-Counter generiert im Laufe der Zeit einen Overflow und kehrt sich ins Negative. Das bringt cacti/rrdtool leider gehörig draus, obwohl dieses Verhalten gerade bei Traffic-Messungen zur Tagesordnung gehört.

Folgender Einschub korrigiert den Effekt:

if [ "$b1" -lt "0" ]; then
        c1=$[ (-4294967296 - $b1) * -1 ]
else
        c1=$b1
fi

if [ "$b2" -lt "0" ]; then
        c2=$[ (-4294967296 - $b2) * -1 ]
else
        c2=$b2
fi

Die auszugebenden Variablen müssen danach noch im Abschnitt #output for mrtg angepasst werden:

printf "IN:${c1:-UNKNOWN} OUT:${c2:-UNKNOWN}\n"

Integration in cacti

Damit kann man nun eine neue Datenquelle anlegen und daraus einen Graphen generieren lassen. Ich empfehle, bei der Erstellung des Graphen ‚Interface (bytes/sec)‘ zu wählen.

Man versieht sich darauf hin kaum, und die Graphen sprudeln wieder. Schick, nicht wahr?

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 11. März 2007

TerminGenius!

Um Sitzungen auf der Arbeit besser planen zu können, habe ich mich vor einigen Jahren spontan dazu entschlossen, ein PHP-Script zu schreiben, das mir die Online-Termin-Umfrage ermöglicht (genannt „Terminfinder“). Mit der Zeit kamen einige Inputs von den Benutzern hinzu und mit Version 2.0beta wurde das Produkt in „TerminGenius!“ umbenannt.

Auf Wunsch von Stefan Oberwahrenbrock habe ich meine OSS-Applikation TerminGenius! um eine wichtige Funktion erweitert: Zur Erleichterung des Entscheides wird nun zusammengezählt, wie viele Leute an einem bestimmten Tag können.

eMeidi.com – Quelloffene Software

Weiterhin viel Spass bei der Suche nach einem Termin, der allen passt *smile*

PS: Wer sich nicht mit der Installation von PHP-Scripts auf einem Web-Server herumschlagen will, benutze Doodle.

Tags: ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 11. März 2007

Flirtbriefli


Flirtbriefli
Originally uploaded by emeidi.

Eindeutiges Zeichen, dass man sich bereits zu lange mit Unix-Betriebssystemen herumschlägt: Die Zahl 640 kommt einem sehr vertraut vor:

-rw-r-----

Noch Fragen? *smile*

(Das Kleberli habe ich anlässlich der im Orvis zu Ende gefeierten Geburiparty von Randal aufgedrückt erhalten – im Gegensatz zu Melä, die ebenfalls einen ähnlichen Kleber auf sich trug, habe ich kein Briefli erhalten).

Tags:
Labels: Funny, Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 7. März 2007

Mit arpwatch auf mehreren VLANs lauschen

Dieser Artikel entspricht einem E-Mail, das ich im August 2006 den Informatikdiensten meines Arbeitgebers übermittelt habe.

Guten Tag

Vor einiger Zeit habe ich eine Anfrage an Sie gestellt, wie es mit den neuen Switches und VLAN möglich ist, mit einem physischen Gerät auf mehreren Subnetzen zu lauschen. Ich benötige diese Funktionalität für meinen arpwatch-Server, der mich über Aktivitäten unserer Netzwerk-Geräte informiert (IP-Wechsel, MAC-Adressen-Wechsel, neue Geräte etc.)

Mit dem Wechsel des Gebäudes in das VLAN 38 funktioniert der Server nun wie gewünscht. Im Anschluss eine kurze Anleitung für Debian Linux:

Voraussetzungen

  • Debian Linux mit Kernel 2.6.15-1-686 (es traten Probleme mit Kernel 2.6.8 auf – die Konsole wird mit Fehlermeldungen vollgespammt)
  • Modul 8021q resp. 802.1q-Funktionalität in Kernel einkompiliert
  • Package vlan (apt-get install vlan); u.a. mit dem Tool vconfig zur manuellen Erstellung von Interfaces
  • Netzwerk-Anschluss, auf den mehrere VLAN-IDs gemappt sind ([…]).

/etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.0.2
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto eth0.38
iface eth0.38 inet static
        address 130.92.38.76
        netmask 255.255.255.0
        network 130.92.0.0
        broadcast 130.92.38.255
        gateway 130.92.38.1
        dns-nameservers 130.92.9.51 130.92.9.52
        pre-up /sbin/vconfig add eth0 38

auto eth0.40
iface eth0.40 inet static
        address 130.92.40.6
        netmask 255.255.255.0
        network 130.92.0.0
        broadcast 130.92.40.255
        pre-up /sbin/vconfig add eth0 40

auto eth0.152
iface eth0.152 inet static
        address 130.92.152.6
        netmask 255.255.255.0
        network 130.92.0.0
        broadcast 130.92.152.255
        pre-up /sbin/vconfig add eth0 152

Das Laden dieser Einstellungen wird zwar von Fehlermeldungen begleitet, aber es scheint trotzdem zu klappen (?).

/etc/arpwatch.conf

# /etc/arpwatch.conf: Debian-specific way to watch multiple interfaces.
# Format of this configuration file is:
#
# 
# 
#...
# 
#
# You can set global options for all interfaces by editing
# /etc/default/arpwatch

#eth0   -m root+eth0
#eth1   -m root+eth1

eth0            -N -n 130.92.0.0/16 -m mario.aeby@domain.tld
eth0.38         -N -n 130.92.0.0/16 -m mario.aeby@domain.tld
eth0.40         -N -n 130.92.0.0/16 -m mario.aeby@domain.tld
eth0.152        -N -n 130.92.0.0/16 -m mario.aeby@domain.tld

[…]

Mit freundlichem Gruss
Mario Aeby

Mario Aeby
IT-Verantwortlicher & Web-Developer

Departement Klinische Forschung
Murtenstrasse 35
CH-3010 Bern

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Februar 2007

Erste Schritte mit Openfiler


No Program Associated
Originally uploaded by emeidi.

Auf der Arbeit sind wir netzwerktechnisch ein Entwicklungsland: File-Server? Nada. Domäne mit Active Directory? Neumodisches Zeugs. Erst in letzter Zeit erreichen die Datenmengen aber ein kritisches Mass und der Zugriff auf selbe Daten über das Netzwerk wird immer mehr nachgefragt.

Bisher waren die wenigsten willig, einen Server anzuschaffen, weshalb man sich darauf beschränkte, Dateien zwischen Clients auszutauschen – mit allen Fallstricken und Unzulänglichkeiten (heterogene Umgebung: Mac OS X, Windows 2000, Windows XP Home, das nur die störende „einfachen Dateifreigabe“ mitbringt, Windows XP Professional). Nach einer gewissen Zeit mit dieser suboptimalen Lösung sind Entscheidungsträger bald bereit, etwas „brauchbareres“ auf die Beine zu stellen: Den eigenen File-Server.

Für mich ist klar, dass so etwas (jedenfalls auf die Software bezogen) möglichst wenig kosten sollte. Und so kommt man hier um Linux nicht herum, wenn man sich nicht mit Microsoftschen CALs oder einem Hardware-Zwangskauf bei Apple herumschlagen möchte.

Obwohl ich Debian bevorzuge, würde diese Distribution – wie viele andere auch – einiges an Handarbeit von mir verlangen. Ausserdem wäre ein GUI in diesem Falle von Vorteil, damit ich gewisse administrative Aufgaben (das Erfassen von Benutzern, das Ändern von Passwörtern) an die Gruppenverantwortlichen abgeben könnte. Ich hoffe nur, das sich mich so nicht in den Schlamassel reite …

Jedenfalls informierte ich mich überblicksartig über die momentane Marktsituation an Open-Source NAS-Software und wurde doppelt fündig:

  • FreeNAS – basierend auf FreeBSD
  • Openfiler – basierend auf CentOS/rPath Linux
  • Nachtrag: NASLite – rudimentär; die benötigten Features (User-Management, Quota etc.) fehlen in der kostenlosen Version

Entschieden habe ich mich der Lektüre einiger Blog-Beiträge für Openfiler, da es dort als „reifer“ als FreeNAS charakterisiert wurde. Ausserdem wäre es von Vorteil, wenn der TSM-Client installiert werden könnte. Von diesem habe ich nur Linux-RPMs.

Tücken bei der Installation

Zuerst einmal erstaunte mich, dass das Booten ab der Installationsdisk keinerlei Probleme bereitete (Kernel 2.6.x erkannte den Intel SATA-Controller ohne Mühe).

Leider schweigt sich der Installer aber bei der Partitionierung über das richtige vorgehen aus. Wer – wie ich bei diesem Kleinprojekt – nur eine fette Festplatte im Rechner sitzen hat, kommt um eine manuelle Partitionierung nicht herum. Führt man die automatische Einteilung der Festplattenbereiche aus, gibt es später keinen Platz zum Erstellen der Volumengruppe(n) (/ belegt dann neben der /boot und SWAP-Partition einfach den übrigbleibenden Platz). Deshalb hier mein Rat:

  • /boot – 100MB
  • / (Root) – 4096MB
  • SWAP – 1024MB

conary updateall

Wer denkt, dass die Installations-Disk bereits alle nötigen Programme und Einstellungen enthält, täuscht sich. Will man mit Openfiler so richtig loslegen, muss das System nun zuerst noch über das Internet „aktualisiert“ werden. Hierzu ruft man den Befehl

conary updateall

auf.

Proxy?

Wer wie ich hinter einem Proxy sitzt, beisst sich die Zähne aus, wenn er das Einmaleins der Proxy-Konfiguration unter Linux nicht oder nur ungenügend kennt. Wichtig ist vor dem Ausführen obigen Befehls, eine Umgebungsvariable zu setzen:

export http_proxy="http://proxy.domain.tld:80/"

Wobei ich zuerst vergass, den export auszuführen. Das setzen der Variable alleine bringt noch nichts, sie muss auch noch exportiert werden (was auch immer das bedeutet/bewerkstelligt).

Lokaler LDAP

conary updateall bewirkt, dass unter Services nun plötzlich noch einige neue Einträge dazukommen, unter anderem auch LDAP. Dies benötigt man, um eine selbständige (= lokale) Benutzerverwaltung aufzusetzen.

Folgende Einstellungen müssen unter Services > LDAP Settings gemacht sein, bevor man den Service unter Services mit Enable aktivieren kann:

Base DN:       dc=openfiler,dc=nas 
Root bind DN:  cn=Manager,dc=openfiler,dc=nas 
Root Password: ***

Wer will, dass die Benutzer über dieselbe, aber etwas abgespeckte Web-Oberfläche ihr Passwort ändern können, aktiviert zudem Allow users to set password.

Danach wechselt man auf Account > Authentication und gibt folgende Angaben ein:

[X] Use LDAP

                    [ ] Use TLS
Server:             127.0.01 
Base DN:            dc=openfiler,dc=nas 
Root bind DN:       cn=Manager,dc=openfiler,dc=nas 
Root bind password: ***
                    [X] Login SMB server to root DN

[ ] Use Windows Domain controller and authentication

...
Domain / Workgroup: WORKGROUP
...

(Das Häkchen bei Login SMB server to root DN ist nach einem Reload nicht mehr gesetzt, LDAP scheint aber trotzdem zu funktionieren).

Wie hiess mein Share noch gleich?

Beim Erstellen von Shares sollte man darauf achten, bei Override SMB share name den gewünschten Namen einzutragen (bei mir steht in diesem Formular drei Mal dasselbe). Ansonsten werden die Namen der Shares aus dem Volumennamen zusammengesetzt (bspw. \\192.168.0.1\main.staff.Test).

GUI und Usability

Die Oberfläche kommt auf den ersten Blick aufgeräumt daher. Die Einteilung der Rubriken erscheint (grösstenteils) logisch, die Bedienung ist simpel. Manchmal ist die Aufteilung dennoch verwirrend:

Die Einstellung für die Samba-WORKGROUP suche ich vergebens unter Services > SMB Settings. Dort kann man vieles einstellen, das aber nicht. Ich versuche dann, per SSH auf File-Ebene die Vorlagen-Datei zu suchen und die Workgroup dort manuell einzutragen. Das schlägt leider fehl, anscheinend wird die gefundene Datei nicht zur Generierung der smb.conf herangezogen.

Erst am zweiten Tag entdecke ich in einem Forumsbeitrag den wesentlichen Tipp: Diese Einstellung ist unter Authentication zu machen, so unlogisch es klingt. Zwar habe ich dort LDAP aktiviert, die Einstellungen unter Active Directory werden aber dennoch berücksichtigt; jedenfalls, wenn man dort eine Workgroup setzt.

Auch ist die starke vertikale Aufteilung störend. Eine horizontale Leiste mit Buttons würde die Bedienung (teilweise!) optimieren. Komisch finde ich zuweilen, dass mal Buttons, mal normale HTML-Links als Befehle daherkommen. Eine gewisse Konsistenz wäre hier von Vorteil.

Ein kurzer Blick auf den (PHP-)Code

Naja … Umwerfend finde ich ihn nicht gerade, den PHP-Code (ich habe mir zwei Files angeschaut). Ob das durchgehend so ist, entzieht sich aber meiner Kenntnisse. Aber es scheint jedenfalls zu funktionieren.

Kleine Community

Verglichen mit Debian oder PHP verfügt Openfiler über keine grosse, aktive Nutzergemeinde, die sich gegenseitig unterstützt. Es gibt ein (schlecht besuchtes) Forum sowie eine Mailingliste, auf der sich das Geschehen moderat in Grenzen hält.

Bugs

  • Home-Directories für die Benutzer werden nicht erstellt, obwohl diese Option unter Services > SMB Settings aktiviert wurde. Leider konnte mir bei diesem Problem noch niemand helfen. Nachtrag: Der Fehler wurde mittlerweile gefunden. Wer es wagt, legt Hand an das entsprechende PHP-Script an und hardcodet die Variable in die entsprechende Zeile.
  • Zugriffsprobleme mit Windows 2000 (vgl. Screenshot). Mit Windows XP und Mac OS X klappte alles vorzüglich. Was war das Problem? Windows 2000 scheint mit einem fehlenden Workgroup-Namen mächtig ins Straucheln zu geraten. Sobald die Workgroup eingetragen war, liessen sich die Shares (\\192.168.0.1\Share) resp. der Überblick über die Shares (\\192.168.0.1) ohne Komplikationen anzeigen. Mysteriös!

Tags:
Labels: Linux

1 Kommentar | neuen Kommentar verfassen

Dienstag, 6. Februar 2007

Inflight Entertainment Systems run Linux


DSCF0655.jpg
Originally uploaded by emeidi.

Gesehen habe ich das auf der dänischen Ännes (mein Kosename am Ende der Reise: „die laute Änne“) Screen. Es blieb genug Zeit, ein „Screenshot“ zu machen – danach löste eine nette Flight Attendant einen Reboot dieses Terminals aus.

Heute nun kam ich auf diesen Schnappschuss vom November 2006 zurück, als ich via reddit.com (das bessere Digg?) auf ein ähnliches Bild stiess:

linux linux everywhere

Als ich soeben Ännes Fehlermeldung transkribierte …

svc: bad direction 2020176320, dropping request
Launching /engine.cram/airsurf
c00ed
svgalib: Signal 11: Segmentation fault received
Segmentation fault

Please press Enter to activate this console.

… liess es mich nicht locker und ich bemühte Google, um etwas über /engine.cram/airsurf zu erfahren. Und siehe da, ein andere Geek hat tatsächlich bereits in seinem Blog darüber berichtet:

During the 12 hour flight I was hoping to watch “March of the Penguins” but had to put up with watching “Reboot of the Penguins” instead – the flight attendants mentioned that this is not an isolated incident.

Quelle: Flying with the BSOP (Black Screen of Penguin)

Und hier noch der direkte Link auf das Photo:

Cathay Pacific CX888 Linux Inflight Entertainment System CRASH

Übrigens: Das IES von Swiss im Airbus A340 (LX041) gefiel mir sowohl optisch als auch in der Benutzerführung deutlich besser als dasjenige von ANA in der Boeing 747 (NH-210) …

Nachtrag: Die Software in den Inflight-Systemen ist nicht über alle Zweifel erhaben …

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 13. November 2006

bibtool unter Mac OS X kompilieren

Was habe ich mir eben die Zähne ausgebissen: Wenige Stunden vor meiner bevorstehenden Reise nach Japan wollte ich mein MacBook derart herrichten, dass es meine in LaTeX geschriebene „Diskussionsgrundlage“ für das diessemestrige Seminar korrekt ausgibt (so bin ich etwas flexibler und könnte das Dokument – WLAN im Land der aufgehenden Sonne vorausgesetzt – später versenden als geplant).

Das Problem

Leider hatte ich auf meinem PowerMac nur eine PPC-Version von bibtool herumliegen (ich konnte mich noch knapp daran erinnern, dies eigenhändig aus den Sourcen kompiliert zu haben). Unter Mac OS X 10.4 Tiger brach aber bereits das configure-Script ab:

checking for tcl configuration file... configure: warning: not found. Ensure that a properly installed tclsh is on your path.
configure: error: ./configure failed for BibTcl

Die Lösung

Bei einem kurzen Vergleich mit dem anscheinend funktionierenden Binary auf meinem PowerMac entdeckte ich den kleinen Unterschied in den Versionen: Die configure-Meldung erschien beim konfigurieren von Version 2.46, auf dem PowerMac war aber eine „2.48alpha“ installiert.

Nach einer kurzen Suche fand im Package-Verzeichnis von Debian die gesuchte Version und lud mir mit dem Link [bibtool_2.48alpha.2.orig.tar.gz] die Quellen herunter.

Und siehe da – dieses Mal funktionierte die Konfiguration auf Anhieb. Ich vermute, dass sich die Debian-Package-Maintainer der „wüsten“ configure-Datei angenommen haben. Nötig scheint es durchaus zu sein: Auf einer Mailingliste beschwert sich ein Profi wortreich:

[…] the configure script is not well constructed nor well
documented, as it provides no way to turn support for certain things
(like Tcl) completely off and does not tell you wether they can
actually *be* turned off or not… But I think you also realized this
during your trails. Apart from that, the developer seems unaware of the
existence of Mac OS X, as through out the scare documentation he makes
no mention of it as one of the UNIX (or UNIX like, however you may have
it) operating systems where BibTool has been tested, and then proceeds
to give some Macintosh installation instructions which smell pre-X (Mac
OS 9, 8, 7, etc) to me. So, given this state of affairs, it is no
wonder to me the package just flat out fails to even configure on Mac
OS X…!

Quelle: MacOSX-TeX Digest #842 – Sunday, November 16, 2003

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 7. November 2006

apache2: php4 als Modul, php5 als CGI (Parallelbetrieb)

Im Netz gibt es eine Menge „How-Tos“ zu diesem Thema, weshalb ich hier primär auf diese ausführlichen Anleitungen verweisen möchte:

MySQL

Wer php5 mit MySQL sprechen lassen möchte, achtet darauf, dass er

./configure ... --with-mysql=/usr/include/mysql ...

angibt. Bei mir war noch die Installation von

apt-get install libmysql-dev

nötig, um mysql.h zu erhalten.

php5 mit .htaccess aktivieren

Wer nur in einzelnen Verzeichnissen php5 laufen lassen möchte, erstelle folgende .htaccess-Datei:

Action application/x-httpd-php5 /cgi-php/php
AddHandler application/x-httpd-php5 .php

In der /etc/apache2/httpd.conf steht als Ergänzung:

<Directory /usr/local/php5/bin>
Options ExecCGI
AllowOverride None
</Directory>

ScriptAlias /cgi-php/   /usr/local/php5/bin/

Natürlich treten Konfigurationsänderungen an der httpd.conf erst in Kraft, nachdem man folgenden Befehl ausgeführt hat:

apache2ctl graceful

Wenn sich apache2 über mangelnde ‚Action‘ beschwert:

.htaccess: Invalid command 'Action', perhaps mis-spelled or defined by a module not included in the server configuration

tut man gut daran, in /etc/apache2/mods-enabled einen Symlink zu erstellen:

ln -s ../mods-available/actions.load

Nun sollten Scripts in diesem Verzeichnis und dessen Unterverzeichnissen mit dem CGI von php5 geparst werden.

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 24. Oktober 2006

Wenn es update-initramfs zu eng wird …

… könnte man beim nächsten Reboot des Debian GNU/Linux-Servers eine böse Überraschung erleben. Wie ich heute Nachmittag:

Es war wieder mal an der Zeit, ein

apt-get upgrade

durchzuführen. Folgende Fehlermeldung beunruhigte mich keinesfalls, was sich als fahrlässig herausstellte:

Setting up initramfs-tools (0.83) ...
update-initramfs: Generating /boot/initrd.img-2.6.17-2-686
W: mdadm: unchecked configuration file: /etc/mdadm/mdadm.conf
W: mdadm: please read /usr/share/doc/mdadm/README.upgrading-2.5.3.gz .
I: mdadm: auto-generated temporary mdadm.conf configuration file.
I: mdadm: will start all available MD arrays from the initial ramdisk.
I: mdadm: use `dpkg-reconfigure --priority=low mdadm` to change this.

gzip: stdout: No space left on device
dpkg: error processing initramfs-tools (--configure):
 subprocess post-installation script returned error exit status 1

(Im Grunde bestand kein Anlass, den Server zu rebooten – aber irgendwie liess mich die Fehlermeldung dann doch nicht locker).

Prompt kam die Kiste nicht mehr hoch. Der Grund:

VFS: Cannot open root device "888" or unknown-block(8,8)
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on unknown-block(8,8)

(die Fehlermeldung habe ich aus dem Netz kopiert, bei mir stand etwas sehr ähnliches …)

Zum Glück hatte ich noch meinen alten 2.4er-Kernel rumliegen, der anstandslos bootete. Ein Blick auf die Partitionen offenbarte das Übel:

ALPHA:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda6             958M  879M   30M  97% /
udev                   10M  116K  9.9M   2% /dev
devshm                507M  4.0K  507M   1% /dev/shm
/dev/sda1              16M  0  0  100% /boot
/dev/sda7              92M  4.1M   83M   5% /tmp
/dev/sda9             942M  493M  402M  56% /home
/dev/sdb1             4.2G  3.1G  938M  77% /var
/dev/md0              459G  247G  189G  57% /multimedia

Kein Wunder, dass update-initramfs abkrachte. Zurück blieb ein halbfertiges Ramdisk-Image. Glücklicherweise war die vorangehende Version auch unter /boot zu finden – soweit ich mich erinnern kann mit einem .dpkg-bak am Ende. Schwuppdiwupp, das verkrüppelte Image gelöscht, das alte unbenannt und schon kam die Kiste auch wieder mit dem 2.6er Kernel hoch.

Dennoch war mir nicht wohl dabei – alles schien reibungslos zu funktionieren, doch aus einem bestimmten Grund musste ja das Image neu erstellt werden. Ich entschied mich deshalb, das Image erneut zu generieren, stellte aber vorher sicher, dass im /boot-Verzeichnis dieses Mal genügend Platz vorhanden war. Dann ging’s los:

ALPHA:/boot# dpkg-reconfigure linux-image-2.6.17-2-686
Running depmod.
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
W: mdadm: unchecked configuration file: /etc/mdadm/mdadm.conf
W: mdadm: please read /usr/share/doc/mdadm/README.upgrading-2.5.3.gz .
I: mdadm: auto-generated temporary mdadm.conf configuration file.
I: mdadm: will start all available MD arrays from the initial ramdisk.
I: mdadm: use `dpkg-reconfigure --priority=low mdadm` to change this.
Not updating initrd symbolic links since we are being updated/reinstalled 
(2.6.17-9 was configured last, according to dpkg)

Ob es gefruchtet hat? Ich hoffe es. Beim nächsten Test-Reboot klappte alles wie am Schnürchen. Falls ich einmal Zeit habe, nehme ich mich auch noch der mdadm-Fehlermeldungen an (RAID10).

Guet Nacht!

Nachtrag

Vielleicht hat Kollege Liechti wirklich recht: Heute „klepfe“ man bei einer Linux-Installation alles auf eine Partition, rät er … Ich überleg’s mir mal.

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen