Tipps für Linux
Inhalt:
- Vorwort
- Literatur
- Serielle Verbindungen
- Nullmodem
- Modem-Verbindungen
- Modem-Callback
- PPP
- PPP-Server mit Telnet/Chat
- PPP-Server mit purem PPP
- PPP-Nullmodem-Verbindung
- Serielle Konsole
- Booten
- Bootdisk
- Bootsektor kopieren
- LILO
- Init-Parameter
- Rechner ohne Platte booten
- Fehlermeldungen beim Booten
- NFS-Root
- Linux über Windows mit Loadlin
booten
- Kopieren und Sichern
- Sicherungen und Kopieren
- Sicherungen mit Streamer
- Komplette Filesysteme kopieren
- Verschiedenes
- Disketten formatieren
- Mount (Root ReadOnly)
- X11
- Hinzufügen von nachträglich
eingeschalteten SCSI-Geräten und Reset
- Suid-Scripten
- Swap (Paging)
- "Zerstörte" Terminals
- Patch mit Diff erstellen
- Inode-Anzahl einstellen
- Tipps zu Postscript
- Referenzen auf eine Homepage
feststellen
- Bemerkungen zur SuSE 6.0
Installation
- CD und CDRW brennen
- Kernel Oops analysieren
- Beeps ausschalten
- Die C-Bibliothek libc
- DMA
- Konsole sperren mit vlock
- Domain mit whois abfragen
- Screen
- Sicheres Programmieren
- Software
- Perl
- LaTeX (teTeX) einrichten
- StarOffice
- PovRay
- finddupe
- c't-Rom
- XEmacs einrichten und Tipps
- WGet
- Sound-Programme
- RPM
- Rosegarden
- Vacation / Procmail
- Mail weiterleiten mit
Procmail
- Email: Mailen von der Kommandozeile
- cdda2wav
- PGP
- TCP-Wrapper
- SSH (Secure Shell)
- Faxen
- MGetty
- VGetty als Anrufbeantworter
- CVS
- LaTeX2HTML
- Ghostscript
- X-Mame
- Netscape
- Mozilla / Firefox
- WindowMaker
- GCC (ehem. EGCS)
- SANE
- MySQL
- VMWare
- xmove
- VDR (Video Disk Recorder)
- Bildbearbeitung
- Video aufzeichnen
- Libraries
- GGI
- MESA
- Emulatoren
- DOSEMU
- Wine
- Bochs
- System-Konfiguration
- Kernel-Einstellungen
- Bootvorgang / Programme
starten
- Grundlegende
Netzkonfiguration
- Nameserver mit Bind 8
- Nameserver mit Bind 9
- Drucker
- Drucker einrichten mit CUPS
- INETD
- Tastatur (Delete und
Backspace)
- Benutzer-Einstellungen (Shell,
X11)
- FVWM2
- HTTPD / WWW-Server
- WWW-Cache: Squid
- WWW-Cache: WWWOffle
- Sendmail
- Postfix
- Fetchmail
- News (INN)
- FTP
- Fonts installieren
- NCR53c400a-SCSI-Karte
verwenden
- Zeitzone einstellen
- NTP
- UMSDOS
- Images von Platten mit dem
Loopdevice mounten (oder auch MTools)
- Benutzer und System-Verwalter
einrichten
- Device-Filesystem (devfs)
- ALSA
- RAID / Multiple Devices (MD)
- Samba
- NFS (Network File System)
- Automounter (autofs)
- PAM (Pluggable Authentication Modules)
- IP-Masquerading / Network
Address Translation (NAT)
- Firewall
- Verschlüsseltes Dateisystem
- Software Suspend
- Tipps zu Gentoo
- WLAN
- Meine Programme
- Alle referenzierten Links
dieser Seite als tar.gz-File
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
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
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.)
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.
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
-
Als ersten sollte man die
grundlegende Netzkonfiguration
vornehmen, die auch für Rechner ohne Netzverbindung notwendig ist.
-
Informationen über den Anschluß bei
LRZ
oder
TUM
lesen.
-
Kernel mit PPP-Unterstützung kompilieren
-
PPP-Paket installieren
-
Sendmail sollte man mit YAST auf SMTP mit DNS-Zugriff einstellen.
-
Man muß
Sendmail mit einem SMART_HOST konfigurieren,
wenn man "hinter" einem Firewall PPP nutzt. (Wie üblich.)
-
Das "ppp-on" -Skript legt man
nach /usr/local/bin.
-
Dazu gehört noch das
"ppp-chat" -Skript, in dem
das Paßwort steht. Diese Datei darf deshalb nicht für Fremde lesbar
sein!
-
Ausschalten kann man das PPP mit einem
"ppp-off" -Skript
-
Ganz wichtig: mkdir /var/lock
-
Und immer dran denken: Im SYSLOG (F10) wird alles
mitgeschrieben! Dort kann man Fehler finden!
-
Zum Fehlersuchen: tcpdump
-
Performance
Unter Linux ist im Kernel der ganze Netzwerk-Teil auf höchsten
Durchsatz optimiert.
Das hat aber den großen Nachteil, daß bei PPP-Verbindungen dieser
Effekt auftritt: Wenn ein Programm viele Daten überträgt, wie etwa
bei FTP oder WWW, dann leidet die "Interaktivität", also die
Reaktionszeit der langsamen Programme wie Telnet erheblich.
Das geht so weit, daß man nicht mehr damit arbeiten kann.
Abhilfe schafft eine Änderung der Window-Größe, wie sie durch
mein "setspeed"-Kommando in meinem
"ppp-on" -Skript zu sehen ist.
Durch diese Änderung sinkt zwar der Datendurchsatz von 1.32 kB/s auf
1.21 kB/s, das ist aber wohl leicht zu verschmerzen.
Wer will, der kann auch mit den Nagle-Algorithmus im Kernel
herumspielen:
NagleFix-Patch
Andere Möglichkeit:
In /usr/src/drivers/net/ppp.c in ppp_init_dev()
den tx_queue_len Parameter von 10 auf 3 oder 4
setzen. Ab Linux 2.1.77 gibt es auch einen neuen ioctl
(SIOCSIFTXQLEN) um diesen Wert für jedes Device zu setzen. Bei
ISDN Links läßt sich auch ein positiver Effekt mit einer
kleineren tx_queue_len erreichen.
-
Sicherheitsaspekte:
- Alle Accounts sicher machen durch Paßwortvergabe.
-
Das ppp-on Skript unlesbar machen, wenn Paßwörter
drinstehen:
chmod 711 ppp-on
-
Das PPP-Paßwort darf nicht in der chat- oder gar
pppd-Commandline
(die kann man über ps oder
/prog/<pid>/cmdline bekommen)
stehen, sondern in einer Script-Datei, owner Root, mod 600.
-
In der Datei /etc/login.def ist definiert, von
wo sich der Root einloggen darf:
CONSOLE tty1:tty2:tty3:tty4:tty5:tty6:tty7:tty8
Wenn sich Root über ttyS1 einloggen können soll, dann ttyS1
hinzufügen.
-
Eine mögliche Methode: Alles was nicht ausdrücklich erlaubt
ist, ist verboten: Alle Dienste, die man nicht braucht aus der
inetd.conf austragen.
-
Man kann die Zugänge zu einem System mit einem sogenannten
tcpwrapper sichern.
Das setzt aber voraus, daß auf den Maschinen, von denen aus
der Zugriff erfolgt, der "Authentication Service" (meist durch
identd immplementiert) verfügbar ist.
Man sollte sich aber klar sein, daß auch so ein Verfahren
Schwächen und Angriffspunkte hat.
-
Die r* Berkeley-Dienste (rcp, rlogin, rsh) sollte man
durch SSH (Secure Shell) ersetzen.
- In /etc/inetd.conf sollte man tftp auskommentieren,
wenn man es nicht braucht, denn damit sind alle world-readable
Files ohne Passwort jedem zugänglich.
Wenn man tftp (etwa für ein X-Terminal) braucht, dann sollte
man es auf ein Verzeichnis einschränken, indem man den
Verzeichnisnamen dahinterschreibt:
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /boot/tftp
-
Die Dateien /etc/hosts.allow und
/etc/hosts.deny bestimmen, zu welchen anderen Rechnern
Verbindungen zugelassen werden. Allen Rechnern, die in
/etc/hosts.allow stehen wird Zugriff erlaubt, egal
was in /etc/hosts.deny steht. Wenn der Rechner in
/etc/hosts.deny steht, dann wird der Zugriff verweigert.
Wichtig: Wenn der Rechner nirgends steht, dann wird der Zugriff
erlaubt! Man sollte also alles Sperren, bis auf Ausnahmen, indem
man /etc/hosts.allow leer läßt und in
/etc/hosts.deny das einträgt:
ALL EXCEPT telnet, ftp, www, tcpmux : ALL EXCEPT LOCAL
-
In die Datei /etc/hosts.equiv sollte man Rechner
eintragen, denen man vertraut. In der Regel sollte man nichts
eintragen. Wenn z.B. hp3 eingetragen wird, dann
können alle Benutzer von hp3 sich an meinem System
unter dem gleichen Benutzernamen anmelden, wie auf hp3.
-
Um NFS zu mounten:
mount -t nfs RECHNER:PFAD mountpoint
wobei der RECHNER in der Datei /etc/exports seinen PFAD exportieren
muß.
LEO-incoming:
mount -t nfs hpleo1:/archive/leo/.mntpts/tum.info-tmp1 /mnt/a
LEO-devices und os:
mount -t nfs hpleo1:/archive/leo/.mntpts/tum.info-pub7 /mnt/a
LEO- Rest von devices:
mount -t nfs hpleo1:/archive/leo/.mntpts/tum.info-pub8 /mnt/a
msdos:
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub1 /mnt/a
???
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub2 /mnt/a
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub3 /mnt/a
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub4 /mnt/a
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub5 /mnt/a
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
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
Auf dem Server muß folgendes eingerichtet werden:
-
In /etc/inittab:
nu:123:respawn:/usr/local/sbin/mgetty -r -s 115200 nullmodem
Aktivieren mit init q.
-
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.
-
Ein /usr/local/bin/ppplogin anlegen:
#!/bin/sh
# ppplogin - Script startet pppd beim Login
mesg n
stty -echo
exec /usr/sbin/pppd -detach silent modem crtscts
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
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
-
Direkt mit dem Kernel von der Diskette:
Kernel auf die Disk
dd if=/vmlinuz of=/dev/fd0
Sagen, welche Partition gebootet werden soll:
rdev /dev/fd0 /dev/sd[irgendwas]
-
Mit LILO von der Diskette:
Ein bdlilo.conf anlegen mit diesem Inhalt:
boot =/dev/fd0
install =/boot/boot.b
map =/boot/map
read-only
backup =/dev/null
compact
prompt
timeout =20
image =/2214
label =Bootdisk
root =/dev/scsi/host1/bus0/target5/lun0/part5
append ="vga=0x105 aic7xxx=tag_info:{{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}}"
Und dann eine Diskette einlegen und
mke2fs -v -i 8192 -m 0 /dev/fd0
(Oder Minix um etwas Platz zu sparen:
mkfs.minix -c /dev/fd0 1440)
mount /dev/fd0 /mnt/a
rd /mnt/a/lost+found/
md /mnt/a/{boot,dev}
cp -R /dev/{null,fd0} /mnt/a/dev/
cp /boot/boot.b /mnt/a/boot
cp bdlilo.conf /mnt/a/
cp /usr/src/linux/arch/i386/boot/bzImage /mnt/a/
md -p /mnt/a/dev/scsi/host1/bus0/target5/lun0
cp -R /dev/scsi/host1/bus0/target5/lun0/part5 /mnt/a/dev/scsi/host1/bus0/target5/lun0
lilo -v -C bdlilo.conf -r /mnt/a/
umount /mnt/a
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
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.
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
Ich habe es noch nicht ausprobiert, aber mir schon folgendes notiert:
- Das geht z.B. mit etherboot. Man braucht natürlich einen
bootp/NFS-Server dafür.
- netboot-0.5.2
- Diskless-Mini-Howto, NFS-Root-Mini-Howto,
/usr/src/linux/Documentation/nfs-root.txt
-
"Diskless" booten: Der Rechner holt sich auch den Kernel selber
übers Netz. Du brauchst also entweder eine bootfähige Netzwerkkarte
oder aber eine Bootdiskette, die Du mit dem Paket "netboot" (irgendwo
auf der Sunsite) selber erstellen kannst.
Bei mir haut das mit der Bootdiskette leider nicht hin, ich
bekomme nur die Meldung, daß der Loader nicht in Ordung sei.
-
Root-Verzeichnis via NFS importieren. Das bedeutet, daß nur der
Linux-Kernel auf Deinem Rechner ist (Booten dann z.B. mit
loadlin) und alles andere via NFS importiert wird. Dafür mußt Du
dann "NFS-Root" und NFS selber in den Kernel mit
importieren. Deine IP-Adresse bekommst Du dann mit dem
BOOTP-Protokoll vom Server mitgeteilt (anhand Deiner
Netzwerkkarten-Hardwareadresse). Danach sollte eigentlich das
Root-Verzeichnis via NFS gemounted werden, aber das klappt bei
mir nicht ("Adding of local route failed"... Keine Ahnung, wieso.
- Mal sehen ...
-
Die Meldung beim Booten:
Starting daemons: syslogd/etc/rc.d/rc.M: line 30: 37
Interrupt
kann man beheben durch Start des syslog im Hintergrund mit "&".
-
Wenn die Meldung "Can't locate module char-major-4"
kommt, dann muß man in
/etc/modules.conf
das eintragen:
alias char-major-4 off
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
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
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:
-
rsync -avH --delete --delete-excluded --exclude /proc --exclude /sys --exclude / sicherungsserver:/backup_von_xxx/
Restoren kann man das vom Sicherungsserver so:
cd /verzeichnis/wo/die/sicherung/liegt/
rsync -avH . zielrechner:/mnt/neues_root/
-
tar -clpSf - /filesystem | ssh sicherungsserver tar -C /zielverzeichnis -xpSf -
-
Rshd richtig einstellen, wenn es als Root funktionieren soll:
shell stream tcp nowait root /usr/sbin/tcpd in.rshd -Lh
-
tar -cvzf - /filesystem | \
ssh tapehost 'buffer -s 32k -m 10m >/dev/st0'
-
tar -cvf username@backuphost:/dev/st0 .
(Dafür ist aber auf dem "backuphost" das Programm "rmt" notwendig.
-
tar -cvf - waszusichern | \
( rsh host.domain -l username tar -xvf /dev/st0 - )
-
Geschwindigkeitsvergleich (Backuphost: Pentium-200, Client:
Celeron-500, 100er Ethernet, 1.4 GB Daten)
-
tar -cf backuphost:/tmp/backup.tar .
27 Minuten
-
tar -cf - . | ( rsh backuphost 'cat - > /tmp/backup.tar' )
12 Minuten
-
tar -cf - . | gzip -1 | ( rsh backuphost 'cat - > /tmp/backup.tar.gz' )
18 Minuten
-
Auf backuphost:
netcat -l -p 3000 > /tmp/backup.tar
Auf Client:
tar -cf - . | netcat -w 10 backuphost 3000
14 Minuten
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.
Linux komplett auf anderes Medium kopieren:
-
Die einfachste Methode, die alles außer gemounteten Filesystemen
(-x) kopiert ist:
cp -axv /quelle /ziel
-
Mit tar geht es so:
cd /ziel
tar -C /quelle/ -cplf - . | tar -xpf -
-
So funktioniert es (wenn auch umständlicher) auch:
cd /
find . -xdev | egrep -v "\./dev/|\./mnt/|./proc/" | cpio -pvdm
/mnt/ziel/
Das /dev-Verzeichnis kann man kopieren mit:
cp -av /dev /mnt
wobei /mnt das Ziel ist. In /mnt wird dabei ein
/mnt/dev/ erstellt, wenn es noch nicht existiert.
Und das /mnt/-Verzeichnis kann man "kopieren" mit:
cd /mnt
mkdir `/bin/ls /mnt/ALTE_PLATTE/mnt/`
-
Wenn man die komplette Platte auf CDs sichern will, dann muß man
das Image, das dd erstellt noch splitten:
dd if=/dev/hda | gzip -1 | split -b 600m -
/meine_images/image.gz
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
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
-
Mit xvidtune kann man die Einstellungen Testen und
verbessern. (Das alte vgaset gibt es nicht mehr.)
-
X11 nutzen mit VESA und Frame Buffer:
Grafikkarte muß VESA 2.0 kompatibel sein. Alternativ kann man auch
unter DOS univbe verwenden und Linux mit Loadlin starten. Im Kernel
muß FB-Support für VESA drin sein. Kernel-Boot-Parameter muß
z.B. vga=792 sein (1024x768x16M). Bei RedHat gibt es einen X-Server
dafür: XF86_FBdev-xx-xxx-xxx.rpm installieren und den
Server auf X linken. Modeline erhält man mit "fbset -x". Es geht
auch ohne Modeline, wenn man in der Screen-Section bei Modes default
einträgt.
-
Einen X-Bildschirm-Snapshot von einem anderen Rechner kann man
so anfertigen:
xwd -root -silent -display host:0 | xwud
-
Man kann X11 mehrmals (auch mit verschiedenen Farbtiefen) starten,
indem man die gewünschte Display-Nummer angibt:
X -bpp 24 :1
oder startx -- :1 -bpp 8
Die Server starten dann auf der nächsten freien virtuellen Konsole
(bei mir ab F8).
Nornalerweise verwende ich den 16bpp-Modus, 8bpp starte ich mit
x8, und 24bpp mit
x24. Dazu sind entsprechende
Display-Sections in der
/etc/XF86Config ganz
nützlich.
-
Die Stromsparfunktionen unter XFree4 aktiviert man so:
Section "ServerFlags"
Option "AllowMouseOpenFail"
# Für Power-Saver:
Option "BlankTime" "3"
Option "StandbyTime" "6"
Option "SuspendTime" "9"
Option "OffTime" "12"
EndSection
-
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.
-
X11 auf mehreren Monitoren: Distributed Multihead X (DMX):
Server "xdmx" und "Xevie".
z.B.:
Xdmx :0 +xinerama -display Rechner1:0 -display Rechner2:0
-
KDE von einem anderem Rechner auf dem lokalen X11 starten (quasi
X-Terminal): Dazu einfach in die persönliche
~/.xsession das eintragen:
ssh server 'sudo /usr/bin/mkdir /tmp/.ICE-unix; sudo /usr/bin/chmod 1777 /tmp/.ICE-unix'
ssh server /usr/kde/3.3/bin/startkde
oder die Variante ohne ssh-Tunnelung (für alte
performance-schwache Rechner):
xhost +server
ssh server 'sudo /usr/bin/mkdir /tmp/.ICE-unix; sudo /usr/bin/chmod 1777 /tmp/.ICE-unix'
ssh server 'DISPLAY=mein.lokaler.rechner:0.0 /usr/kde/3.3/bin/startkde'
-
Man kann sich auch dem xdm-Login-Bildschirm von einem anderen
Rechner (auf diesem muß xdm laufen) holen:
X -query host
-
Wenn man als Benutzer2 auf das Display von Benutzer1 zugreifen
will, dann am besten so:
benutzer1# xauth nextract myxkey :0
benutzer1# su - benutzer2
benutzer2# xauth nmerge myxkey
-
Mit xrandr kann man die Auflösung von X11 umschalten.
-
Wenn man eine X11-Session praktisch "im Hintergrund" analog zu
screen für TTYs laufen lassen will, dann geht das mit VNC.
Dazu startet man einmalig den VNC-Server (tightvnc) (als ganz
normaler Benutzer):
vncserver -geometry 1271x968
Um in diesem virtuellen X-Server eine Sitzung zu starten, legt
man sich ein ~/.vnc/xstartup an:
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid blue
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
wmaker &
xterm -vb -ls -sl 5000 -geometry 80x24-0+0 &
asclock -d &
xemacs &
Beenden kann man den VNC-Server mit vncserver -kill :1
Der Server lauscht auf Port 5901. Das muss man aber nur zum
SSH-Tunneln wissen.
Um mit dieser (nicht sichtbaren) X11-Session arbeiten zu können,
braucht man einen VNC-Viewer. Es bieten sich drei Möglichkeiten
an:
-
Windows VNC-Viewer: Einfach das vncviewer.exe von
TightVNC starten. Das
ist für Windows erfahrungsgemäß die beste Lösung!
-
Linux VNC-Viewer: viewer -fullscreen rechnername:1
-
Browser VNC-Viewer: Mit einem Browser den URL
http://rechnername:5801/ ansteuern.
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
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");
}
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
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>".
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.)
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.
-
Eine falsche (oder defekte) Boundingbox kann man so beheben:
pstoedit -f fig x.ps x.fig
xfig x.fig
und dann als PS exportieren. (Ungetestet: Alternativ kann man
auch ps2epsi von Ghostscript benutzen.)
-
Einen Booklet-Druck mit Duplexeinheit kann man so erreichen:
Ohne psnup:
psbook file.ps | pstops "4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm),1R@.7(0cm,14.85cm)+-2R@.7(0cm,29.7cm)" > out.ps
andere Drehung:
4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm),1L@.7(21cm,0)+-2L@.7(21cm,14.85cm)
Mit psnup:
psbook file.ps | psnup -2 | pstops "2:0,1U(21cm,29.7cm)" >
out.ps
-
Zwei Seiten auf eine Seite kann man praktisch in jeder Anwednung
drucken, wann man dem lpr-Kommando das voranstellt:
psnup -2 -q
-
Eine A4 Seite auf mehrere A4-Seiten aufteilen, so daß die nach
dem Zusammenkleben A3 ergeben:
poster -v -iA4 -mA3 -pA1 infile.ps > outfile.ps
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.
-
chmod 755 /mnt
-
Bei neu angelegten Usern muß man erst ~/.Xauthority
löschen, sonst startet kein X.
-
Um alte libc5-Programme laufen zu lassen, muß man den
LD_LIBRARY_PATH der SuSE 4.4 löschen.
-
CD-Größen (nach Ausgabe von du -sm ...:
Für Musik: 807 geht maximal.
Für Daten: 704 geht maximal.
-
Vorher: Doppelte Files, Backup-Files und Namen mit
Doppelpunkten und Fragezeichen und Anführungszeichen entfernen,
da das nicht alle Betriebssysteme unterstützen:
finddupe -vv .
find . | grep ~
find . | grep :
find . | grep \?
find . | grep \"
-
Nützliche Einzeiler:
Alle Verzeichnisse mit ":" in "_-_" umwandeln:
find . -type d | grep : | perl -wne 'chomp; $neu = $_; $neu =~ s/:/_-_/; rename $_,$neu;'
Skript in Unterverzeichnis ausführen:
find . -name 01.mp3 > /tmp/x ; perl -wne 'chomp; s:(./)*(.+?)/01.mp3:$2:; if (-e "$_/titel.txt"){ chdir $_; system("SetMp3TagFromTitelTxt"); chdir "..";}' /tmp/x
-
Image erstellen:
mkisofs -o Image -pad -J -r verzeichnis_oder_file(s)
Mit "-T", dann ein TRANS.TBL erstellt.
Mit "-l" wird es unter DOS unbrauchbar!
Mit "-b imagefile" wird eine bootfähige CD nach El Torito
erstellt.
-
Wenn man eine bestehende CD, die mit isolinux bootfähig war,
verändert hat und neu brennen will, dann so:
mkisofs -o image.iso -b isolinux/isolinux.bin -c
isolinux/boot.cat -no-emul-boot -boot-load-size 4
-boot-info-table -R -J -T .
-
Image mounten:
mount -t iso9660 -o ro,loop=/dev/loop0 IMAGEFILE
/mnt/cdrom
-
Brennen von Daten-CD:
Testen:
cdrecord -dummy -v speed=4 dev=1,3,0 IMAGEFILE
Brennen:
cdrecord -v speed=4 dev=1,3,0 IMAGEFILE
-
Brennen von Audio:
Von MP3 ein WAV erstellen geht mit:
amp -c -w file.mp3 file.wav
oder
mpg123 -w file.wav file.mp3
Wenn das WAV-File nicht mit 44.1 kHz gesamplet ist, dann
umrechnen:
mpg123 -r 44100 -w file.wav file.mp3
cdrecord -v speed=4 dev=1,3,0 -pad -audio /tmp/*.wav
Wenn die Tracks übergangslos sein sollen "defpregap=0" und
"-dao" verwenden:
cdrecord -v speed=4 dev=1,3,0 defpregap=0 -dao -pad -audio
/tmp/*.wav
(Erfahrungen mit verschiedenen CD-Marken)
-
Brennen von Mixed-Mode-CD, bei denen der erste Track Daten und
die folgenden Musik sind:
cdrecord -v speed=4 dev=1,3,0 IMAGEFILE -pad -audio /tmp/*.wav
-
Erste Session einer Multisession-CD brennen:
cdrecord -v speed=4 dev=1,3,0 -multi ...
Um ein Image für nächste Session erstellen braucht mkisofs noch
diesen zusätzlichen Schalter:
-C $(cdrecord dev=1,3,0 -msinfo)
Die letzte Session wird ohne "-multi" gebrannt und schließt
damit die CD ab.
-
Bei CD-RWs muß man einfach zusätzlich die Option
-blank=fast beim Brennen verwenden.
-
Bei ATAPI (IDE) Brennern gibt man das hdX-Gerät an, z.B.:
cdrecord -v speed=20 -driveropts=burnfree dev=/dev/hdc
und bei USB-Brennern das SCSI-Gerät:
cdrecord -v speed=20 -driveropts=burnfree dev=0,0,0
-
Infos:
cdrecord -scanbus
cdrecord -atip -v dev=1,3,0
cdrecord -prcap -v dev=1,3,0
cdrecord -inq -v dev=1,3,0
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.
Auf der Konsole kann man die Beeps so ausschalten:
setterm -blength 0
Und unter X11 kann man es so ausschalten:
xset b off
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
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.
Mit vlock kann man die Text-Konsolen sperren.
Mit z.B.
whois -h whois.denic.de loescher-online.de
kann man den Besitzer einer Domain herausfinden.
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.
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
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);
}
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.
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)
-
Wenn man von einem älterem SO updatet, dann kann man die beiden
Dämonen svdaemon und svportmap wieder entfernen.
-
SO4 SP3 funktioniert auch mit einer LibC 5.4.7!
- Das Tar-File in ein temporäres Verzeichnis entpacken und als
Root "./setup /net" starten. Als User nur noch
"setup" starten.
-
Farbig drucken ermöglichen (für 5.1 nicht mehr nötig!):
In /opt/Office40/xp3/ppds/GENERIC.PS folgende Änderungen
vornehmen:
*LanguageLevel: "2"
*ColorDevice: True
*DefaultColorSpace: RGB
-
Fonts hinzufügen (Type 1) (bis SO 5.0):
-
Fonts für X11 und Ghostscript
installieren
-
Vorweg muß man erwähnen, daß SO bis Version 5.0 nur ca. 300
Fonts verkraftet. Entscheidend ist dabei die Anzahl von
Dateien oder Links im Verzeichnis
/opt/Office/xp3/pssoftfonts. Seit 5.0 kann man
beliebig viele Fonts installieren.
-
StarOffice benötigt zu jedem Font eine afm-Datei.
Die fehlenden afm-Dateien ("Adobe Fontmetrik") kann man mit
einem der Ghostscript-Tools erzeugen. Es heißt printafm.ps
und wird mit GhostScript z.B. so benutzt:
gs -q -dNODISPLAY -- printafm.ps capri.pfb >
capri.afm
Am einfachsten ist dazu
pfb2afm zu verwenden.
Da StarOffice mit diesen afm-Files Probleme hat muß man sie
noch durch
afm.pl
modifizieren.
Wenn man die AFMs gleich mit
afmmaker.ps erstellt, so
kann man auf afm.pl verzichten. Dazu trägt man den Fontnamen
hinter /fontname in afmmaker.ps ein und startet damit
Ghostscript:
gs -sNODISPLAY -q -sBATCH afmmaker.ps -c quit > font.afm
Diese afm-Files linkt man dann einzeln in das Verzeichnis
/opt/Office40/xp3/fontmetrics/afm/:
ln -s /meine/neuen/fonts/capri.afm /opt/Office40/xp3/fontmetrics/afm/capri.afm
- Die pfb-Files linkt man einzeln in das Verzeichnis
/opt/Office40/xp3/pssoftfonts/:
ln -s /meine/neuen/fonts/capri.pfb /opt/Office40/xp3/pssoftfonts/capri.pfb
- Die Datei /opt/Office40/xp3/psstd.fonts ist noch zu
ergänzen (ähnlich fonts.dir, man beachte die "%d" anstelle
der "0"):
starmath, -star division-starmath-medium-r-normal--%d-%d-%d-%d-p-0-iso8859-1
starbats, -star division-starbats-medium-r-normal--%d-%d-%d-%d-p-0-iso8859-1
Diese Einträge kann man sich so aus fonts.dir erzeugen:
cd /meine/neuen/fonts/
cat fonts.dir | perl -pe 's/\.pfb/,/; s/0-0-0-0-p-0/\%d-\%d-\%d-\%d-p-0/;'
-
Zusammenfassung:
cd /meine/neuen/fonts/
pfb2afm *.pfb
for i in *.afm; do afm.pl $i; /bin/mv $i.new $i; done
cd /opt/Office40/xp3/pssoftfonts
for i in `find /meine/neuen/fonts/ -name "*.pfb"`; do ln -s $i; done
cd /opt/Office40/xp3/fontmetrics/afm
for i in `find /meine/neuen/fonts/ -name "*.afm"`; do ln -s $i; done
cd /meine/neuen/fonts/
cat fonts.dir | perl -pe 's/\.pfb/,/; s/0-0-0-0-p-0/\%d-\%d-\%d-\%d-p-0/;'
-
Fonts hinzufügen (Type 1) (ab 5.1):
-
Fonts für X11 und Ghostscript
installieren
-
Die Font-Installation geht fast unproblematisch nach
dieser Anleitung:
-
As root, run psetup (or spadmin if you have Star Office 5.1)
-
Press the ``add fonts'' button.
-
The easiest thing to do after this is press the
``initialize font paths'' button. This puts a list of
all fonts in your X font path in the list box.
-
Choose the directory containing the font you wish to
install ( it should be in the box ), and then press
``OK''.
-
Click the ``convert all font metrics button''.
-
Leider werden dabei leicht defekte Font-Metriken erzeugt,
Deshalb sollte man die *.afm-Files wie oben beschrieben (altes SO)
erzeugen und nach
/opt/office52/share/xp3/fontmetrics/afm linken.
-
Fonts hinzufügen (TrueType):
-
Fonts für X11 und Ghostscript installieren
(Dabei werden auch gleich brauchbare afm-Files erstellt.)
-
Wenn man die so installierten Fonts in StarOffice hernehmen will,
dann muß man die Einträge in
/opt/Office/xp3/psstd.fonts von Hand erstellen, die
so aussehen:
font, -ttf-font-normal-r-normal-tt-%d-%d-%d-%d-p-0-iso8859-1
Allerdings wird ein Minus-Zeichen beim Aussdruck zu einem
Kästchen, was wohl an der unterschiedlichen Codierung der
Fonts liegt.
-
Interessant ist aber die Nutzung des TrueTypes Times News Roman,
weil man damit auf Systemen, die keinen skalierbaren Times-Font
haben trotzdem eine perfekte Bildschirmdarstellung erhält. Dazu
installiert man wie eben beschrieben den Font und trägt ihn aber
nicht in /opt/Office/xp3/psstd.fonts ein.
Dann wird der Font nur zur Bildschirmdarstellung verwendet.
-
Neue Drucker kann man ganz einfach in
/opt/Office40/xp3/Xpdefaults durch folgende Ergänzungen
eintragen:
[devices]
Canon BJC-620 (normal)=GENERIC PostScript,default_queue
Canon BJC-620 (low)=GENERIC PostScript,low
Canon BJC-620 (high)=GENERIC PostScript,high
Ghostview (Preview)=GENERIC PostScript,preview
[ports]
low=lpr -Plow
high=lpr -Phigh
preview=cat | ghostview -geometry +0+0 -
Bei 5.1 muß es SGENPRT statt GENERIC heißen.
Natürlich müssen die benannten Drucker "low" und "high" in
/etc/printcap
eingetragen sein. Siehe dazu auch den Abschnitt über
Drucker.
-
Eine Fontliste kann man leicht mit
fontliste erstellen.
- Man sollte den alten Povray deinstallieren:
cd /usr/bin
zip -m povray-old povray*
- 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
- Eine Demonstration starten:
povray +W640 +H480 +A0.3 +Q9 +L/usr/local/lib/povray3/include +I/usr/local/lib/povray3/povscn/level3/chess.pov
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).
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:
-
Auspacken von xemacs-20.4.tar.gz.
-
Normales Vorgehen:
./configure
make
cd src
rm xemacs
strip temacs
cd ..
make
make dist
make install
-
Bei mir war es etwas anders:
./configure --with-dialogs=athena -with-jpeg=no
--with-session=yes
make prefix=/opt/xemacs exec_prefix=/opt/xemacs
cd src
rm xemacs
strip temacs
cd ..
make prefix=/opt/xemacs exec_prefix=/opt/xemacs
make dist prefix=/opt/xemacs exec_prefix=/opt/xemacs
make install prefix=/opt/xemacs exec_prefix=/opt/xemacs
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:
- Die DEL-, Backspace-, HOME- und END-Tasten funktionieren wie
gewohnt. Für HPUX 10.20 ist dazu folgende xmodmap nötig:
remove Mod1 = Mode_switch
keycode 0x7D = End
- Control-Tab schaltet zum nächsten Buffer
- F2 speichert den aktuellen Buffer
- F8 speichert den aktuellen Buffer und schließt ihn. (Das
funktioniert leider nicht mehr mit dem neuen GNU-Server des
XEmacs 20.2)
- F9 startet einen LaTeX-Lauf mit dem aktuellen Buffer oder
startet make, wenn XEmacs im C-/C++-Mode ist
- F10 staret XDVI mit dem *.dvi-File des aktuellen Buffers
- Es wird zusätzlich die aktuelle Zeilennummer und Spaltennummer
angezeigt
- F11 und Shift-F11 springt im C-/C++-Mode zum nächsten/vorigen
Fehler
- Auto-Save in ein separates Verzeichnis eingeschaltet
- .h-Files werden als C++ erkannt
- .Z- oder .gz-Files kann man direkt bearbeiten
(Wird automatisch entpackt und wieder eingepackt)
- Fonts für den Bildschirm werden dauerhaft eingestellt
(Das wird bei "Save-Options" ja vergessen)
- AucTeX wird aktiviert
- Der Pretty-Print druckt nur noch Filename und Seitenzahl
- Die zuletzt geöffneten Files werden in ein Menü gelegt
- Am Textende werden keine Leerzeilen hinzugefügt, wenn man mit
dem Cursor weiter nach unten geht
- XEmacs merkt sich die Cursorposition in jedem File und man
befindet sich bei nächsten Laden wieder an der gleichen Stelle
- Es wird verhindert, daß XEmacs seine Region verliert, wenn man
beim Markieren mit dem Cursor an das Ende des Buffers gelangt
- C-z macht dasselbe, wie C-y (Für englische Tastaturen)
- Gnuserver wird gestartet. Dann kann man durch
"gnuclient textfile" einen Text vom Prompt weg im XEmacs
öffnen oder mit einem Mail-Reader wie etwa elm verbinden.
- Der Maus-Cursor weicht dem Text-Cursor aus. (Das ist
auskommentiert, weil es inzwischen durch "unclutter" besser
gelöst ist!)
- Text wird bei Cut&Paste am Textcursor eingefügt.
- Wenn man gnuclient im elm als Editor hernimmt, dann werden
elm's snd.*-Files im Text-Mode mit Auto-Fill geöffnet. Den
aktuellen Paragraph kann man sofort mit M-q neu
formatieren.
- Den XEmacs Newsreader
Gnus
habe ich noch ein bischen konfiguriert:
~/.gnus. (Siehe dazu auch
meine
XEmacs-Add-On-Bookmarks und die
XEmacs & Gnus Page und natürlich
comp.emacs.gnus.
- Mit "%" wird zur passenden Klammer gesprungen, wenn Cursor auf
einer Klammer steht.
Weitere Tipps:
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:
- getwww-1.4 hat zu wenig Konfigurationsmöglichkeiten und außerdem
nur eine koreanische Anleitung, funktioneiert aber prinzipiell.
- webcopy-0.98b7 kann meinen lokalen WWW-Server nicht ansprechen
und ist damit nur online testbar und konfigurierbar, sonst aber
in Ordnung.
- Noch nicht getestet, klingt aber sehr gut: Snag-o-rama
(snag-1.4)
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.....
-
Wave nach MP3 konvertiert man am besten so:
lame
--preset cd in.wav out.mp3
oder:
mp3enc
-v -br 192000 -qual 9 -no-is -if in.wav -of out.mp3
-
Der beste MOD-Player ist
Mikmod.
-
Der beste MIDI-Player ist
timidity, weil er
GUS-Patches
(eawpats)
verwenden kann und damit aus einer billigst-Soundkarte die
tollsten Töne holt. (Den OPL3-Sound kann man ja nicht aushalten...)
-
Der beste MP3-Player ist xmms
oder für die Konsole mpg123.
-
Ein riesiges Wave-File (von einer LP- oder Kassetten-Aufnahme)
kann man vollautomatisch mit
Gramofile in
einzelne Lieder aufteilen. Dazu sind diese Einstellungen
optimal:
[x]
[ ]
4410
100
1
20
50
3
6
Noch viel einfacher geht es mit
wavsilence:
wavsilence -v -s -b 64 -n '%2' -c 0 -i aufnahme.wav
-
Zur Wave-Bearbeitung eignen sich
KWave,
DAP und
xwave.
Der Beste ist meines Erachtens aber
audacity.
-
Wenn man den Sound von einem Rechner (B) auf den anderen Rechner (A)
umleiten will, dann startet man auf A den ESound-Dämon:
esd -tcp -public
Und auf B stellt man in seinem Sound-Programm den Output auf ESD
um. Wenn das nicht unterstützt wird, dann hilft noch der
edddsp:
esddsp --server=A mein_programm
-
Installieren (i) mit Balken (h) und verbose (v):
rpm -ihv file.rpm
Mit --nodeps kann man rpm dazu zwingen, die
Abhängigkeiten zu ignorieren.
-
Paket deinstallieren:
rpm -e paketname
- Liste aller installierten Pakete:
rpm -qa
oder nur die Namen ohne Versionen ausgeben:
rpm -qa --queryformat "%{NAME}\n"
- Weitere Information über ein Paket (i=Info, l=Fileliste):
rpm -qil paketname
-
Inhalt eines noch nicht installierten Pakets auflisten:
rpm -qlp file.rpm
-
Suchen, welches RPM-Paket ein installiertes File enthält:
rpm -qf filename
-
Aktualisieren kann man ein Paket so (Update):
rpm -U paketname
Wenn man mehr Pakete vorliegen hat, als aktuell installiert
sind, und man möchte nur die aktualisieren, die bereits
installiert sind, dann geht das durch Auffrischen:
rpm -F paketname
-
Die *.rpm-Quellen kann man auch als ftp- oder http-URL angeben:
ftp://user:password@hostname:port/path/to/package.rpm
-
Die Integrität eines installieten Pakets läßt sich so
prüfen:
rpm -V paketname
-
Schließlich kann man auch aus RPM-Quell-Paketen Software
compilieren und installieren:
rpm -ihv --rebuild paket.src.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.
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
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:
-
~/.forward:
|/usr/bin/procmail
-
~/.procmailrc:
# Diese .promailrc realisiert einen "vacation"
# Man muß nur noch in ~/.forward das eintragen:
# "|/usr/bin/procmail" (Ohne Anführungszeichen!)
SHELL=/bin/sh # for other shells, this might need adjustment
LOOP="X-Loop: loescher@gmx.de"
:0 Whc: vacation.lock
# Perform a quick check to see if the mail was addressed to us
* $^To:.*\<$\LOGNAME\>
# Don't reply to daemons and mailinglists
* !^FROM_DAEMON
# Mail loops are evil
* !^${LOOP}
| formail -rD 8192 vacation.cache
:0 ehc # if the name was not in the cache
| (formail -rA"Precedence: junk" \
-A"${LOOP}" ; \
echo "Automatically generated answer follows:"; \
echo ""; \
echo "I received your mail,"; \
echo "but I won't be back until 31.12."; \
echo ""; \
echo "Stephan."; \
echo ""; \
echo "-- "; \
echo "loescher@gmx.de"; \
echo "http://www.loescher-online.de/"; \
) | $SENDMAIL -oi -t
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
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 = ''
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.
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:
-
tcp_wrappers_7.6.tgz
auspacken und kompilieren
- cp tcpd /usr/local/bin
- cp tcpd.8 /usr/local/man/man8
- chmod 644 /usr/local/man/man8
- chown root.system /usr/local/bin/tcpd
- chmod 711 /usr/local/bin/tcpd
- In /etc/inetd.conf alle Zeilen so ändern:
Alt: ftp stream tcp nowait root /usr/sbin/ftpd
ftpd
Neu: ftp stream tcp nowait root /usr/local/bin/tcpd /usr/sbin/ftpd ftpd
- inetd neu starten
Ab nun werden alle Verbindungen in syslog(8) mitgeschrieben.
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):
-
Authentisierung kann entweder über einen RSA-Schlüssel oder
über das normale Benutzer-Paßwort erfolgen. Wenn keinen
Schlüssel, wie nachfolgend berschrieben erzeugt, dann wird nur
das Paßwort verwendet.
-
Aufruf von ssh-keygen Auf Recher A.
Eine gute lange Passphrase (Paßwort) angeben. Damit wird der
private Schlüssel geschützt.
Man kann auch eine leere Passphrase angeben, was den Vorteil
hat, daß beim Login kein Passwort benötigt.
Das Programm erzeugt ein asymetrisches Schlüsselpaar.
Es werden unter $HOME/.ssh/ die Dateien:
identity = privater Schlüssel (nicht verbreiten!) und
identity.pub = öffentlicher Schlüssel erzeugt.
-
Kopieren des öffentlichen Schlüssels:
$HOME/.ssh/identity.pub enthält den Public Key für die
Authentisierung. Den Inhalt diese Files sollte man an das File
$HOME/.ssh/authorized_keys auf allen Maschinen anhängen,
auf die man sich einloggen will.
Wenn alle Maschinen ein NFS-Home verwenden, dann ist das denkbar
einfach:
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys
Ansonsten kann das mit einem Editor geschehen.
Allen Keys, die in $HOME/.ssh/authorized_keys stehen ist
der Zugriff auf diesen Account erlaubt.
-
Für verschiedene Accounts sollte man verschiedene Keys verwenden.
-
Dann kann man sich mit ssh rechner oder
slogin rechner in den Rechner einloggen. Es wird nach
der Passphrase gefragt, außer man hat die Passphrase bei
ssh-keygen leer gelassen.
-
Wenn man sich oft in ein System einloggt, dann ist die
Paßwortabfrage lästig. Abhilfe schafft der ssh-agent, der sich
die Paßwörter merkt. Aufruf ist:
ssh-agent $SHELL
oder
ssh-agent startx &
Dann kann man mit ssh-add einen Key hinzufügen und muß
diesen dann solange nicht mehr eingeben, bis man
ssh-agent beendet.
-
ssh kann man als erweiterten Ersatz für rsh verwenden:
ssh rechner who
ssh -n rechner xterm &
(Das letzte Beispiel funktioniert so ohne weiteres mit rsh nicht!)
-
scp ersetzt rcp.
-
Die Paßwortabfrage kann man verhindern, indem man in
~/.shosts die beteiligten Rechner analog zu
~/.rhosts einträgt. Die Datei ~/.rhosts sollte
man dann zur Sicherheit löschen.
-
Mail kann man mittels POP3 und fetchmail verschlüssselt (und
komprimiert!) übertragen, indem man folgende
~/.fetchmailrc verwendet:
poll mailrechner via localhost port 1234 with protocol pop3 fetchall limit 12000 preconnect "ssh -C -o 'CompressionLevel 9' -f -L 1234:mailrechner:110 mailrechner sleep 20 </dev/null >/dev/null";
System-Installation von sshd:
-
Als Root den Host-Schlüssel erzeugen:
ssh-keygen -f /etc/ssh_host_key
Bei der Frage nach der Passphrase nur Enter drücken. Wenn eine
Passphrase angegeben wird, dann startet sshd nicht!
-
In /etc/rc.config START_SSHD=yes eintragen und
SuSEconfig starten.
-
Bei der SSH-Installation der SuSE 6.0 habe ich in
/etc/sshd_config noch dieses geändert:
IgnoreRhosts no
RhostsAuthentication yes
RhostsRSAAuthentication yes
PasswordAuthentication yes
Tipps zur Benutzung:
-
Wenn irgendetwas nicht klappt, dann sollte man es mit der Option
"-v" probieren.
-
Mit der Option "-C" werden Daten komprimiert übertragen.
-
Wenn so eine Fehlermeldung mit -v kommt:
hphalle3: Trying rhosts or /etc/hosts.equiv with RSA host authentication.
hphalle3: Remote: Accepted by .rhosts.
hphalle3: Remote: Your host key cannot be verified: unknown or invalid host key.
hphalle3: Remote: The host name used to check the key was 'hphalle3.informatik.tu-muenchen.de'.
hphalle3: Remote: Try logging back from the server machine with the canonical host name using ssh, and then try again.
hphalle3: Server refused our rhosts authentication or host key.
dann einfach Paßwort eingeben und sich zurückloggen:
ssh -v hphalle3.informatik.tu-muenchen.de
und solange "im Kreis" loggen, bis keine Paßwortfrage mehr kommt.
-
Man kann auch über einen Rechner zu einem anderen tunneln.
Mit folgendem Aufruf entsteht ein Tunnel vom lokalen Port 1300
zum Port 8009 des Rechners wwwcache, wobei aber die
SSH-Verbindung zu dem Rechner hp3 geht. Man braucht dazu auf
wwwcache keinen Login besitzen!
ssh -C -L 1300:wwwcache:8009 hp3 sleep 1000 </dev/null
>/dev/null
Wenn man jetzt den lokalen Squid oder
WWWOffle noch so konfiguriert:
cache_host localhost parent 1300 7
und in /etc/inetd.conf den UDP-Echo-Dienst
freischaltet:
echo dgram udp wait root internal
dann erhaelt man eine komprimierte Verbindung zu wwwcache und kann
lokal wie gewohnt über Squid darauf zugreifen.
Der Trick mit dem UDP-Echo ist notwendig, weil Squid per ICP einen
anderen Squid kontaktieren will. Jedoch wird von der SSH nur TCP
getunnelt und ICP ist aber ein UDP-basiertes Protokoll.
Für WWWOffle ist der Umstand mit dem
UDP-Echo nicht nötig.
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.
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 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.
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:
-
Alle Dateien nach /usr/local/lib/latex2html/ kopieren.
-
cd /usr/local/lib/latex2html/
-
./install-test
-
export TEXINPUTS=$TEXINPUTS:/usr/local/lib/latex2html/texinputs
Aufruf:
latex2html -address '<A
href="http://www.loescher-online.de/">Stephan
Lö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 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)
Der MultiArcade Machine Emulator (MAME) sucht seine
CHEAT.DAT in dem Verzeichnis, das in
~/xmame/xmamerc als mamedir angegeben ist.
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.
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.
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
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
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.
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%";
Wenn irgendetwas nicht funktioniert, dann mit -vv aufrufen.
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.
Dieser höchst interessanten Software widme ich gerne
eine eigene Seite.
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:
-
Das rote Auge markieren.
-
Die Markierung mit "Feather" um 1-5 Pixel erweitern, da die
Änderung sonst zu scharf wird.
-
Im Channelmixer (RMT->Filters->Colors->Channel Mixer)
Ausgabekanal auf "Rot" stellen und folgende Werte eintragen:
Rot: 10
Grün: 60
Blau: 30
Eine ausführliche Anleitung dazu gibt es hier.
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.
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
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 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 setzt alle Windows-Systemaufrufe in X11-Aufrufe um und erreicht
damit eine erstaunliche Geschwindigkeit.
Installation von Hand:
cp server