Tipps für Linux

Inhalt:

  1. Vorwort
  2. Literatur
  3. Serielle Verbindungen
    1. Nullmodem
    2. Modem-Verbindungen
    3. Modem-Callback
    4. PPP
    5. PPP-Server mit Telnet/Chat
    6. PPP-Server mit purem PPP
    7. PPP-Nullmodem-Verbindung
    8. Serielle Konsole
  4. Booten
    1. Bootdisk
    2. Bootsektor kopieren
    3. LILO
    4. Init-Parameter
    5. Rechner ohne Platte booten
    6. Fehlermeldungen beim Booten
    7. NFS-Root
    8. Linux über Windows mit Loadlin 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 und Reset
    5. Suid-Scripten
    6. Swap (Paging)
    7. "Zerstörte" Terminals
    8. Patch mit Diff erstellen
    9. Inode-Anzahl einstellen
    10. Tipps 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
    16. Die C-Bibliothek libc
    17. DMA
    18. Konsole sperren mit vlock
    19. Domain mit whois abfragen
    20. Screen
    21. Sicheres Programmieren
  7. Software
    1. Perl
    2. LaTeX (teTeX) einrichten
    3. StarOffice
    4. PovRay
    5. finddupe
    6. c't-Rom
    7. XEmacs einrichten und Tipps
    8. WGet
    9. Sound-Programme
    10. RPM
    11. Rosegarden
    12. Vacation / Procmail
    13. Mail weiterleiten mit Procmail
    14. Email: Mailen von der Kommandozeile
    15. cdda2wav
    16. PGP
    17. TCP-Wrapper
    18. SSH (Secure Shell)
    19. Faxen
    20. MGetty
    21. VGetty als Anrufbeantworter
    22. CVS
    23. LaTeX2HTML
    24. Ghostscript
    25. X-Mame
    26. Netscape
    27. Mozilla / Firefox
    28. WindowMaker
    29. GCC (ehem. EGCS)
    30. SANE
    31. MySQL
    32. VMWare
    33. xmove
    34. VDR (Video Disk Recorder)
    35. Bildbearbeitung
    36. Video aufzeichnen
  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. Nameserver mit Bind 8
    5. Nameserver mit Bind 9
    6. Drucker
    7. Drucker einrichten mit CUPS
    8. INETD
    9. Tastatur (Delete und Backspace)
    10. Benutzer-Einstellungen (Shell, X11)
    11. FVWM2
    12. HTTPD / WWW-Server
    13. WWW-Cache: Squid
    14. WWW-Cache: WWWOffle
    15. Sendmail
    16. Postfix
    17. Fetchmail
    18. News (INN)
    19. FTP
    20. Fonts installieren
    21. NCR53c400a-SCSI-Karte verwenden
    22. Zeitzone einstellen
    23. NTP
    24. UMSDOS
    25. Images von Platten mit dem Loopdevice mounten (oder auch MTools)
    26. Benutzer und System-Verwalter einrichten
    27. Device-Filesystem (devfs)
    28. ALSA
    29. RAID / Multiple Devices (MD)
    30. Samba
    31. NFS (Network File System)
    32. Automounter (autofs)
    33. PAM (Pluggable Authentication Modules)
    34. IP-Masquerading / Network Address Translation (NAT)
    35. Firewall
    36. Verschlüsseltes Dateisystem
    37. Software Suspend
    38. Tipps zu Gentoo
    39. WLAN
  11. Meine Programme
  12. Alle referenzierten Links dieser Seite als tar.gz-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. 1997 wurde die Suse 4.2 durch eine 4.4.1 mit Kernel 2.0.28 ersetzt. 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.1 mit Kernel 2.0.33 und libc.so.5.4.7.
