Tips für Linux von Stephan Löscher

Inhalt:

  1. Vorwort
  2. Literatur
  3. Serielle Verbindungen
    1. Nullmodem
    2. Modem-Verbindungen
    3. PPP
    4. PPP-Server
  4. Booten
    1. Bootdisk
    2. Bootsektor kopieren
    3. LILO
    4. Init-Parameter
    5. Rechner ohne Platte booten
    6. Fehlermeldungen beim Booten
  5. Kopieren und Sichern
    1. Sicherungen und Kopieren
    2. Sicherungen mit Streamer
    3. Komplette Filesysteme kopieren
  6. Verschiedenes
    1. Disketten formatieren
    2. Mount (Root ReadOnly)
    3. X11
    4. Hinzufügen von nachträglich eingeschalteten SCSI-Geräten
    5. Suid-Scripten
    6. Swap (Paging)
    7. "Zerstörte" Terminals
    8. Patch mit Diff erstellen
    9. Inode-Anzahl einstellen
    10. Tips zu Postscript
    11. Referenzen auf eine Homepage feststellen
    12. Bemerkungen zur SuSE 6.0 Installation
    13. CD und CDRW brennen
    14. Kernel Oops analysieren
    15. Beeps ausschalten
  7. Software
    1. Perl
    2. LaTeX (teTeX) einrichten
    3. StarOffice
    4. PovRay
    5. finddupe
    6. c't-Rom
    7. XEmacs einrichten und Tips
    8. WGet
    9. Sound-Programme
    10. RPM
    11. Rosegarden
    12. Vacation / Procmail
    13. Mail weiterleiten mit Procmail
    14. cdda2wav
    15. PGP
    16. TCP-Wrapper
    17. SSH (Secure Shell)
    18. Faxen
    19. MGetty
    20. VGetty als Anrufbeantworter
    21. CVS
    22. LaTeX2HTML
    23. Ghostscript
    24. X-Mame
    25. Netscape
    26. WindowMaker
    27. GCC (ehem. EGCS)
    28. SANE
  8. Libraries
    1. GGI
    2. MESA
  9. Emulatoren
    1. DOSEMU
    2. Wine
    3. Bochs
  10. System-Konfiguration
    1. Kernel-Einstellungen
    2. Bootvorgang / Programme starten
    3. Grundlegende Netzkonfiguration
    4. Drucker
    5. INETD
    6. Tastatur (Delete und Backspace)
    7. Benutzer-Einstellungen (Shell, X11)
    8. FVWM2
    9. HTTPD / WWW-Server
    10. WWW-Cache: Squid
    11. WWW-Cache: WWWOffle
    12. Sendmail
    13. Fetchmail
    14. News (INN)
    15. FTP
    16. Fonts installieren
    17. NCR53c400a-SCSI-Karte verwenden
    18. Zeitzone einstellen
    19. UMSDOS
    20. Images von Platten mit dem Loopdevice mounten (oder auch MTools)
    21. Benutzer und System-Verwalter einrichten
    22. X11 absichern
    23. Device-Filesystem (devfs)
    24. ALSA
    25. RAID / Multiple Devices (MD)
  11. Meine Programme
  12. Alle referenzierten Links dieser Seite als ZIP-File

Vorwort

Viele kennen wohl diesen Dialog zwischen einem Linux-Guru und einem Linux-Anfänger:

Anf.: Was muß ich tun, um Funktionalität XYZ zu erhalten?
Guru: Jaaaa, das läuft bei mir prima schon seit 5 Jahren. Das war auch ganz einfach, aber ich weiß jetzt nicht mehr, wie ich das damals installiert habe... Das steht aber irgendwo in der man-page oder ein einer FAQ oder HOWTO.

Deshalb habe ich beschlossen, alle meine vorgenommenen Änderungen am System zu dokumentieren. Anfangs war dieser Text nur für mich gedacht, aber da ich selbst inzwischen schon oft gefragt worden bin, wie ich nun dieses oder jenes installiert habe, habe ich mich entschlossen das Werk zu veröffentlichen.
Die Eckdaten zum System: Ich habe mit SuSE 4.2 und Kernel 1.2.13 ca. 1995 auf einem 386 mit 4MB Speicher begonnen. Den Speicher hab ich dann bald auf 8 (Huh - so viel.) erweitert. Der 386 wurde nach einem Jahr dann durch einen P-200 mit 128MB abgelöst.
Seit der Erstinstallation habe ich einiges am System verändert. Dadurch kann es sein, daß manche Einstellungen für das alte Linux noch stimmen, aber für das aktuelle angepaßt werden müssen.
Dann verging eine lange Zeit mit SuSE 4.4 mit Kernel 2.0.33 und libc.so.5.4.7.
Zur Zeit läuft bei mir SuSE 6.0 mit Kernel 2.0.33 und glibc.
Kommentare (und Fehlerberichtigungen) sind immer willkommen, am besten per Mail: loescher@leo.org
Ich möchte allen danken, die mir bei der Installation geholfen haben und mir bei Fragen und Problemen weitergeholfen haben. Besonderer Dank geht hiermit an alle hilfsbereiten Menschen in:
de.comp.os.unix.linux.misc
de.comp.os.unix.linux.hardware
de.comp.os.unix.x11
de.comp.os.unix.networking
maus.os.linux


Literatur

In diesem Abschnitt lege ich Hyperlinks zu Dokumenten, die mehrere Themen zu Linux abdecken und nicht speziell einsortiert werden sollten.

Meine Linux-Bookmarks
ISDN und alles über Internetworking
S.u.S.E. Support-Datenbank
Linux Wegweiser für Netzwerker
Linux Wegweiser zur Installation & Konfiguration
Linux HOWTO Index
Linux Tips & Tricks von Peter Sobisch
Deutsche Unix-Einführung
Englische Unix-Einführung
Firewall Handbuch für LINUX 2.0 und 2.2

Und natürlich das Usenet::
de.comp.os.linux.misc
de.comp.os.linux.hardware
de.comp.os.linux.x
de.comp.os.linux.networking
maus.os.linux

Serielle Verbindungen

Verbindung von zwei Rechnern per Nullmodem

Bemerkung: Sowohl mgetty, als auch getty lesen die Datei /etc/gettydefs. Diese Datei ist für mgetty notwendig!
Um den Rechner, der eine eingehende Verbindung ermöglichen soll zu konfigurieren gibt es zwei Möglichkeiten: Dann Neustart des Init: kill -HUP 1 oder init q
(Danach sollte ein login auf dem Terminal des anderen Rechners erscheinen.)

Modem-Verbindungen herstellen

1. /dev/modem sollte auf /dev/ttyS1 gelinkt werden.
2. Unter Umständen RTS/CTS einschalten:
in /sbin/init.d/boot.local eintragen: stty crtscts < /dev/modem
3. Re-Ring für Modem-Verbindungen mit nur einer Telefonleitung, die auch für Gespräche genutzt werden soll, geht mit mgetty.
Nur in /etc/initab eintragen:
mo:123:respawn:/usr/sbin/mgetty -R 60 -s 57600 modem
Man kann mgetty nicht testweise von Hand starten, sondern nur über init!
In /etc/gettydefs muß dann diese Zeile hinein:
F57600# B57600 CS8 CRTSCTS # B57600 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F57600
Mgetty wartet auf Klingeln und geht nicht (!) an die Leitung, sondern wartet erst 30 Sekunden und geht dann in den nächsten 60 Sekunden an die Leitung.
Es wird sowohl FAX, als auch Datenverbindung entgegengenommen.
Zum Fehlersuchen kann eventuell "script" oder "cu" oder "echo -ne 'ATZ\r'>/dev/modem'" nützlich sein.

PPP


PPP-Server einrichten