Bis ca. März 2001 lief dann SuSE 6.0 mit Kernel 2.0.33 und glibc.
Seit ca. März 2001 arbeite ich mit SuSE 7.1 und Kernel 2.4.6.
Der Pentium 200 verichtet immernoch brav seinen Dienst mit Suse 7.1 und inzwischen einen Kernel 2.4.25
Auf meinem VDR habe ich zwar mit Suse begonnen, aber im November 2004 auf Gentoo umgestellt und mit damit wesentlich zufriedener. In 2005 habe ich dann noch mein altes Notebook (Celeron-500) mit Gentoo beglückt. Daher beziehen sich alle neueren Tipps auf Gentoo, aber das werden mir die Suse-Nutzer sicherlich verzeihen.
Kommentare (und Fehlerberichtigungen) sind immer willkommen, am besten per Mail: loescher@gmx.de
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 Documentation Project
Unix-Einführung
Firewall Handbuch für LINUX 2.0 und 2.2
Open Books von O'Reilly

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.

Modem-Callback

Für einen Verbindungsaufbau im Callback-Verfahren braucht man nur einen aktuellen mgetty. Bei diesem ist ein Programm namens callback dabei. Das kompiliert man und kopiert z.B. nach /usr/local/sbin/callback.
Man braucht dann noch diesen Eintrag in /usr/local/etc/mgetty+sendfax:
CALLBACKUSER   -   -   /usr/local/sbin/callback -S TELEFONNUMMER
Also z.B.:
loescher   -   -   /usr/local/sbin/callback -S 08912345
callback hat auch noch ein Konfigurationsfile /usr/local/etc/mgetty+sendfax/callback.config:
dialout-devices modem
retry-time 30
max-time 90
debug 9
dial-prefix ATX3DT
Dann kann man diesen Rechner anrufen und als User "loescher" eingeben. Es wird dann aufgelegt und die Telefonnummer 08912345 zurückgerufen.
Um eine PPP-Verbindung damit aufzubauen, dient dieses Chat-Script auf Clientseite als Grundlage:
ABORT BUSY
"" ATZ
OK ATDTnummer_des_callback_servers
TIMEOUT 120
CONNECT ""
ogin: callbackusername
RING ATA

PPP


PPP-Server mit Telnet/Chat einrichten

ACHTUNG: Folgende Anleitung stimmt nicht mehr! Ich bekomme vom pppd immer die Fehlermeldung: "Unauthorized remote IP address"
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 - Network Administration Guide von Olaf Kirch):
In /etc/passwd:

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

(Natürlich bei Bedarf mit anderen uid und gid.)
Der User "ppp" muß evtl. auch noch in der Gruppe "dialout" sein, da er sonst den "pppd" nicht ausführen kann. 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

PPP-Server mit purem PPP einrichten

Zuerst konfiguriert man den mgetty um Modem-Verbindungen zu ermöglichen.
Dann aktiviert man in /etc/mgetty+sendfax/login.config das AutoPPP, sodaß mgetty direkt PPP-Verbindungen annimmt:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap debug 192.168.1.1:192.168.1.2
Die IP-Adressen dürfen nicht aus dem lokal und remote verwendetem Netz stammen.
In /etc/ppp/pap-secrets muß man auf dem PPP-Client eine PPP-Benutzerkennung und -Kennwort eintragen, z.B.:
ppptestuser * ppptestkennwort
Auf dem Server trägt man die gleiche Zeile ein und kann dahinter noch die IP-Adresse angeben, die der Client erhalten soll. Man kann auch "*" eintragen und damit die vom Client vorgegebene Adresse übernehmen:
ppptestuser * ppptestkennwort *
Dann kann man vom Client eine Verbindung aufbauen:
pppd lock bsdcomp 15,15 debug crtscts netmask 255.0.0.0 /dev/modem 115200 asyncmap 0 nodetach user ppptestuser

PPP-Nullmodem-Verbindung

Auf dem Server muß folgendes eingerichtet werden: Dann kann man auf dem Client die PPP-Verbindung mit diesem Kommando aufbauen:
pppd lock bsdcomp 15,15 debug crtscts netmask 255.0.0.0 /dev/nullmodem 115200 asyncmap 0 nodetach connect '/usr/sbin/chat "" "\r" ogin: ppp assword: geheimnis'
Zwei PCs mit Siemens-Gigaset verbinden:
Basisstation:
pp:23:respawn:/usr/sbin/pppd /dev/ttyS1 115200 crtscts silent nodetach local passive 10.10.10.1:10.10.10.2 mtu 296 mru 296
PC als Teilnehmer:
pp:23:respawn:/usr/sbin/pppd /dev/ttyS1 115200 crtscts nodetach local passive 10.10.10.1:10.10.10.2 mtu 296 mru 296

Serielle Konsole

Wenn man bereits den LILO über die serielle Konsole bedienen will, dann muß das in den globalen Abschnitt von /etc/lilo.conf:
serial = 0,9600n8
Dem Kernel sagt man mit diesen Parametern, daß eine serielle Konsole verwendet werden soll:
append = "console=ttyS0,9600n8 console=tty0"
(Natürlich muß dazu im Kernel CONFIG_SERIAL_CONSOLE aktiviert sein.)
Wenn man sich dann auch noch am System anmelden will, dann muß diese Zeile in die /etc/inittab:
nu:123:respawn:/usr/local/sbin/mgetty -r -s 9600 nullmodem oder
7:2345:respawn:/sbin/getty ttyS0 DT9600 Für getty braucht man evtl. noch die Ergänzungen in /etc/conf.getty.ttyS0:
DEBUG=777
CLEAR=NO
WAITFOR=\r

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

LILO kann man auch über den NT-Bootloader starten. Dazu läßt man LILO nicht direkt auf Platte schreiben, sondern in ein File:
lilo -s /tmp/linux.bin
und kopiert dieses File nach C:\. Dann muß man nur noch in die C:\boot.ini von NT im Abschnitt [Operating Systems] das eintragen:
c:\linux.bin="Linux starten"

Seit Version 21.x.x kann LILO Partitionen auch jenseits der 1024-Zylinder-Grenze booten. Man muß dazu nur das neue Schlüsselwort LBA32 in die lilo.conf eintragen.

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


NFS-Root

Mit loadlin:
valerie.img root=/dev/nfs rw vga=-2 nfsroot=192.168.1.1:/mnt4/iX-Terminal/valerie,rsize=4096,wsize=4096 nfsaddrs=192.168.1.8:192.168.1.1::255.255.255.0:valerie::none
Weitere Infos: /usr/src/linux/Documentation/nfsroot.txt

Linux über Windowss mit Loadlin booten

Man kopiert einfach loadlin.exe und einen Kernel nach c:\linux\ und erstellt folgende c:\config.sys:
[Menu]
menuitem=Win95, Windows 95 starten
menuitem=Linux, Linux starten
menudefault=Win95,15

[Linux]
shell=c:linux\loadlin.exe c:\linux\2217 root=/dev/sda5 ro

[Win95]
device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
Country=049,850,C:\WINDOWS\COMMAND\country.sys

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
Der dd kann auch die Übertragungsrate anzeigen, wenn man dem dd das Signal USR1 schickt.

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 und SCSI-Reset

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.

Einen SCSI-Reset (z.B. für ein hängendes Gerät) kann so ausgelöst werden:
cdrecord -reset
oder
cdrdao unlock --device 0,0,0

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 bei alten Kernels (vor 2.2.x mit x<17 (Wer weiss wann das genau geändert wurde?)) 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éYxyPÃâ`Y0;¤zIb!+ìÀyí-prríq`
"q^,wí ÉÞð+¼qó/62øaðvÀÃkó,ªxË·1t¥eÿ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.

Tipps für Postscript


Referenzen auf eine Homepage feststellen

kann man, indem man in Altavista oder Infoseek nach folgendem sucht:
link:www.loescher-online.de
Hotbot hat diese Funktion in der "Look for"-Auswahlbox.
Auch Google kann das über die erweiterte Suche.

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

Die C-Bibliothek

Der dynamische Linker ist ld.so.
Statische Bibliotheken enden auf .a, dynamische auf .so.
Wenn $LD_LIBRARY_PATH gesetzt ist, dann werden Bibliotheken in diesem Pfad gesucht.
Zum Debuggen kann man $LD_DEBUG auf help oder libs setzen.
ldd zeigt verwendete Bibliotheken eines Programmes an.
Die libc kann man auch am Prompt ausführen. Es wird die Version ausgegeben.
Mit $LD_PRELOAD kann man Bibliotheken laden, die Funktionen anderer Bibliotheken überschreiben, z.B.:
LD_PRELOAD=libmemusage.so /bin/ls

DMA für Festplatten