Zuerst konfiguriert man den mgetty um Modem-Verbindungen zu ermöglichen.
Wenn man dabei das "Auto-PPP" von mgetty aktiviert, dann ist man schon fertig. Wenn man es allerdings über einen Login-Vorgang lösen will, dann geht das so:
Dann richtet man einen PPP-Account ein (entnommen aus NAG):
In /etc/passwd:

ppp:x:500:200:PPP Account:/tmp:/usr/local/bin/ppplogin

(Natürlich bei Bedarf mit anderen uid und gid.)
Und /usr/local/bin/ppplogin:

#!/bin/sh
# ppplogin - Script startet pppd beim Login
mesg n
stty -echo
exec /usr/sbin/pppd -detach silent modem crtscts


Zum Login verwendet man ein gewöhnliches "ppp-on":
#!/bin/bash
stty 57600 cs8 pass8 crtscts </dev/modem
pppd -ipx-protocol mtu 296 debug crtscts defaultroute \
netmask 255.255.255.0 /dev/modem 57600 \
connect '/usr/sbin/chat -v -f /root/private/remote.chat'

Das Chat-Script sieht so aus:
ABORT BUSY ABORT "NO CARRIER" ""
ATZ OK
ATL1M1DPtelefonnummer TIMEOUT 90
CONNECT "" login: ppp assword: geheimes_passwort

Für den Palm-Pilot reicht ein simpler pppd-Aufruf:
/usr/sbin/pppd /dev/modem 19200 :172.16.0.100 local persist

Booten

Linux mit einer Boot-Disk von einer Partition starten


Bootsektor und Partitionstabelle kopieren

Sicherung des Bootsektors:
dd if=/dev/sdaX of=bootsektor bs=512 count=1
Sicherung des Master-Boot-Records (MBR):
dd if=/dev/sda of=mbr bs=512 count=1
Auf eine Floppy kopieren zum Booten:
dd if=/dev/hda of=/dev/fd0 bs=512 count=1

LILO-Installation

Wenn man von MO von der 1. Partition (/dev/sda1) booten will, dann muß LILO im MBR installiert sein. Wichtig ist dann dieser Eintrag in der lilo.conf:
boot=/dev/sda (Und nicht /dev/sda1)
Trotzdem wird im IMAGE-Abschnitt das Root angegeben:
image = /vmlinuz
root = /dev/sda1
label = Linux

Erklärungen:
install=<Bootsektor>
Lage und Bezeichnung des bootsektors. Linux verwendet als Standard /boot/boot.b
image=<Kernelimage>

Bei Problemen:
Wenn beim Booten mit lilo nur 'li' erscheint, deutet das auf einen Plattengeometriefehler hin. Auch die Warnung 'not on the first disk' deutet darauf hin, daß die Platte nicht als erste gemeldet wird, aus welchem Grund auch immer.
Also: Die Zeile 'verbose = 3' in /etc/lilo.conf einbauen und lilo aufrufen. Im Output nach einer Zeile suchen, die wie folgt aussieht:
Device 0x0808: BIOS drive 0x81, 255 heads, 522 cylinders
Das wichtige dabei ist die Bios drive number. Wenn die nicht 0x80 ist, in /etc/lilo.conf die Zeile
disk = /dev/sda bios=0x80
am Ende der 'global section', (vor der Zeile mit Image=...) einfügen und lilo erneut aufrufen. In jedem Fall die hexadezimale Notation mit 0x.. verwenden! Wenn das nichts hilft: Das Kapitel über drive geometry in user.dvi aus der lilo Dokumentation lesen (unter /usr/doc/lilo/doc oder /usr/lib/lilo/doc)

Konfiguration:
Im BIOS abgemeldete IDE-Platte, 2 SCSI Platten, Linux soll von SCSI-Disk 1 booten:

verbose=3
boot=/dev/sda
linear
read-only
delay=50
vga = normal
disk = /dev/sda bios=0x80
image = /vmlinuz
root = /dev/sda1
label = Linux

Init-Parameter

Man kann dem Lilo oder Loadlin Parameter für Init mitgeben: 1, 2, 3, 4, 5, single oder emergency. Wenn z.B. Linux nicht richtig bootet, weil im Runlevel 2 oder 3 etwas schiefläuft, dann kann man Linux im Single-User-Mode booten:
c:\linux\loadlin c:\linux\2033 root=/dev/sda1 ro single
Oder mit Lilo:
Lilo-Prompt: Linux single
Man kann den Kernel auch veranlassen, statt Init eine Shell zu starten:
init=/bin/sh

Rechner ohne Platte booten

Ich habe es noch nicht ausprobiert, aber mir schon folgendes notiert:

Fehlermeldungen beim Booten


Kopieren und Sichern

Sicherungen und Kopieren

cd /quelle
find . -print | cpio -pvdm /ziel

oder:
cd /quelle
cp -axv . /ziel

oder mit TAR:
cd /quelle
tar -cvpf - . | gzip --best > /ziel.tgz

Bedeutung:
Create, Verbose, Preserve attributes, file stdout (-)
GZIP nimmt die Ausgabe vom TAR und komprimiert nach ziel.tgz

Sicherungen über das Netzwerk:

Sicherung mit Streamer

cd /quelle
tar -cvpf /dev/tape .
(d: diff, x: extract, t: list)
Einzelfiles extrahieren: tar -xvf /dev/tape 'c:/temp/*'
Bandbewegungen:
Zurück: mt bsfm

Ungetestet:
I use a mt setblk 0, and a dd buffer of 32 KB
I do backups like:
cd /
find . -print | cpio -ovB | dd of=/dev/st2 bs=32000


Angeblich ist "-b 20" die übliche Blockgröße?!

Ungetestet:
cd /quelle
find . -print | cpio -ocvB > /dev/tape
cd /quelle
find . -print | cpio ocvC 65536 > /dev/tape

Komplette Filesysteme kopieren

Linux komplett auf anderes Medium kopieren:

Verschiedenes

Disketten formatieren

1.44MB Disk in einem 1.2MB Laufwerk formatieren:
fdformat /dev/fd0h1440
und dann
mformat a:
Falls es dieses Device nicht gibt, dann erstellen:
mknod /dev/fd0h1440 b 2 40

Mount (Root ReadOnly)

Um die Root-Partition, die aus diversen Gründen Read-Only gemountet worden ist, wieder als Read-Write zu mounten reicht dieser Befehl:
mount -w -n -o remount

X11


Hinzufügen von nachträglich eingeschalteten SCSI-Geräten

Entnommen aus: /usr/src/linux/drivers/scsi/scsi.c:
Verwendung: echo "scsi add-single-device Host Channel Id Lun" >/proc/scsi/scsi
Also: echo "scsi add-single-device 0 0 3 0" >/proc/scsi/scsi
Damit wird das Gerät mit der SCSI-ID 3 hinzugefügt. Entfernen geht mit "remove-single-device".
In sein Skript gepackt sieht es dann so aus: scsirescan
Ich empfehle aber jedem, der externe Geräte nachträglich ein- und ausschalten muß, sich das Device-Filesystem devfs anzuschauen. Das löst alle Probleme mit den generischen SCSI-Geräten. Damit gehört die unpraktische und gefährliche Numerierung sga, sgb, sgc, ... der Vergangenheit an.

SUID-Scripte

Um etwas Set-UID laufen zu lassen gibt es "su1" oder "sudo".
Aber es ist unter Linux nicht möglich Scripten SUID laufen zu lassen, da es ein Sicherheitsloch darstellen würde. Das SUID-Bit (ebenso wie SGID) kann bei Shellscripten zwar gesetzt werden, hat aber keine Wirkung. Aber es gibt eine Lösung: Man kann das Script in ein C-Programm packen, das dann SUID laufen kann. Man kann z.B. folgendes C-Programm als Wrapper verwenden:
#include <stdio.h>
#define PROGPATH   "/usr/local/bin/perl"
#define PROG       "perl"
main ()
{
  execl (PROGPATH, PROG, "/usr/local/bin/MEINSCRIPT", NULL);
  fprintf (stderr, "exec %s failed\n");
}
    