Feststellen, ob die EIDE-Platte DMA benutzt:
hdparm -cd /dev/hda
Umstellen:
hdparm -c1 -m16 -d1 -X68 /dev/hda
für Ultra-ATA/66 oder -X66 für Ultra-ATA/33.
Die maximalen Werte für -m erfährt man mit -i.

Konsole sperren mit vlock

Mit vlock kann man die Text-Konsolen sperren.

Domain mit whois abfragen

Mit z.B.
whois -h whois.denic.de loescher-online.de
kann man den Besitzer einer Domain herausfinden.

Screen

In einem Text-Terminal kann man mit screen mehrere Sessions gleichzeitig laufen lassen und diese auch nach einem Logout und späterem Login wieder fortsetzen.
Kurzanleitung:
1. Ganz normal anmelden, willkommen in Deiner Shell.
2. "screen" aufrufen. Es kommt eine Hinweismeldung, Taste drücken und Du bist wieder in Deiner Shell (allerdings in einer neuen, wie auch pstree zeigt).
3. Arbeite einfach drauf los.
4. Stürze mit deinem Client ab :-) oder schließe einfach das Terminal.
5. Neu anmelden. Danach "screen -r" aufrufen (wenn das nicht klappt, zuvor noch ein "screen -d").
6. Voila, willkommen in Deiner alten Session.
Wenn Du eine Session "weich" in den Hintergrund schicken willst, dann drückst Du Strg-a-d. Du kannst mehrere in den Hintergrund geschickt haben, dann mußt Du bei screen -r angeben, welche Session Du wiederhaben willst.
screen ist eine Gute Sache. Du kannst Programme starten, Dich abmelden und nach einem Tag mal wieder vorbeischauen, was die so machen.

Sicheres Programmieren

Folgende Punkte sollte man unter anderem bedenken, wenn man ein sicheres Programm oder Skript schreiben will:
Core-Dumps verhindern (ulimit -c 0 oder setrlimit())
umask 077
env -i (unset %ENV)
STDOUT und andere Descriptoren etc. schließen

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.0901.tar.gz
MD5-1.7.tar.gz
MIME-Base64-2.12.tar.gz
URI-1.18.tar.gz
libwww-perl-5.62.tar.gz
Tk400.202.tar.gz
sha-1.2.tar.gz
MLDBM-2.00.tar.gz
HTML-Tagset-3.03.tar.gz
HTML-Parser-3.25.tar.gz
HTML-TableExtract-1.07.tar.gz

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

Mit diesem fork()-Trick kann man in einem Perl-Programm STDIN schliessen:
if (fork() != 0)
{
  # Im Vaterprozess
  exit;
}
else
{
  # Im Kindprozess
  close(STDIN);
}

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.

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 Tipps

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 Tipps:

WGet

Ein universelles und leistungsgähiges Programm zum rekursiven WWW-Download ist WGet (wget-1.4.4). Meine Einstellungen finden sich in /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:
Nur pavuk ist noch wesentlich leistungsfähiger als wget. Damit sind z.B. auch Cookies möglich:
pavuk -fnrules F "*" "%n" -noRobots -progress -cookie_send -cookie_file ~/.netscape/cookies http:/www.....

Sound-Programme


RPM

RPM neu einrichten (auf alten nicht-RPM-basierten Systemen):
rpm-xx.xx.xx.i386.tar.gz installieren und
mkdir -p /var/lib/rpm
rpm --initdb
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

Email: Mailen von der Kommandozeile

Mit email kann man z.B. Bilder von der Kommandozeile einfach wegschicken:
echo "Hier sind die Bilder..." | email -s "Bilder" -a 01.jpg,02.jpg,03.jpg ziel@adresse.de
Man muss nur diese ~/.email.conf anlegen:
SMTP_SERVER = '127.0.0.1'
SMTP_PORT = '25'
MY_NAME = 'Stephan Loescher'
MY_EMAIL = 'meine_absender_adresse@provider.de'
# REPLY_TO = ''

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: Tipps 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
bzw:
a2ps --no-header --portrait -1 --output=- 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
wenn man das sendfax aus dem mgetty-Paket verwendet.
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.
Ein Fax als (evtl. mehrseitiges) TIFF kann man so in Postsrcipt umwandeln:
tiff2ps -a FAX.ifx > FAX.ps
DCX ist ein Fax-Format ähnlich PCX und kann z.B. von xnview angezeigt werden.

MGetty

Installieren mit emerge -avt mgetty.
Dann trägt man in /etc/mgetty+sendfax/faxheader seinen Faxkopf ein, also Name und Telefonnummer.
In /etc/mgetty+sendfax/mgetty.config habe ich folgendes geändert:
fax-id 49 8142 1234567
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
fax-owner root
fax-group uucp
fax-mode 0644
notify root
und in /etc/mgetty+sendfax/sendfax.config habe ich folgendes geändert:
fax-devices ttyS0
fax-id 49 8142 1234567
dial-prefix ATDT
# Speziell für Creatix LC144VF:
# modem-handshake AT&K3
Um einzelnen Benutzern das Faxen zu erlauben, trägt man diese entweder in /etc/mgetty+sendfax/fax.allow ein oder löscht diese Datei und legt eine leere Datei /etc/mgetty+sendfax/fax.deny an. Dann können alle Faxen.
Für Mails bei erfolgreichem oder fehlgeschlagenem Fax sollte man noch das in faxrunq.config eintragen:
success-send-mail y
failure-send-mail y
In /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 debug remotename auto-ppp-dialin
Zu letzterem braucht man noch diesen Eintrag in /etc/ppp/pap-secrets:
auto-ppp-dialin * geheim *
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 :10.3.3.99 -chap +pap debug remotename auto-ppp-dialin
Der Client muß dann beim pppd die Option "user auto-ppp-dialin" verwenden und diesen Eintrag in seiner /etc/ppp/pap-secrets haben:
auto-ppp-dialin * geheim
Zu guter letzt muß noch ein Eintrag in die /etc/inittab, um den mgetty zu starten:
# Für Modem (geht beim zweiten Klingeln an die Leitung)
mo:12345:respawn:/usr/sbin/mgetty -n 2 -s 115200 ttyS0
Und dann noch:
init q

VGetty als Anrufbeantworter

Vgetty ist im mgetty -Paket dabei. Zum Kompilieren wechselt man ins Unterverzeichnis voice und:
make
make install
cp voice.conf-dist /etc/mgetty+sendfax/voice.conf
Wichtig: VGetty liest auch die Datei /etc/mgetty+sendfax/mgetty.config ein und benutzt davon zum Beispiel die Option init-chat. In /etc/mgetty+sendfax/voice.conf habe ich dann folgendes geändert:
port_speed 115200
rings 2
dtmf_program /bin/dtmf.sh
voice_devices modem
VGetty wird einfach anstelle von megtty in initab eingetragen:
mo:123:respawn:/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
bzw. über ALSA:
rmdtopvf filename.rmd | pvfspeed -s 8000 | pvftowav | aplay -
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.loescher-online.de/">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.loescher-online.de/">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 -; done
rm *.nif
chown -Rh root.root *
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
Für besser lesbaren markierten Text sollte man in /opt/netscape/app-defaults/de/Netscape bzw. /usr/lib/X11/app-defaults/Netscape (wohin man das Netscape.ad kopieren kann) folgendes ändern:
*selectForeground:                     #FFFFCC
*selectBackground:                     #000000
Welche Plugins installiert sind, kann man durch den URL about:plugins feststellen.

Mozilla / Firefox

Die Tastatur-Belegung kann man umstellen von CRTL auf ALT, indem man als URL about:config eingibt und darin das ändert:
user_pref("ui.key.accelKey", 18);
user_pref("ui.key.menuAccessKey", 17);
oder man kann es auch direkt in seinem Home im File prefs.js eintragen.

WindowMaker