Swap (Paging)

Die Swap-Partition oder ein Swap-File kann maximal 130752 Blocks groß sein!

Wenn man das Paging beschleunigen will, so kann man Striping bzw. Interleave zwischen den Swap-Spaces aktivieren. Dazu stellt man für die Swapspaces die gleiche Priorität ein, was bewirkt, daß auf diese gleichzeitig zugegriffen wird. Das macht natürlich nur bei physisch unterschiedlichen Platten Sinn.

# For interleaved swapping across multiple devices:
/dev/scsi/host1/bus0/target5/lun0/part1 swap swap pri=1 0 0
/dev/scsi/host1/bus0/target6/lun0/part1 swap swap pri=1 0 0
/dev/scsi/host1/bus0/target1/lun0/part2 swap swap pri=0 0 0

"Zerstörte" Terminals

Wenn ein XTerm oder die Konsole etwa so aussieht:

ÈccyvyéYÄyPÃâ`Y0;zIb!+ìÀyí-prríq`
"q^),wí ÉÞð+qó/62øaðvÀÃkó,xË1(teÿIÈ,Ù8âcË
x"Öæ0`;ÇàdTÚÉëYv{!tØ,BÃtæ0È0p||=â1Î]wÈS`õå4

weil man z.B. versehentlich ein cat test.gif losgelassen hat, dann hilft das Kommando reset in diesem Terminal. Alternativ funktioniert auch "<Ctrl>-v <Esc> c <Enter>".

Patch mit Diff erstellen

Einen Patch zwischen zwei Verzeichnissen erstellt man mit:
diff -u --recursive --new-file AltesVerz NeuesVerz > patch.txt
Einen Patch zwischen zwei Files erstellt man so:
diff -u AltesFile NeuesFile > patch.txt
Anwenden kann man den Patch dann so:
patch < patch.txt
(Dabei sollten sich das zu patchende Verzeichnis oder File im aktuellen Verzeichnis befinden.)

Inode-Anzahl einstellen

Für eine Platte, die viele kleine Files aufnehmen soll, wie zum Beispiel ein News-Spool, sollte man die Inode-Anzahl erhöhen:
mke2fs -v -i 2048 /dev/sdc
Standardwert ist 4096. Je kleiner der Wert, desto mehr Inodes werden reserviert.

Tips für Postscript


Referenzen auf eine Homepage feststellen

kann man, indem man in Altavista oder Infoseek nach folgendem sucht:
link:www.leo.org/~loescher
Hotbot hat diese Funktion in der "Look for"-Auswahlbox.

Bemerkungen zur SuSE 6.0 Installation


CD und CDRW brennen


Kernel Oops analysieren

Wenn der Kernel einen Oops bringt, dann versucht der klogd diesen zu analysieren, was meist fehlschlägt. Deshalb am besten in einer Testphase den klogd deaktivieren.
Wenn es dann zu einem Oops kommt, dann sitzt dieser Text noch in /proc/kmsg wo man ihn nur so herauslesen kann:
cat /proc/kmsg > /tmp/oops.txt
Nach einer kurzen Wartezeit mit CTRL-C abbrechen.
Dann kann man den Oops mit /usr/src/linux/scripts/ksymoops analysieren:
ksymoops -v vmlinux -m System.map
Wenn der make für ksymoops nicht durchläuft, dann fehlen wahrscheinlich die Libraries libiberty und lbfd, welche bei den binutils-2.9.1.0.15 dabei sind.

Beeps ausschalten

Auf der Konsole kann man die Beeps so ausschalten:
setterm -blength 0
Und unter X11 kann man es so ausschalten:
xset b off

Software

Perl

Perl ist normalerweise bereits intalliert.
Sehr empfehlenswert sind noch die folgenden Module:

Time-modules-100.010301.tar.gz
Data-Dumper-2.08.tar.gz (bereits bei 5.005_02 dabei!)
libnet-1.0505.tar.gz
MD5-1.7.tar.gz
libwww-perl-5.08.tar.gz
Tk400.202.tar.gz
sha-1.2.tar.gz
MLDBM-2.00.tar.gz

Diese können nach dem Auspacken ganz einfach installiert werden:
perl Makefile.PL
make
make test
make install

LaTeX (teTeX) einrichten

Einfach als Root "texconfig" (/usr/lib/teTeX/bin/i386-linux/texconfig) starten und der Rest geht menügeführt.
Zum Beispiel habe ich mir den "MODE" auf "canonbjc" umgestellt. Bei "XDVI" habe ich "PAPER" auf "a4" umgeschaltet.

StarOffice 3.1 Beta 4

Die genaue Versionsnummer eines installierten SO kann man herausfinden, indem bei Hilfe->Produktionformationen STRG-SDT tippt.

Die Tar-Files in ein Verzeichnis entpacken, z.B. /usr/StarOffice3.1 und dann muß jeder Benutzer setup starten.
Man sollte /usr/StarOffice3.1/linux-x86/bin/svdaemon und /usr/StarOffice3.1/linux-x86/bin/svportmap nur einmal starten. Wenn man diese in /sbin/init.d/boot.local starten will, dann muß man vorher den Path für die Libraries definieren:
export LD_LIBRARY_PATH=/usr/X11R6/lib:/usr/StarOffice3.1/linux-x86/lib
und den Port-Mapper starten: /usr/sbin/portmap -v, wenn er nicht sowieso schon läuft.
Man kann auch noch weitere Fonts installieren.
Es gibt auch noch eine ausführliche Installations-Anleitung.

StarOffice 4.0 Service-Pack 3 und Nachfolger (bis 5.1)


PovRay3

  1. Man sollte den alten Povray deinstallieren:
    cd /usr/bin
    zip -m povray-old povray*
  2. Archiv auspacken und in dieses Verzeichnis wechseln. Dann:
    md /usr/local/lib/povray3
    cp -r include /usr/local/lib/povray3
    cp -r povscn /usr/local/lib/povray3
    cp -r *.ini /usr/local/lib/povray3
    cp povray.1 /usr/local/man/man1/
    cp s-povray x-povray /usr/local/bin/
    cd /usr/local/bin/
    ln -s x-povray povray
  3. Eine Demonstration starten:
    povray +W640 +H480 +A0.3 +Q9 +L/usr/local/lib/povray3/include +I/usr/local/lib/povray3/povscn/level3/chess.pov

finddupe

Am besten kann man doppelte Files finden mit:
finddupe -vv PFADE > FILE
Beispiel:finddupe -vv /mnt/disk1 /mnt/disk2 > doppelt.txt
Dann das Resultat-File mit einem Editor bearbeiten und mit diesem:
cat dupe.txt | perl -ne 'split; print "$_[1]\n";'
erhält man die doppelten Files (aus der zweiten Spalte).

c't-ROM einrichten (Alte c't-ROMs)

Beste Lösung: Das Windows-Programm mit WINE starten.