Wenn man die Fensterumschaltung mit Alt-Tab wie unter MS-Windows will, dann muß man vor nach dem ./configure und 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
Wenn man einen Scanner übers Netz freigeben will, dann muß man serverseitig das einstellen:
In /etc/sane.d/saned.conf den Namen des/der Clients eintragen und in /etc/xinetd.d ein File namens saned anlegen:
service sane-port
{
   port        = 6566
   socket_type = stream
   wait        = no
   user        = root
   group       = root
   server      = /usr/sbin/saned
   only_from   = mein.client.der.zufgreifen.darf.de nochein.client.de
   disable     = no
}
Und diese Einträge in /etc/services braucht man noch:
sane-port       6566/tcp
sane-port       6566/udp
Dann xinetd durchstarten.
Und auf Client-Seite:
In /etc/sane.d/net.conf muß man den Rechnernamen des Servers eintragen.

MySQL

shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('xxx') WHERE user='root';
mysql> FLUSH PRIVILEGES;

mysql -u root -p
> CREATE DATABASE IF NOT EXISTS tele;
> use tele
> CREATE TABLE tele(name VARCHAR(130), vorwahl VARCHAR(6), nummer VARCHAR(9));
> SHOW DATABASES;
> SHOW TABLES FROM tele;
> SHOW COLUMNS FROM tele;

shell> mysqlimport --local tele tele.txt -p
shell> mysql -e 'SELECT * FROM tele' tele -p

select * from tele where name like "%löscher%";

VMWare

Wenn irgendetwas nicht funktioniert, dann mit -vv aufrufen.

xmove

Mit xmove kann man X-Clients von einem X-Server auf einen anderen verschieben. Einfaches Beispiel:
A: xmove
A: xhost +
A: DISPLAY=localhost:1 xterm &
A: DISPLAY=localhost:1 xmovectrl -list
B: xmove
B: xhost +
A: DISPLAY=localhost:1 xmovectrl -move B 1
und wieder zurück:
A: DISPLAY=localhost:1 xmovectrl -move A 1
Oder Xnest als Client von xmove starten:
DISPLAY=localhost:1 Xnest :2
DISPLAY=localhost:2 xterm &
DISPLAY=localhost:2 twm &
Wenn man die Sitzung nicht braucht, dann kann man sie auf den "Null-X-Server" Xvfb legen.
Es gibt auch ein kommerzielles Produkt von X-Software.

VDR (Video Disk Recorder)

Dieser höchst interessanten Software widme ich gerne eine eigene Seite.

Bildbearbeitung

Für alle Arten von Bildbearbeitung ist GIMP die beste Wahl.
Für verlustfreies JPEG-Drehen und schnellen Überblick zum Sortieren von Bildern oder Diashow ist gqview das Beste.
Alternativen dazu sind: zxgv, gThumb oder PixiePlus.
Rote Augen in Fotos mit Blitzlicht kann in GIMP sehr leicht entfernen:
Eine ausführliche Anleitung dazu gibt es hier.

Videos aufzeichnen

Zuerst muß man die TV-Karte so konfigurieren, daß diese erst einmal funktioniert und man Bild und Ton hat. Ausprobieren kann man das recht gut mit xawtv.
Bei meiner Hauppauge WinTV brauche ich nur das Modul bttv laden und den Audio-Line-Out der TV-Karte mit dem Audio-Line-In der Soundkarte per Kabel verbinden.
Vom S-VHS-Eingang (und dem Audio-Line-In) kann man z.B. so aufzeichnen:
mencoder -tv driver=v4l2:device=/dev/v4l/video2:norm=PAL:width=352:height=288:volume=100:input=2 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -vop pp=ci -endpos 00:01:00 -o video-mencoder.avi tv://
Oder das gleiche in höherer Auflösung:
mencoder -tv driver=v4l2:device=/dev/v4l/video2:norm=PAL:width=720:height=576:volume=100:input=2 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -vop pp=ci -endpos 00:01:00 -o video-mencoder.avi tv://
Oder vom TV-Eingang vom Kanal 36 aufnehmen:
mencoder -tv driver=v4l2:device=/dev/v4l/video2:norm=PAL:width=352:height=288:volume=45:input=0 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -vop pp=ci -endpos 00:01:00 -o video-mencoder.avi tv://36
Oder in besserer Qualität:
mencoder -tv driver=v4l2:device=/dev/v4l/video2:norm=PAL:width=720:height=576:volume=45:input=0 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1500 -vop pp=ci -endpos 00:01:00 -o video-mencoder.avi tv://
Scheiden kann man die Aufzeichnungen mit avidemux.

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