Echte UNIX-Lösung (mit Einschränkungen beim Suchen):
- Vorher httpd zum Laufen bringen (siehe HTTPD)
- ctsuch1_8.tar auspacken, CD im Laufwerk lassen und ./ctinstall starten
Antworten:
Pfadname des cgi-bin-Verzeichnisses des WWW-Servers: /httpd/cgi-bin
Pfadname des Verzeichnisses für die c`t-ROM-WWW-Seiten: /httpd/htdocs/ctrom
Auf alle Fragen mit "Ja" antworten.

XEmacs einrichten (Version 20.4) und Tips

Installation: Meine Änderungen an den Einstellungen finden sich im ~/.emacs-File. Sehr hilfreich ist auch die XEmacs-FAQ. Umfangreiche Konfiguration und Dokumentation gibt es auf der XEmacs & Gnus Page.
Folgendes habe ich eingestellt bzw. aktiviert: Weitere Tips:

WGet

Das universellste und leistungsgähigste Programm zum rekursiven WWW-Download ist WGet (wget-1.4.4). Meine Einstellungen finden sich in /usr/local/etc/wgetrc. Man wechselt dann in das Zielverzeichnis (z.B. /httpd/htdocs/mirror) und ruft wget z.B. so auf:
wget --level=2 http://www.sl.de
Dabei kann man die Rekursionstiefe (hier 2) angeben und die gewünschte Start-URL.
Erst mit einem WWW-Cache macht WGet (zumindest in dieser Version 1.4.4) erst Sinn. Denn wenn man WGet wie hier beschrieben betreibt, dann wird ja jede Kopie einer WWW-Seite lokal geändert (Pfade anpassen). Das hat zur Folge, daß beim nächsten WGet-Update-Lauf diese Seiten wieder geholt werden. Und so werden sie von lokalen WWW-Cache geholt. Ich habe folgende andere Programme bereits probiert, und sie haben sich für mich als unbrauchbar herausgestellt:

Sound-Programme


RPM

Man kann auch mit rpm2cpio < filename.rpm | cpio -i das RPM in ein CPIO-Archiv verwandeln.

Rosegarden

Wenn man den Ausdruck von Notenblättern durch Rosegarden (2.0.1) vergrößern will, dann geht das nur, indem man im TeX-File die Seitengröße reduziert, z.B. \hsize=3.5in und dann beim Ausdruck mit dvips vergrößert: dvips -x 2000 file.ps

Vacation / Procmail

Problem: Man ist im Urlaub und möchte aber auf alle Mails automatisch antworten, daß man die Mail erhalten hat, aber erst am Tag XX lesen kann. Die Lösung ist procmail. Dazu braucht man zwei Files:

Mail weiterleiten mit Procmail

Problem: Man hat zwei Accounts auf denen man Mail liest und kann sich aber auf dem jeweils anderen Account nicht von dem anderen Account aus einloggen.
Man kommt auf die naheliegende Idee zwei Forwards einzurichten, aber das erzeugt einen Mail-Loop.
Die Lösung ist procmail. Dazu braucht man zwei Files auf beiden Rechnern: Die Weiterleitung kann natürlich auch auf einen Drucker erfolgen:
# Diese .procmailrc druckt eingehende Mails aus
SHELL=/bin/sh
:0 c
| a2ps -nP -1 -p -ns -nL | lpr -Pepson
Eventuelle Konvertierungen und Umformatierungen sind dem Leser als Übung überlassen.

Mail in ein Programm füttern oder ein Programm starten:
:0w
*^(cc|to|Resent-From|X-Mailing-List):.*debian-user@lists.debian.org
| /usr/local/bin/mail2news local.debian.user
oder:
:0:
* (^Subject: backup)
| backup

cdda2wav

Mit cdda2wav kann man CDs digital auslesen. Wenn die Fehlermeldung kommt:
no match: increase overlap (3) or decrease SYNC_SIZE (320).
no match: at position 9468565 from 9469740
dann sollte man in "interface.c" den Wert von "overlap" auf 4 erhöhen.

PGP (2.6.3i)

PGP (5.0i)

PGP (allgemein)


TCP-Wrapper

Ein TCP-Wrapper hängt zwischen dem inetd und den Dämonen, die Dienste anbieten. Es gibt dazu eine kurze Beschreibung des Verfahrens oder den Original-Artikel
Bei SuSe ist bereits der TCP-Wrapper (tcpd) vorinstalliert.
Falls nicht, dann geht es so: Ab nun werden alle Verbindungen in syslog(8) mitgeschrieben.

SSH (Secure Shell) (deutscher Mirror)

SSH ist ein Ersatz für die r* Berkeley-Dienste (rcp, rlogin, rsh) der wohl den besten Kompromiß zwischen Sicherheit und Praktikabilität liefert. Zusätzlich zur Verschlüsselung aller Daten kann man auch noch eine Kompression aktivieren. Das wohl interessanteste Feature ist das X11-Forwarding. Damit kann man X11-Programme remote über mehrere Rechner hindurch verwenden, ohne das DISPLAY umsetzen zu müssen oder den unsicheren xhost oder xauth zu verwenden.
Informationen: Benutzer-Installation (wenn bereits im System vorhanden): System-Installation von sshd: Tips zur Benutzung:

Faxen

Zum Faxen braucht man ein PostScript-File.
Einen ASCII-Text kann man nach PS wandeln mit:
a2ps -nP -1 -p -F15 -ns -nL ascii.txt > fax.ps
oder:
cat fax.test | pbmtext | pbm2g3 > fax.g3
PS nach FAX:
gs -q -dSAFER -dNOPAUSE -sDEVICE=faxg3 -sOutputFile=fax.%d.g3 input.ps -c quit
Es geht auch komfortabler mit ps2fax.
Abgesendet werden die G3-Files dann mit:
faxspool NUMMER FILES
Die Fax-Queue kann man mit faxq anzeigen lassen.
Die Umkehrung von G3 in ein darstellbares Bild geht mit:
g32pbm fax.1.g3 > fax.pbm
Root sollte irgendwann die Queue mit faxrunq absenden.

MGetty

In Makefile muß man
ECHO="echo"
in
ECHO="/bin/echo"
umändern. und "-DAUTO_PPP" zusätzlich bei den Defines angeben. Dann:
cp policy.h-dist policy.h
make testdisk
make
make install
Dann trägt man in /usr/local/etc/mgetty+sendfax/faxheader seinen Faxkopf ein. In /usr/local/etc/mgetty+sendfax/mgetty.config habe ich folgendes geändert:
fax-id 49 8142 7257
speed 115200
# Speziell für Creatix LC144VF:
# init-chat "" \d\d\d\d\d\d+++\d\d\dATE1Q0V1 OK ATS0=0&D3&K3 OK
# switchbd 19200
# Speziell für US Robotics Message Modem:
init-chat "" ATZ OK ATE1Q0V1 OK ATS0=0&D3 OK
und in /usr/local/etc/mgetty+sendfax/sendfax.config habe ich folgendes geändert:
fax-devices modem
fax-id 49 8142 7257
dial-prefix ATDT
# Speziell für Creatix LC144VF:
# modem-handshake AT&K3
und in /usr/local/etc/mgetty+sendfax/login.config habe ich folgendes geändert, um PPP ohne vorheriges Login zu ermöglichen:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug
Zu letzterem braucht man noch diesen Eintrag in /etc/pap-secrets:
* * ""
und der anrufende Client braucht eine eigene IP-Adresse. Man kann auch so ein feste IP-Adresse vergeben:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth :192.168.1.99 -chap +pap login debug

VGetty als Anrufbeantworter

Vgetty ist im mgetty -Paket dabei. Zum Kompilieren wechselt man ins Unterverzeichnis voice und:
make
make install
cp voice.conf-dist /usr/local/etc/mgetty+sendfax/voice.conf
Wichtig: VGetty liest auch die Datei /usr/local/etc/mgetty+sendfax/mgetty.config ein und benutzt davon zum Beispiel die Option init-chat. In /usr/local/etc/mgetty+sendfax/voice.conf habe ich dann folgendes geändert:
port_speed 115200
rings 2
dtmf_program /usr/local/bin/dtmf.sh
voice_devices modem
VGetty wird einfach anstelle von megtty in initab eingetragen:
mo:123:respawn:/usr/local/sbin/vgetty modem
Dann kann man eine Ansage einrichten:
voctopvf file.voc | pvftormd Rockwell 4 > /var/spool/voice/message/standard.rmd
oder
voctopvf file.voc | pvftormd US_Robotics 1 > /var/spool/voice/message/standard.rmd
Wiedergeben kann man eingegangene Anrufe in /var/spool/voice/incoming über das Modem:
vm play -s filename.rmd
oder über die Soundkarte:
rmdtopvf filename.rmd | pvfspeed -s 8000 | pvftobasic > /dev/audio
VGetty kann auch DTMF erkennen und danach Aktionen auslösen.

CVS

Kurzanleitung (sehr kurz) zu CVS. Ausführliche Beschreibung: XEmacs C-h i g cvs.
Das CVS-Repository erstellt man mit:
cvs -d /usr/src/cvsroot init
Dann setzt man die Environmentvariable:
export CVSROOT=/usr/src/cvsroot
Dann ein Projekt-Verzeichnis anlegen mit Files und evtl. Unterverzeichnissen darin:
md projekt
cvs import -m "Anfang des Projekts" projekt loescher start
Dann kann man z.B. in ein anderes Verzeichnis wechseln (/tmp) und
cvs checkout projekt
cd projekt
Dann kann man drin Files verändern und wieder einchecken:
cvs commit file.pl

LaTeX2HTML (Version 96.1 (Feb 5, 1996)

LaTeX2HTML konvertiert LaTeX-Dokumente nach HTML. Ich verwende diese alte Version, weil die aktuelle bei mir nicht funktioniert. Eine sehr gute Alternative ist tth.
Installation:
Aufruf:
latex2html -address '<A HREF="http://www.leo.org/~loescher/">Stephan L&ouml;scher</A>, 16 Jun 1998' file.tex
cd file
perl -pi -e 's(http://cbl.leeds.ac.uk/nikos/figs/)()g;' *.html
Und folgende Icons muß man noch kopieren:
contents_motif.gif next_motif.gif up_motif.gif next_motif_gr.gif up_motif_gr.gif previous_motif.gif previous_motif_gr.gif
So habe ich meine Jokes-LaTeX-Dateien umgewandelt:
md /tmp/jokes
cd /tmp/jokes
cp /home/loescher/TeX/jokes/* .
for i in *.tex ; do latex2html -no_navigation -address \
'<a href="http://www.leo.org/~loescher/">Stephan Löscher</A>,\
20 Nov 1998' -info '' $i; done
/bin/rm `find | grep -v 'html\|gif'` `find -size 0`
Wenn man die Stylesheets nicht benötigt, dann sollte man aus den HTML-Files die Zeilen mit den Links auf die CSS-Files löschen.

Ghostscript (Version 5.03)

Ghostscript Installation:
cd /usr/src/gs5.03
ln -s unixansi.mak makefile
unzip jpeg-6a.zip
unzip lpng096.zip
tar -zxvf zlib-1.0.4.tar.gz
mv JPEG-6A jpeg-6a
mv libpng-0.96 libpng
mv zlib-1.0.4 zlib
cd jpeg-6a ; lowercase * ; cd ..
cd libpng ; lowercase * ; cd ..
make
Für den Canon BJC-610 und 620 sollte man unbedingt den bjc620-Patch vor dem "make" einspielen. (Vielen Dank für den Patch an Gernot Zander, hifi@scorpio.in-berlin.de)

X-Mame

Der MultiArcade Machine Emulator (MAME) sucht seine CHEAT.DAT in dem Verzeichnis, das in ~/xmame/xmamerc als mamedir angegeben ist.

Netscape

Nach dem Auspacken des Navigators installiert man Netscape wie folgt:
md /opt/netscape
md -p /opt/netscape/java/classes
mv *.nif /opt/netscape
mv *.jar /opt/netscape/java/classes
cd /opt/netscape
for i in *.nif; do gzip -cd $i | tar -xvf -i; done
rm *.nif
Wenn man kein Motif hat, dann: rm netscape-dynMotif
In /etc/profile.local trägt man dann noch das ein:
export MOZILLA_HOME=/opt/netscape

WindowMaker

Wenn man die Fensterumschaltung mit Alt-Tab wie unter MS-Windows will, dann muß man vor dem Kompilieren in src/wconfig.h.in das einstellen:
#define WEENDOZE_CYCLE
Und in ~/GNUstep/Defaults/WindowMaker diese Zeile hinzufügen:
WindozeCycling = YES

GCC (ehem. EGCS)

md /usr/src/gcc-obj
cd /usr/src/gcc-obj
/usr/src/gcc-2.95.1/configure --prefix=/opt/gcc
make bootstrap-lean
make install
Dann muß man noch diesen Link legen:
/lib/cpp -> /opt/gcc/lib/gcc-lib/i586-pc-linux-gnu/2.95.1/cpp

Empfehlenswerte Optionen auf einem Pentium sind:
-O3 -fstrict-aliasing -ffast-math -funroll-loops -march=pentium -fschedule-insns2

SANE

Man braucht auf jeden Fall SANE. Sehr zu empfehlen ist auch XSANE.
Beide Pakete werden so installiert:
./configure
make
make install
Man kann dann xscanimage sofort benutzen.
xsane muß (zumindest ich) so aufrufen:
LD_LIBRARY_PATH=/usr/local/lib/sane xsane
Wenn man xsane als Gimp-Plugin verwenden will, dann ist noch das nötig:
ln -s /usr/local/bin/xsane /usr/local/lib/gimp/1.0/plug-ins/xsane

Libraries

GGI-Lib installieren

cd ggi-devel-990111/degas/lib/libgii
./configure
make
make install
cd ggi-devel-990111/degas/lib/libggi
./configure
make
make install
ldconfig

MESA-Lib installieren

make linux-386-elf
cp -r include/* /usr/local/include
chmod 444 /usr/local/include/GL/*
cp -d lib/* /usr/local/lib
ldconfig

Emulatoren

Es gibt für Linux viele Emulatoren für alle mögliche Systeme. Es lohnt sich also ein Blick in einen SunSite-Mirror unter "sunsite.unc.edu/system/Emulators".

DOSEMU

Dosemu bildet alle PC-Ressourcen auf Linux ab und ist damit nur auf Intel-Maschinen benutzbar aber dafür auch sehr schnell.
Zur Installation im Source-Verzeichnis:
./configure ; make ; make install
Unter DOS: sys a: und auch fdisk.exe und sys.com auf eine Disk kopieren. Dann "dos -A" und mit fdisk in c: den Bootsektor schreiben und "sys c:".
Um vom Dosemu aus den XEmacs als Editor benutzen zu können verwende ich emuedit.

Wine

Wine setzt alle Windows-Systemaufrufe in X11-Aufrufe um und erreicht damit eine erstaunliche Geschwindigkeit.

Installation von Hand:
cp server/wineserver /usr/local/bin/wineserver
cp windows/x11drv/wineclipsrv /usr/local/bin/wineclipsrv
cp wine /usr/local/bin/wine
cp loader/dos/dosmod /usr/local/bin/dosmod
cd documentation
cp wine.man /usr/local/man/man1/wine.1
cp wine.conf.man /usr/local/man/man5/wine.conf.5

Für einen Fehlerreport startet man ein Programm so:
wine -debugmsg +relay xyz.exe >& /tmp/wine.debug
und postet die letzten Zeilen mit "Call" und "Return" nach comp.emulators.ms-windows.wine.

Bochs

Bochs setzt keine Systemaufrufe um wie Dosemu oder Wine, sondern emuliert einen x86-Prozessor samt Bios und anderer Hardware. Das hat den Vorteil, daß eigentlich jede Software damit funktioniert und auch Bochs nicht auf Intel-Hardware angewiesen ist, aber dafür ist Bochs auch deutlich langsamer als Dosemu oder Wine.
Konfiguration von Bochs:

System-Konfiguration

Kernel-Einstellungen

Das sollte man unbedingt einschalten:
General setup:
- Networking support
- System V IPC
Networking options:
- TCP/IP networking
- IP: Drop source routed frames
- IP: Allow large windows (not recommended if <16Mb of memory)
(sonst alles aus!)
Network device support:
- Network device support
- Dummy net driver support (M)
- PPP (point-to-point) support (M)
(sonst alles aus!)
Character Devices:
- Advanced Power Management BIOS Support und "Power off on shutdown" wenn man will, daß sich der Rechner beim HALT ausschaltet.
Sound:
[*] Generic OPL2/OPL3 FM synthesizer support
[*] Support for MAD16 and/or Mozart based cards
[*] /dev/dsp and /dev/audio support
[*] MIDI interface support (Aber nur wenn man MIDI auch einsetzt!)
[*] FM synthesizer (YM3812/OPL-3) support
(530) MAD16 audio I/O base 530, 604, E80 or F40
(7) MAD16 audio IRQ 7, 9, 10 or 11
(3) MAD16 audio DMA 0, 1 or 3
(0) MAD16 second (duplex) DMA 0, 1 or 3
(0) MAD16 MIDI I/O base 300, 310, 320 or 330 (0 disables)
(9) MAD16 MIDI IRQ 5, 7, 9 or 10
(65536) Audio DMA buffer size 4096, 16384, 32768 or 65536
(sonst alles aus)

Bootvorgang / Programme starten

Wenn man eigene Programme und Dienste beim Systemstart automatisch starten will, dann sollte man erst wissen, wie das System bootet: Es werden vom init-Prozeß den Runlevels entsprechend die Files /sbin/init.d/boot, /sbin/init.d/boot.local und dann alle Files die mit "S" beginnen in /sbin/init.d/rc2.d gestartet.
Hier erkennt man auch, daß es falsch wäre in /sbin/init.d/boot.local z.B. den squid zu starten, denn es fehlen ja noch wichtige Systemdienste, wie z.B. syslog.
Deshalb ist es ratsam in /sbin/init.d/rc2.d dafür folgende Links anzulegen:
ln -s ../local.setup S90local
ln -s ../local.setup K90local
und das File /sbin/init.d/local.setup, in dem dann alle gewünschten Programme am Ende des Bootvorgangs gestartet werden.
Darin wird ein Programm für das USR Message Modem aufgerufen:
/usr/local/bin/usr-mm-check
Und dann habe ich noch für das USR Message Modem ein Skript in /sbin/init.d, um in den autarken Modus zu schalten:
/usr/local/bin/usr-smp

Netzwerk-Konfiguration, die auch für Rechner notwendig ist, die keine Netzverbindung haben

Empfehlenswert ist das Buch "TCP/IP Network Administration" aus dem O'Reilly-Verlag
Auch Rechner ohne Netzverbindung oder mit einer zeitweisen Netzverbindung, wie etwa durch PPP brauchen eine korrekte Netzkonfiguration.

Drucker-Konfiguration (ohne apsfilter oder magicfilter)

mkdir /var/spool/lpd /var/spool/lpd/myprinter
chown lp.lp /var/spool/lpd /var/spool/lpd/myprinter
chmod ug=rwx,o=rx /var/spool/lpd /var/spool/lpd/myprinter
cd /var/spool/lpd/myprinter
touch .seq errs status lock
chown lp.lp .seq errs status lock
chmod ug=rw,o=r .seq errs status lock


Files:
Die Datei /etc/printcap (sollte "-rw-r-r-" sein.) ist selbsterklärend. (Es gibt allerdings Zeitgenossen, die alles in eine Zeile ohne Kommentare schreiben... tja...) Damit wird die Verbindung von Druckername und Filter hergestellt.
Ein Filter nimmt den Standard-Input, führt eine Aktion aus und gibt das Resultat auf Standard-Ausgabe aus. Ein Filter, der Postscript entgegen nimmt und für einen BJC-600 aufbereitet sieht so aus:
#!/bin/sh
/usr/bin/gs -q -dSAFER -dNOPAUSE -r360x360 -sDEVICE=bjc600 -sPAPERSIZE=a4 -sOutputFile=- -
Zu beachten ist noch, daß der Filter die richtigen Ausführungsrechte hat.
Bei mir: "-rwxr-xr-x root.root".
Erster Versuch:
lpd
ls -l | lpr -Pmyprinter
Wenn das klappt, dann sollte man den "lpd" beim Systemstart starten lassen.

INETD-Konfiguration

In /etc/services stehen die Dienste, die der Rechner zur Verfügung stellt inklusive der Portnummern. In /etc/inetd.conf steht dann welches Programm der inetd starten soll, wenn jemand an einem bestimmten Port ankommt. Änderungen werden durch Neustart des inetd wirksam: kill -HUP pid

Beispiel:
/etc/services:
fortune 7777
/etc/inetd.conf:
fortune stream tcp nowait nobody /usr/bin/fortune
Und dann:
telnet localhost 7777
(Sollte prinzipiell funktionieren.)

Tastatur (Delete und Backspace)

Mit dem nachfolgenden funktionieren Backspace und Delete wie erwartet in allen (!) Applikationen, sowohl auf der Console, als auch im XTerm und auch mit Motif-Applikationen. Wenn jemand ein Gegenbeispiel findet, dann möge er sich bei mir melden!

Zum Testen der Einstellungen eignen sich:
- xmodmap -pke
- xev
- showkey
- xkeycaps (Damit kann man auch ändern!)

Einstellungen in folgenden Files:

/usr/local/bin/localkeydefinitions (In /sbin/init.d/local.setup starten)
~/.inputrc (Das ist ab SuSE 5.1 nicht mehr nötig.)
~/.Xdefaults (Müssen natürlich auch geladen werden: xrdb -merge ~/.Xdefaults)
Für SuSE 6.0 lade ich zu der Standard-.Xdefaults noch meine ~/.Xdefaults.private
~/.Xmodmap (Starten mit: xmodmap ~/.Xmodmap)
Für SuSE 6.0 verwende ich diese ~/.Xmodmap
Weitere Informationen
Umfassende Informationen

Benutzer-Einstellungen (Shell, X11)

Als normaler Benutzer verwende ich für den Systemstart folgende Dateien:
~/.Xresources
~/.bashrc
~/.profile
~/.xinitrc
~/.xserverrc
~/.xsession

FVWM2

In /usr/X11R6/lib/X11/fvwm2/.fvwm2rc stehen die Standard-Einstellungen. Wenn aber ein ~/.fvwm2rc existiert, dann wird dieses verwendet.

HTTPD / WWW-Server konfigurieren


WWW-Cache: Squid (squid-1.1.21)

Gründe für einen lokalen WWW-Cache:
Bemerkung: Mit Squid ab Version 2 funktioniert die Offline-Funktion nicht mehr. Deshalb rate ich für diesen Zweck zu WWWOffle.

Einrichtung:
./configure --prefix=/usr/local/squid
make all
make install
Dann kann man /usr/local/squid/etc/squid.conf bei Bedarf ändern. Es muß auch noch ein User für squid und WWW-Dienste eingerichtet werden (bei mir User "www" in der Gruppe "infosys") und ein Zuständiger für den Cache (bei mir webmaster).
Schließlich wird Squid gestartet:
/usr/local/squid/bin/squid -s -D &
Wenn man eine Internet-Anbindung über einen Provider mit Firewall nutzt (das wird wohl immer so sein), dann muß man Squid so einstellen, daß alle Anfragen von dem WWW-Proxy des Providers geholt werden.
Ich habe folgende Änderungen an meiner /usr/local/squid/etc/squid.conf vorgenommen:

cache_host wwwcache.informatik.tu-muenchen.de parent 8009 3130
cache_host atrbg17.informatik.tu-muenchen.de parent 3128 3130
cache_host proxy.lrz-muenchen.de parent 8080 3130
inside_firewall none
local_domain sl.de
local_ip 172.16.0.0
neighbor_timeout 10
ftpget_program /usr/local/squid/bin/ftpget
reference_age 0
cache_mgr webmaster
cache_effective_user www infosys
refresh_pattern . 0 100 525600
negative_dns_ttl 0

Man kann auch eine WWW-Kompression mit der Secure Shell erreichen.
Die Refresh-Age-Einstellung bewirkt, daß erst Daten aus dem Cache entfernt werden, wenn das Plattenplatz-Limit erreicht ist.
Das Refresh-Pattern besagt, daß Daten ein Jahr im Cache liegen bleiben können. Der Zeitraum ist aus praktischen Gründen so lang gewählt. Wenn man sich ansieht, wie alt neu empfange Objekte sind, dann kommt man zu dieser langen Einstellung. Der Zeitstempel "Modified" gibt an, wann das Object (auf dem Server) geändert wurde und das kann schon sehr lange zurückliegen. Zum Beispiel ist meine Home-Page auch schon ca. 1 Monat alt und würde vom Squid in der Standard-Einstellung sehr bald (ca. alle 5 Tage) neu geladen werden:
180. http://www.leo.org/~loescher/
Verified 1W ago, Used 1W ago, Modified 1M ago, Expires NEVER,
3604 bytes, 0 accesses, 0 active clients,
STORE_OK, NOT_IN_MEMORY, SWAP_OK, PING_NONE,
0 Locks, Flags: EC,KU,HT
Mit dieser Einstellung kann man jetzt bestens offline WWW-Surfen.
Aber keine Angst: Der Squid prüft sehr wohl, ob seine Objekte noch "frisch" sind wenn er online ist!

Als Proxy müssen jetzt alle WWW-Clients localhost:3128 verwenden und am besten als "No-Proxy" den lokalen Rechner eingetragen haben.
Für Lynx muß man in /usr/lib/lynx.cfg diese Zeile eintragen:
http_proxy:http://localhost:3128/

Für die nette Zusatzfunktion "Cache-Manager" kann man man noch /usr/local/squid/bin/cachemgr.cgi nach /httpd/cgi-bin/cachemgr.cgi kopieren und sich dann per http://localhost/cgi-bin/cachemgr.cgi mit Squid "unterhalten". (Für sensible Daten sollte man aber in squid.conf Paßwörter vergeben.)

WWW-Cache: WWWOffle

Gründe für einen lokalen WWW-Cache:
Bemerkung: Wenn der Rechner immer online ist, dann empfehle ich Squid.

Zur Einrichtung braucht man nur diese Zeilen in /etc/wwwoffle/wwwoffle.conf ändern:
# Bei Options:
connect-retry = yes
# Bei StartUp:
http-port = 3128
# Bei Proxy:
http://* = localhost:1300
ftp://* = localhost:1300
# Bei Purge:
max-size = 200
default = 365
Dabei ist der Proxy bereits auf einen komprimierten SSH-Tunnel eingestellt.

Sendmail

Kurzfassung für SuSE 6.0 ohne SuSE-Automatik:
In /etc/rc.config: SENDMAIL_TYPE="no"
In /etc/mail/linux.mc:
FEATURE(`nodns')dnl
FEATURE(`nocanonify')dnl
define(`SMART_HOST', `mailrelay.informatik.tu-muenchen.de')dnl
MASQUERADE_AS(`informatik.tu-muenchen.de')dnl
FEATURE(`masquerade_envelope')dnl
und dann:
m4 /etc/mail/linux.mc > /etc/sendmail.cf

Kurzfassung für SuSE 6.0 mit SuSE-Automatik:
In /etc/rc.config:
SMTP="yes"
SENDMAIL_TYPE="yes"
SENDMAIL_SMARTHOST="mail.provider.de"
# oder für GMX: SENDMAIL_SMARTHOST="esmtp:mail.gmx.net"
SENDMAIL_LOCALHOST="localhost"
SENDMAIL_RELAY=""
SENDMAIL_ARGS="-bd -om"
SENDMAIL_EXPENSIVE="no"
SENDMAIL_NOCANONIFY="no"
# Absenderadresse soll der Domainname des Providers sein und nicht
# der des lokalen Rechners:
FROM_HEADER="gmx.de"
Die Sender-Zeile im Mailheader kann durch /etc/mail/genericstable ausgetauscht werden:
loescher       loescher@leo.org
Das muß man unbedingt verwenden, wenn man z.B. von "root" Mails über GMX verschickt, da GMX keine Mails annimmt, die von "root" kommen. Das muß auf einen User bei GMX gemappt werden:
root       loescher@gmx.de
Abschließend immer SuSEconfig aufrufen.

Ausführliche Anleitung und Details für SuSE 4.4:
Anschließend muß man ein neues Konfigurationsfile erzeugen:
m4 /etc/sendmail.config/m4/cf.m4 /etc/sendmail.config/cf/sl.mc > /etc/sendmail.cf
Wichtig ist dann natürlich, daß man dem SuSEconfig in /etc/rc.config verbietet, die /etc/sendmail.cf zu erstellen: SENDMAIL_TYPE=no
Und nicht vergessen: Sendmail killen und neu starten! Sonst ändert sich nach den Änderungen gar nichts:
killproc -TERM /usr/sbin/sendmail
/usr/sbin/sendmail -bd -q1m -om


Zum Testen der sendmail-Konfuguration eignen sich besonders die beiden Aufrufe:
sendmail -bv <mailaddress> (Verify names)
und
sendmail -bt (Addess test)

Wem diese Info nicht reicht findet in der Sendmail-Dokumentation oder in dem Buch "Sendmail" aus dem O'Reilly-Verlag alles Wissenwerte.
Weitere Sendmail-Kurzanleitung (von Bernhard Hailer).

Fetchmail

Mit Fetchmail kann z.B. von einem POP3-Account Mail abholen. Das geht mit folgender ~/.fetchmailrc:
poll mailhost.provider.de with protocol pop3 fetchall
Man kann damit Mail auch verschlüsselt und komprimiert über einen SSH-Tunnel laufen lassen.

News (INN)

Es gibt zu diesem Thema folgende Werke:
"Das Usenet anzapfen" von Bernhard Hailer
Deutsches News HOWTO
Anleitung von Markus Dickebohm (hier gibt es auch Newsflash)
Anleitung von Christoph Kania
Anleitung von Chris Blum
Anleitung von Carsten Voss
Anleitung von Carsten Voss (anderer WWW-Server)
Erweiterung von INN um mehrere Newsserver
News unter Linux

Meine Anleitung:

FTP

FTP für Benutzer funktioniert bereits.
Informationen gibt es per "man in.ftpd" oder "man wu.ftpd". Folgendes ist einzustellen für Anonymous-FTP:
mkdir /home/ftp
chdir /home/ftp
mkdir bin etc lib pub
chmod 444 /home/ftp bin etc lib
chmod 775 /home/ftp/pub
cp /bin/ls /home/ftp/bin
cp /etc/passwd /etc/group /etc/ld.so.cache etc
# Dann löscht man aus der Paßwort- und Gruppendatei alles heraus,
# bis auf den User "ftp" und die Gruppe "users".
cd lib
cp /lib/ld-linux.so.1 /lib/libc.so.5.2.18 .
ln -s libc.so.5.2.18 libc.so.5
chmod 111 /home/ftp/bin/ls
chmod 444 /home/ftp/etc/*
chmod 555 /home/ftp/lib/*
Wenn man den wu.ftp verwendet, dann funktioneren auch Messages und der Banner, den man in /etc/ftpaccess einstellen kann.
Welcher FTP-Dämon gestartet wird ist in /etc/inetd.conf eingetragen.

Fonts installieren


NCR53c400a-SCSI-Karte verwenden

Die NCR53c400a-SCSI-Karte, die bei HP-Scannern, wie dem HP-ScanJet IIcx mitgeliefert wird, wird nicht direkt von Linux unterstützt. Man braucht dazu erst den Patch 53c400a-patch-0.2. (Eine neue, von mir nicht getestete Version gibt es hier)
Aber das reicht auch noch nicht, denn der 53c400a muß durch bestimmte IOs freigeschaltet werden, bevor er vom normalen 53C400-Treiber erkannt wird. Das macht für Mustek-Karten der Patch, bei HP gibt es den mitgelieferten DOS-ASPI-Treiber "mini400i.sys", der das macht. Also muß man unbedingt vor dem Linux-Start unter DOS die Karte initialisieren und dann per Loadlin Linux starten.
Aber man sollte von der NCR-Karte nicht zuviel erwarten. Da sie keine Interrupts unterstützt wird Linux ziemlich unbenutzbar beim Scannen.

Zeitzone einstellen

Für Deutschland stellt man die Zeitzone CET oder MET ein.
Dazu erstellt man einen Link:
ln -s /usr/lib/zoneinfo/CET /usr/lib/zoneinfo/localtime
bzw. unter SuSe in /etc/rc.config:
TIMEZONE=CET
Desweiteren muß man in /etc/rc.config noch GMT="-u" eintragen. Die Rechneruhr stellt man auf UTC (=GMT) ein.
CET ist eine Stunde nach UTC, also Zeitzone +0100.
Also setzt man zurerst die Uhr auf GMT, indem man (in Deutschland) eine Stunde von der lokalen Zeit abzieht. Wenn es jetzt 18:00h ist, dann muß man die Uhr auf 17:00h stellen, z.B.:
date -s '1997-10-30 17:00:00' +'%Y-%M-%d %T'
Dann die CMOS-Uhr auf die aktuelle Zeit (in GMT) setzen:
clock -w
Dann kann man per clock -us die GMT-Zeit der CMOS-Uhr in lokale Systemzeit setzen lassen. Sommer-/Winterzeit-Umstellung sollte in Zukunft automatisch erfolgen.
Zum Stellen der Uhr unter Verwendung von anderen Rechnern kann man "netdate", "ntpdate" oder "xntp" benutzen.
Wenn man selbst als Timeserver fungieren will, dann müssen in /etc/inetd.conf die Zeilen stehen:
time stream tcp nowait root internal
time sdgram udp wait root internal
Die Zeit kann man einfach holen: netdate tcp rechnername

UMSDOS

Vorweg eine Warnung: Ich habe sehr schlechte Erfahrungen mit UMSDOS gemacht und verwende es nicht mehr! Es ist wirklich Beta und außerdem "Benutzer-fehlerträchtig"! Man sollte tunlichst aufpassen, daß man mit den "--linux-.---"-Files nichts durcheinanderbringt. Typische Fehler sind: Wenn jemand nur lange Dateinamen haben will, dann sollte er VFAT nehmen.
Nun aber doch das How-To:

Images von Platten mit dem Loopdevice mounten (oder auch MTools)

Zuerst muß man das loopback-Device in den Kernel eincompilieren und, z.B. ein Image einer Diskette erstellen:
dd if=/dev/fd0 ibs=512 of=/tmp/MeineDisk

Dann kann man das Image so mounten:
mount /tmp/MeineDisk /mnt/disk -t msdos -o loop

Wenn die automatische Erkennung des Mediums nicht funktioniert, dann sollte man sich mit fdisk das "Medium" mit "p" (Print partition table) anschauen:
prompt> fdisk /tmp/disk
Disk /tmp/disk: 0 heads, 0 sectors, 0 cylinders Units = cylinders of 1 * 512 bytes Device Boot Begin Start End Blocks Id System /tmp/disk1 * 1 33 444416 222192 6 DOS 16-bit >=32M
Wenn man also die erste Partition im File "/tmp/disk" mounten will, dann muß man einen Offset angeben, der sich aus "Start-1" mal "Units" berechnet, also im Beispiel: 32*512=16384. Der Aufruf lautet dann:
mount /tmp/disk /mnt/a -t msdos -o offset=16384

Wenn ich ein Bochs-HDD-Image mounten will, das so aussieht:
Disk /tmp/BochsHDD: 0 heads, 0 sectors, 0 cylinders
(Mit tatsächlich 15 heads, 17 sectors, 900 cylinders)
Units = cylinders of 1 * 512 bytes
Device          Boot   Begin    Start      End   Blocks   Id  System
/tmp/BochsHDD4     *        1       18   229245   114614    6  DOS 16-bit >=32M
    
Dann muß man einen Offset von (17*512)Bytes angeben:
mount /tmp/BochsHDD /mnt/bochs -t msdos -o offset=8704

Für die MTools reicht dann ein analoger Eintrag in ~/.mtoolsrc:
drive c: file="/tmp/BochsHDD" offset=8704

Benutzer und System-Verwalter einrichten

Es gibt täglich Aktionen, die ein (möglicherweise privilegierter) Benutzer ausführt, wozu er normalerweise nicht berechtigt ist, zum Beispiel das Mounten einer CDROM oder das Starten einer PPP-Verbindung.
Die meisten Rechte sind bei mir durch Gruppen geregelt.

X11 absichern

Um X11 gegen Abhörversuche durch andere Benutzer abzusichern und um zu verhindern, daß andere Benutzer auf einem X-Server Fenster öffnen, muß man nur ein File "/usr/X11R6/lib/X11/xinit/xserverrc" anlegen:
#! /bin/sh
authfile=$HOME/.Xauthority
xauth -f $authfile add :0 . `mcookie`
exec X -auth $authfile "$@"
Ab jetzt wird ein cookie verwendet. Wer den cookie nicht kennt, kann keine Fenster aufmachen oder abhören.
Allerdings kann jetzt nicht einmal mehr root ein Fenster aufmachen. Wenn man das will, dann muß man in der .profile (oder ähnlichem) von root dafür sorgen, daß er das gleiche .Xauthority nutzt, wie der User.

Device-Filesystem (devfs)

Das Device-Filesystem stellt die Geräte in /dev nach einem neuen Namens-Schema dar.
Damit gehört die unpraktische und gefährliche Numerierung sga, sgb, sgc, ... der Vergangenheit an.
Details zu den Vorteilen gibt es in der FAQ zu devfs.
Mit devfs werden z.B. SCSI-Platten so angesprochen: /dev/scsi/host1/bus0/target6/lun0/part8, aber man kann auch praktische Links legen, was mein devfs-setup erledigt.
Außerdem kann man mit dem optionalen Dämon devfsd beim Zugriff auf Devices Aktionen definieren. Das wird einfach in /etc/devfsd.conf eingetragen.
Der devfsd ist auch wichtig, wenn man die alten Gerätenamen noch nutzen will.

ALSA - Advanced Linux Sound Architecture

Diese Anleitung bezieht sich auf Version 0.5.1a bis 0.5.3 (und evtl. höher) und den "trident"-Chipsatz in der Hoontech SoundTrack Digital 4DWave NX ( Hoontech).
Eine kleine Randnotiz zum S/PDIF-Kabel: Das sind bei mir 9 Meter dünnes Antennenkabel (75 Ohm Wellenwiderstand) von der Hoontech zum DAT. Damit sollten auch 20 Meter kein Problem sein. Man kann auch ein Netzwerkkabel RG 59 (75 Ohm) nehmen.

RAID / Multiple Devices (MD)


© Stephan Löscher, 1 Apr 2000