Inhalt:
- Vorwort
- Literatur
- Serielle Verbindungen
- Nullmodem
- Modem-Verbindungen
- PPP
- PPP-Server
- Booten
- Bootdisk
- Bootsektor kopieren
- LILO
- Init-Parameter
- Rechner ohne Platte booten
- Fehlermeldungen beim 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
- Suid-Scripten
- Swap (Paging)
- "Zerstörte" Terminals
- Patch mit Diff erstellen
- Inode-Anzahl einstellen
- Tips zu Postscript
- Referenzen auf eine Homepage
feststellen
- Bemerkungen zur SuSE 6.0
Installation
- CD und CDRW brennen
- Kernel Oops analysieren
- Beeps ausschalten
- Software
- Perl
- LaTeX (teTeX) einrichten
- StarOffice
- PovRay
- finddupe
- c't-Rom
- XEmacs einrichten und Tips
- WGet
- Sound-Programme
- RPM
- Rosegarden
- Vacation / Procmail
- Mail weiterleiten mit
Procmail
- cdda2wav
- PGP
- TCP-Wrapper
- SSH (Secure Shell)
- Faxen
- MGetty
- VGetty als Anrufbeantworter
- CVS
- LaTeX2HTML
- Ghostscript
- X-Mame
- Netscape
- WindowMaker
- GCC (ehem. EGCS)
- SANE
- Libraries
- GGI
- MESA
- Emulatoren
- DOSEMU
- Wine
- Bochs
- System-Konfiguration
- Kernel-Einstellungen
- Bootvorgang / Programme
starten
- Grundlegende
Netzkonfiguration
- Drucker
- INETD
- Tastatur (Delete und
Backspace)
- Benutzer-Einstellungen (Shell,
X11)
- FVWM2
- HTTPD / WWW-Server
- WWW-Cache: Squid
- WWW-Cache: WWWOffle
- Sendmail
- Fetchmail
- News (INN)
- FTP
- Fonts installieren
- NCR53c400a-SCSI-Karte
verwenden
- Zeitzone einstellen
- UMSDOS
- Images von Platten mit dem
Loopdevice mounten (oder auch MTools)
- Benutzer und System-Verwalter
einrichten
- X11 absichern
- Device-Filesystem (devfs)
- ALSA
- RAID / Multiple Devices (MD)
- Meine Programme
- Alle referenzierten Links
dieser Seite als ZIP-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. Der 386 wurde nach
einem Jahr dann durch einen P-200 mit 128MB abgelöst.
Seit der Erstinstallation habe ich einiges am System verändert.
Dadurch kann es sein, daß manche Einstellungen für das alte Linux
noch stimmen, aber für das aktuelle angepaßt werden müssen.
Dann verging eine lange Zeit mit SuSE 4.4 mit Kernel 2.0.33 und
libc.so.5.4.7.
Zur Zeit läuft bei mir SuSE 6.0 mit Kernel 2.0.33 und glibc.
Kommentare (und Fehlerberichtigungen) sind immer willkommen, am besten
per Mail: loescher@leo.org
Ich möchte allen danken, die mir bei der Installation geholfen haben
und mir bei Fragen und Problemen weitergeholfen haben. Besonderer
Dank geht hiermit an alle hilfsbereiten Menschen in:
de.comp.os.unix.linux.misc
de.comp.os.unix.linux.hardware
de.comp.os.unix.x11
de.comp.os.unix.networking
maus.os.linux
In diesem Abschnitt lege ich Hyperlinks zu Dokumenten, die mehrere
Themen zu Linux abdecken und nicht speziell einsortiert werden sollten.
Meine Linux-Bookmarks
ISDN und alles über Internetworking
S.u.S.E. Support-Datenbank
Linux Wegweiser für Netzwerker
Linux Wegweiser zur Installation & Konfiguration
Linux HOWTO Index
Linux Tips & Tricks von Peter Sobisch
Deutsche Unix-Einführung
Englische Unix-Einführung
Firewall Handbuch für LINUX 2.0 und 2.2
Und natürlich das Usenet::
de.comp.os.linux.misc
de.comp.os.linux.hardware
de.comp.os.linux.x
de.comp.os.linux.networking
maus.os.linux
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:
-
Am besten (und einfachsten) mit
mgetty
:
Dazu trägt man in /etc/initab nur diese Zeile ein:
nu:123:respawn:/usr/local/sbin/mgetty -r -s 115200
nullmodem
Und in /dev/ erstellt man den Link /dev/nullmodem ->
/dev/ttyS0.
Man kann mgetty nicht testweise von Hand starten, sondern nur
über init!
In /etc/gettydefs muß
dann diese Zeile hinein:
F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F115200
-
Wenn man keinen
mgetty
hat (kann das wahr sein?), dann muß man
den getty so einstellen:
In /etc/inittab diese Zeile eintragen:
S1:456:respawn:/sbin/getty ttyS1 DT1200 vt100
in /etc/default/getty.ttyS1:
TIMEOUT=60
WAITFOR=\r
in /etc/gettydefs:
#1200 bps Dumb Terminal entry
DT1200# B1200 CS8 CLOCAL # B1200 SANE -ISTRIP CLOCAL #S @L login: #DT1200
Mit dieser Konfiguration wurde eine Verbindung mit dem C64
ermöglicht.
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.
-
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
Zuerst konfiguriert man den
mgetty
um Modem-Verbindungen zu ermöglichen.
Wenn man dabei das "Auto-PPP" von mgetty aktiviert, dann ist man schon
fertig. Wenn man es allerdings über einen Login-Vorgang lösen will,
dann geht das so:
Dann richtet man einen PPP-Account ein (entnommen aus
NAG):
In /etc/passwd:
ppp:x:500:200:PPP Account:/tmp:/usr/local/bin/ppplogin
(Natürlich bei Bedarf mit anderen uid und gid.)
Und /usr/local/bin/ppplogin:
#!/bin/sh
# ppplogin - Script startet pppd beim Login
mesg n
stty -echo
exec /usr/sbin/pppd -detach silent modem crtscts
Zum Login verwendet man ein gewöhnliches "ppp-on":
#!/bin/bash
stty 57600 cs8 pass8 crtscts </dev/modem
pppd -ipx-protocol mtu 296 debug crtscts defaultroute \
netmask 255.255.255.0 /dev/modem 57600 \
connect '/usr/sbin/chat -v -f /root/private/remote.chat'
Das Chat-Script sieht so aus:
ABORT BUSY ABORT "NO CARRIER" ""
ATZ OK
ATL1M1DPtelefonnummer TIMEOUT 90
CONNECT "" login: ppp assword: geheimes_passwort
Für den Palm-Pilot reicht ein simpler pppd-Aufruf:
/usr/sbin/pppd /dev/modem 19200 :172.16.0.100 local persist
-
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
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
mount /dev/fd0 /mnt/a
rd /a/lost+found/
md /a/{boot,dev}
cp -R /dev/{null,fd0} /a/dev/
cp /boot/boot.b /a/boot
cp bdlilo.conf /a
cp /c/linux/2214 /a
md -p /a/dev/scsi/host1/bus0/target5/lun0
cp -R /dev/scsi/host1/bus0/target5/lun0/part5 /a/dev/scsi/host1/bus0/target5/lun0
lilo -v -C bdlilo.conf -r /a/
umount /dev/fd0
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
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/conf.modules das eintragen:
alias char-major-4 off
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:
- 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@host.domain:/dev/st0 .
- tar -cvf - waszusichern | \
( rsh host.domain -l username tar -xvf /dev/st0 - )
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
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/`
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.
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.
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 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éYÄyPÃâ`Y0;zIb!+ìÀyí-prríq`
"q^),wí ÉÞð+qó/62øaðvÀÃkó,xË1(teÿIÈ,Ù8âcË
x"Öæ0`;ÇàdTÚÉëYv{!tØ,BÃtæ0È0p||=â1Î]wÈS`õå4
weil man z.B. versehentlich ein cat test.gif losgelassen
hat, dann hilft das Kommando reset in diesem
Terminal. Alternativ funktioniert auch
"<Ctrl>-v <Esc> c <Enter>".
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
kann man, indem man in
Altavista oder
Infoseek nach folgendem
sucht:
link:www.leo.org/~loescher
Hotbot hat diese Funktion in der
"Look for"-Auswahlbox.
-
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.
-
Image erstellen:
mkisofs -o Image -J -r verzeichnis_oder_file(s)
oder ohne -T, dann kein TRANS.TBL
Mit "-l" wird es unter DOS unbrauchbar!
-
Image mounten:
mount -t iso9660 -o ro,loop=/dev/loop0 IMAGEFILE
/mnt/cdrom
-
Brennen von Daten-CD:
Testen:
cdrecord -dummy -v speed=4 dev=0,3,0 IMAGEFILE
Brennen:
cdrecord -v speed=4 dev=0,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
cdrecord -v speed=4 dev=0,3,0 -pad -audio /tmp/*.wav
Wenn die Tracks übergangslos sein sollen "-dao" verwenden:
cdrecord -v speed=4 dev=0,3,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=0,3,0 IMAGEFILE -pad -audio /tmp/*.wav
-
Bei CD-RWs muß man einfach zusätzlich die Option
-blank=fast beim Brennen verwenden.
-
Infos:
cdrecord -scanbus
cdrecord -atip -v speed=4 dev=0,3,0
cdrecord -prcap -v speed=4 dev=0,3,0
cdrecord -inq -v speed=4 dev=0,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
Perl ist normalerweise bereits intalliert.
Sehr empfehlenswert sind noch die folgenden Module:
Time-modules-100.010301.tar.gz
Data-Dumper-2.08.tar.gz (bereits bei 5.005_02 dabei!)
libnet-1.0505.tar.gz
MD5-1.7.tar.gz
libwww-perl-5.08.tar.gz
Tk400.202.tar.gz
sha-1.2.tar.gz
MLDBM-2.00.tar.gz
Diese können nach dem Auspacken ganz einfach installiert werden:
perl Makefile.PL
make
make test
make install
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.
Es gibt auch noch eine
ausführliche
Installations-Anleitung.
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):
-
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 (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 Tips
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 Tips:
- Wenn man mühevoll ein Makro aufgezeichnet hat und dieses dann z.B.
auf eine Taste legen will, dann aktiviert man einen Lisp-fähigen
Buffer (z.B. *scratch*) und tippt "M-x insert-kbd-macro"
und antwortet entweder mit dem Makronamen oder nur mit Enter für das
letzte aufgezeichnete Makro. XEmacs fügt dann das Makro im Klartext
ein.
- .el zu .elc kompilieren geht mit:
xemacs -batch -f batch-byte-compile perl-mode.el
- Ein Stück Programm-Code kann man auskommentieren, indem man das
Stück markiert und dann: M-x comment-region RET
- Einem Stück Text kann man am Zeilenanfang einen Text,
z.B. Leerzeichen voranstellen mit C-x r t TEXT RET
- Die Region neu (modeabhängig) neu formatieren/einrücken kann
man mit M-x indent-region
-
Das XEmacs-Syntax-Highlighting kann man auch mit
htmlize.el als HTML oder mit
latexize.el als LaTeX
speichern.
-
Akzentuierte Sonderzeichen kann man nach M-x iso-accents-mode eingeben.
Das universellste und leistungsgähigste Programm zum rekursiven
WWW-Download ist WGet (wget-1.4.4).
Meine Einstellungen finden sich in
/usr/local/etc/wgetrc.
Man wechselt dann in das Zielverzeichnis (z.B.
/httpd/htdocs/mirror) und ruft wget z.B. so auf:
wget --level=2 http://www.sl.de
Dabei kann man die Rekursionstiefe (hier 2) angeben und die gewünschte
Start-URL.
Erst mit einem WWW-Cache macht WGet (zumindest
in dieser Version 1.4.4) erst Sinn. Denn wenn man WGet wie hier
beschrieben betreibt, dann wird ja jede Kopie einer WWW-Seite lokal
geändert (Pfade anpassen). Das hat zur Folge, daß beim nächsten
WGet-Update-Lauf diese Seiten wieder geholt werden. Und so werden
sie von lokalen WWW-Cache geholt.
Ich habe folgende andere Programme bereits probiert,
und sie haben sich für mich als unbrauchbar herausgestellt:
- 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)
-
Wave nach MP3 konvertiert man am besten so:
lame
-b 128 -B 224 -X5 -v -V 0 -h -k -d 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.
-
Ein riesiges Wave-File (von einer LP- oder Kassetten-Aufnahme)
kann man vollautomatisch mit
Gramofile in
einzelne Lieder aufteilen.
-
Zur Wave-Bearbeitung eignen sich
DAP und
xwave.
- rpm-2.3.11-1.i386.tar.gz installieren
- mkdir -p /var/lib/rpm
- rpm --initdb
-
Dann kann man RPM-Pakete installieren:
rpm -v --nodeps -i file.rpm
-
Inhalt auflisten:
rpm -qlp file.rpm
-
Paket deinstallieren:
rpm -e file
-
Suchen, welches RPM-Paket ein installiertes File enthält:
rpm -q -f FILE
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@leo.org"
: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@leo.org"; \
echo "http://www.leo.org/~loescher/"; \
) | $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:
-
~/.forward:
|/usr/bin/procmail
-
~/.procmailrc:
# Diese .procmailrc leitet Mail an einen anderen User weiter
ZIELUSER="user1@rechner.net"
# Man muß nur noch in ~/.forward das eintragen:
# "|/usr/bin/procmail" (Ohne Anführungszeichen!)
SHELL=/bin/sh
:0 c
* !^X-Loop: Mailweiterleitung
| formail -A "X-Loop: Mailweiterleitung" | $SENDMAIL -oi ${ZIELUSER}
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 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-Schlüssel erzeugen:
pgp -kg
1024 Bit wählen
PGP-Benutzerkennung (user ID): Stephan Loescher
<loescher@leo.org>
Pass-Phrase (=Mantra): (Paßwort zur Verschlüsselung des
Secret-Keyrings)
Informationen anschauen:
pgp -kvc loescher
Type Bits/KeyID Date User ID
pub 1024/B28BBFBD 1997/10/28 Stephan Loescher loescher@leo.org
Key fingerprint = F5 AA 34 B6 CD 6F 0D CF 37 05 BB 91 1F E3 00 67
Dabei ist "B28BBFBD" die Signatur!
(Beweis: mit pgp -krs löschen und pgp -ks wieder erzeugen)
Schlüsseltyp ist "RSA".
(Das erfährt man erst, wenn man seine eigene Signatur entfernt
und neu erstellt.)
-
Dann kann man sich (wenn man will) den Schlüssel von
c't nach dieser
Anleitung
signieren lassen.
Die Antwort-Mail wird so importiert:
pgp -ka ~/Mail/pgp-ct.txt
Dann sollte man noch den
PGP-Key von c't aufnehmen:
pgp -ka ~/Mail/certfctk.asc
Mit "pgp -kc loescher" kann man sich dann wieder die
Informationen anschauen.
Mit "pgp -kxa loescher" kann man den Public-Key in ein
File extrahieren und dieses File dann an seine
Kommunikationspartner verteilen. (Am besten auf seiner WWW-Homepage)
-
Wenn man eine neue EMail-Adresse in seinen Schlüssel aufnehmen
will, dann geht das mit pgp -ke
-
PGP-Schlüssel erzeugen:
pgpk -g
1 und dann 3 wählen
PGP-Benutzerkennung (user ID): Stephan Loescher
<loescher@leo.org>
Bei Gültigkeit 0 (forever) eingeben.
Pass-Phrase (=Mantra): (Paßwort zur Verschlüsselung des
Secret-Keyrings)
Informationen anschauen:
pgpk -vc loescher
Type Bits KeyID Created Expires Algorithm Use
sec+ 1024 0x2D435AAA 1998-11-06 ---------- DSS Sign & Encrypt
sub 2048 0x7C25EF88 1998-11-06 ---------- Diffie-Hellman
uid Stephan Loescher <loescher@leo.org>
SIG! 0x2D435AAA 1998-11-06 Stephan Loescher <loescher@leo.org>
KeyID Trust Validity User ID
* 0x2D435AAA ultimate complete Stephan Loescher <loescher@leo.org>
Stephan Loescher <loescher@leo.org>
-
Dann kann man sich (wenn man will) den Schlüssel von
c't nach dieser
Anleitung
signieren lassen.
Die Antwort-Mail wird so importiert:
pgpk -a ~/Mail/pgp-ct.txt
Dann sollte man noch den
PGP-Key von c't aufnehmen:
pgpk -a ~/Mail/certfctk.asc
Mit "pgpk -c loescher" kann man sich dann wieder die
Informationen anschauen.
Mit "pgpk -xa loescher" kann man den Public-Key in ein
File extrahieren und dieses File dann an seine
Kommunikationspartner verteilen. (Am besten auf seiner WWW-Homepage)
-
Wenn man eine neue EMail-Adresse in seinen Schlüssel aufnehmen
will, dann geht das mit pgpk -e
-
Am einfachsten verwendet sich PGP mit
XEmacs/Gnus und
mailcrypt, indem man in seine
~/.gnus dies einträgt:
(load "mailcrypt")
(cond ((fboundp 'mc-setversion) (mc-setversion "5.0")) ) ;; oder "2.6"
(autoload 'mc-install-write-mode "mailcrypt" nil t)
(autoload 'mc-install-read-mode "mailcrypt" nil t)
(add-hook 'message-mode-hook 'mc-install-write-mode)
(setq mc-encrypt-for-me t
mc-passwd-timeout 6000
mc-always-replace 'never)
(add-hook 'gnus-summary-mode-hook 'mc-install-read-mode)
(define-key message-mode-map [f7] 'mc-sign)
(define-key message-mode-map [f8] 'mc-encrypt)
(define-key gnus-summary-mode-map [f7] 'mc-verify)
(define-key gnus-summary-mode-map [f8] 'mc-decrypt)
Dann kann man mit F8 Ver- und Entschlüsseln und mit F7 Signieren
und die Signatur überprüfen.
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.
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.
-
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
Tips 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
oder:
cat fax.test | pbmtext | pbm2g3 > fax.g3
PS nach FAX:
gs -q -dSAFER -dNOPAUSE -sDEVICE=faxg3 -sOutputFile=fax.%d.g3
input.ps -c quit
Es geht auch komfortabler mit ps2fax.
Abgesendet werden die G3-Files dann mit:
faxspool NUMMER FILES
Die Fax-Queue kann man mit faxq anzeigen lassen.
Die Umkehrung von G3 in ein darstellbares Bild geht mit:
g32pbm fax.1.g3 > fax.pbm
Root sollte irgendwann die Queue mit faxrunq absenden.
In Makefile muß man
ECHO="echo"
in
ECHO="/bin/echo"
umändern. und "-DAUTO_PPP" zusätzlich bei den Defines angeben. Dann:
cp policy.h-dist policy.h
make testdisk
make
make install
Dann trägt man in /usr/local/etc/mgetty+sendfax/faxheader
seinen Faxkopf ein. In
/usr/local/etc/mgetty+sendfax/mgetty.config habe ich folgendes
geändert:
fax-id 49 8142 7257
speed 115200
# Speziell für Creatix LC144VF:
# init-chat "" \d\d\d\d\d\d+++\d\d\dATE1Q0V1 OK ATS0=0&D3&K3 OK
# switchbd 19200
# Speziell für US Robotics Message Modem:
init-chat "" ATZ OK ATE1Q0V1 OK ATS0=0&D3 OK
und in /usr/local/etc/mgetty+sendfax/sendfax.config habe ich
folgendes geändert:
fax-devices modem
fax-id 49 8142 7257
dial-prefix ATDT
# Speziell für Creatix LC144VF:
# modem-handshake AT&K3
und in /usr/local/etc/mgetty+sendfax/login.config habe ich
folgendes geändert, um PPP ohne vorheriges Login zu ermöglichen:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug
Zu letzterem braucht man noch diesen Eintrag in
/etc/pap-secrets:
* * ""
und der anrufende Client braucht eine eigene IP-Adresse. Man kann auch
so ein feste IP-Adresse vergeben:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth :192.168.1.99 -chap +pap login debug
Vgetty ist im
mgetty
-Paket dabei. Zum Kompilieren wechselt man ins Unterverzeichnis
voice und:
make
make install
cp voice.conf-dist /usr/local/etc/mgetty+sendfax/voice.conf
Wichtig: VGetty liest auch die Datei
/usr/local/etc/mgetty+sendfax/mgetty.config ein und benutzt
davon zum Beispiel die Option init-chat.
In /usr/local/etc/mgetty+sendfax/voice.conf habe ich dann
folgendes geändert:
port_speed 115200
rings 2
dtmf_program /usr/local/bin/dtmf.sh
voice_devices modem
VGetty wird einfach anstelle von megtty in initab eingetragen:
mo:123:respawn:/usr/local/sbin/vgetty modem
Dann kann man eine Ansage einrichten:
voctopvf file.voc | pvftormd Rockwell 4 > /var/spool/voice/message/standard.rmd
oder
voctopvf file.voc | pvftormd US_Robotics 1 > /var/spool/voice/message/standard.rmd
Wiedergeben kann man eingegangene Anrufe in
/var/spool/voice/incoming über das Modem:
vm play -s filename.rmd
oder über die Soundkarte:
rmdtopvf filename.rmd | pvfspeed -s 8000 | pvftobasic > /dev/audio
VGetty kann auch DTMF erkennen und danach Aktionen auslösen.
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.leo.org/~loescher/">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.leo.org/~loescher/">Stephan Löscher</A>,\
20 Nov 1998' -info '' $i; done
/bin/rm `find | grep -v 'html\|gif'` `find -size 0`
Wenn man die Stylesheets nicht benötigt, dann sollte man aus den
HTML-Files die Zeilen mit den Links auf die CSS-Files löschen.
Ghostscript 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 -i; done
rm *.nif
Wenn man kein Motif hat, dann: rm netscape-dynMotif
In /etc/profile.local trägt man dann noch das ein:
export MOZILLA_HOME=/opt/netscape
Wenn man die Fensterumschaltung mit Alt-Tab wie unter MS-Windows
will, dann muß man vor dem Kompilieren in src/wconfig.h.in
das einstellen:
#define WEENDOZE_CYCLE
Und in ~/GNUstep/Defaults/WindowMaker diese Zeile
hinzufügen:
WindozeCycling = YES
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
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/wineserver /usr/local/bin/wineserver
cp windows/x11drv/wineclipsrv /usr/local/bin/wineclipsrv
cp wine /usr/local/bin/wine
cp loader/dos/dosmod /usr/local/bin/dosmod
cd documentation
cp wine.man /usr/local/man/man1/wine.1
cp wine.conf.man /usr/local/man/man5/wine.conf.5
Für einen Fehlerreport startet man ein Programm so:
wine -debugmsg +relay xyz.exe >& /tmp/wine.debug
und postet die letzten Zeilen mit "Call" und "Return" nach
comp.emulators.ms-windows.wine.
Bochs setzt keine Systemaufrufe um wie Dosemu oder Wine, sondern
emuliert einen x86-Prozessor samt Bios und anderer Hardware. Das hat
den Vorteil, daß eigentlich jede Software damit funktioniert und auch
Bochs nicht auf Intel-Hardware angewiesen ist, aber dafür ist Bochs
auch deutlich langsamer als Dosemu oder Wine.
Konfiguration von Bochs:
-
Harddisk-Image erstellen:
dd if=/dev/zero of=BochsHDD bs=512 count=229500
-
BootFloppy-Image erstellen: (Mit format, sys und fdisk!)
dd if=/dev/fd0 ibs=512 of=BootDisk
- Booten:
bochs -bootA
fdisk
-
Nochmal Booten:
bochs -bootA
formatieren, wenn es fdisk noch nicht gemacht hat:
format /u /s c:
sys c:
-
Dann per loop-Device mounten oder per
MTools ansprechen und gewünschte Software daraufkopieren.
Bsp.: Win95:
Alle Files von der CD nach c:\inst, dann in dieses Verzeichnis
gehen und:
setup /C /im /id /is /iq /in
Das sollte man unbedingt einschalten:
General setup:
- Networking support
- System V IPC
Networking options:
- TCP/IP networking
- IP: Drop source routed frames
- IP: Allow large windows (not recommended if <16Mb of memory)
(sonst alles aus!)
Network device support:
- Network device support
- Dummy net driver support (M)
- PPP (point-to-point) support (M)
(sonst alles aus!)
Character Devices:
- Advanced Power Management BIOS Support und "Power off on shutdown"
wenn man will, daß sich der Rechner beim HALT ausschaltet.
Sound:
[*] Generic OPL2/OPL3 FM synthesizer support
[*] Support for MAD16 and/or Mozart based cards
[*] /dev/dsp and /dev/audio support
[*] MIDI interface support (Aber nur wenn man MIDI auch einsetzt!)
[*] FM synthesizer (YM3812/OPL-3) support
(530) MAD16 audio I/O base 530, 604, E80 or F40
(7) MAD16 audio IRQ 7, 9, 10 or 11
(3) MAD16 audio DMA 0, 1 or 3
(0) MAD16 second (duplex) DMA 0, 1 or 3
(0) MAD16 MIDI I/O base 300, 310, 320 or 330 (0 disables)
(9) MAD16 MIDI IRQ 5, 7, 9 or 10
(65536) Audio DMA buffer size 4096, 16384, 32768 or 65536
(sonst alles aus)
Wenn man eigene Programme und Dienste beim Systemstart automatisch
starten will, dann sollte man erst wissen, wie das System bootet:
Es werden vom init-Prozeß den Runlevels entsprechend die Files
/sbin/init.d/boot, /sbin/init.d/boot.local und dann alle Files
die mit "S" beginnen in /sbin/init.d/rc2.d gestartet.
Hier erkennt man auch, daß es falsch wäre in
/sbin/init.d/boot.local z.B. den squid zu starten,
denn es fehlen ja noch wichtige Systemdienste, wie z.B.
syslog.
Deshalb ist es ratsam in /sbin/init.d/rc2.d dafür folgende Links
anzulegen:
ln -s ../local.setup S90local
ln -s ../local.setup K90local
und das File
/sbin/init.d/local.setup,
in dem dann alle gewünschten
Programme am Ende des Bootvorgangs gestartet werden.
Darin wird ein Programm für das USR Message Modem aufgerufen:
/usr/local/bin/usr-mm-check
Und dann habe ich noch für das USR Message Modem ein Skript in
/sbin/init.d, um in den autarken Modus zu schalten:
/usr/local/bin/usr-smp
Empfehlenswert ist das Buch
"TCP/IP Network Administration" aus dem O'Reilly-Verlag
Auch Rechner ohne Netzverbindung oder mit einer zeitweisen
Netzverbindung, wie etwa durch PPP brauchen eine
korrekte Netzkonfiguration.
-
Rechnernamen einstellen mit:
hostname name
Dabei ist name der unqualifizierte Hostname, also z.B.
"sl" statt "sl.sl.de".
Je nach Konfiguration sollte man eventuell auch in
/etc/HOSTNAME diesen Namen eintragen.
Wenn man keinen offiziellen Domain-Namen hat, dann sollte man
einen verwenden, der im Internet nicht vorkommt oder im
RFC 2606 definiert ist. Das wären die Domains
.test, .example, .invalid und .localhost. Desweiteren gibt es
sicher keine zweistelligen .de-Second-Level-Domains, also
z.B. sl.de
- Alle Rechnernamen, die nicht per DNS oder NIS aufgelöst werden
müssen in /etc/hosts eingetragen werden. Wenn man kein DNS
oder NIS verwendet, dann müssen alle Rechner hier eingetragen
werden. Erforderlich sind mindestens folgende Einträge:
127.0.0.1 localhost
172.16.0.135 sl.sl.de sl.de sl www.sl.de
Genaueres zur Namensauflösung und DNS siehe weiter unten.
-
Netzkonfiguration mit YAST
In /etc/rc.config:
NAMESERVER="127.0.0.1 131.159.0.176 131.159.4.1"
(Fürs LRZ: 127.0.0.1 129.187.10.25 129.187.16.1)
SEARCHLIST="sl.de informatik.tu-muenchen.de"
FQHOSTNAME=sl.sl.de
CHECK_ETC_HOSTS=no
Mit SuSEconfig wird dann automatisch /etc/host.conf
und /etc/resolv.conf erstellt.
-
Konfiguration des Loopback-Interface (Bei SuSE 6.0 passiert das
automatisch):
ifconfig lo 127.0.0.1
Es sollte ifconfig (ohne Parameter) soetwas anzeigen:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:409 errors:0 dropped:0 overruns:0
TX packets:409 errors:0 dropped:0 overruns:0
-
Routen-Eintrag erstellen für das Loopback-Interface (Bei SuSE
6.0 passiert das automatisch):
route add 127.0.0.1
route -n sollte unter anderem eine solche Zeile ausgeben:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 lo
-
Jetzt kann man das Loopback bereits testen:
ping localhost
und
telnet localhost
sollte funktionieren.
-
Für spätere PPP-Verbindungen haben wir in /etc/hosts ja
bereits 172.16.0.135 eingetragen. Wenn aber keine Verbindung besteht,
dann kann zu dieser Adresse keine Verbindung aufgebaut werden,
obwohl es ja der eigene Rechner ist. Abhilfe schafft das
"Dummy Interface", das man wie folgt konfiguriert:
ifconfig dummy0 sl
route add sl
Bei SuSE 6.0 reichen diese Einträge in /etc/rc.config:
NETCONFIG="_0"
IPADDR_0="172.16.0.135"
Es sollte ifconfig (ohne Parameter) soetwas anzeigen:
dummy0 Link encap:10Mbps Ethernet HWaddr 00:00:00:00:00:00
inet addr:172.16.0.135 Bcast:172.16.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
-
Namensauflösungen mit dem Domain Name Service (DNS).
Beste Literatur dazu ist
"DNS and BIND" aus dem O'Reilly-Verlag.
Laut Dokumentation sollte der Resolver auch ohne named
funktionieren, indem man die nötigen Rechner in /etc/hosts
einträgt und /etc/resolv.conf löscht. Das funktioniert
aber bei mir nicht. (Ein "host localhost" ergibt bei mir
nur "Host not found, try again.".) Auch egal.
Die bessere Lösung ist ein DNS mit named als
"caching-only-server", weil damit
erstens lokale Anfragen funktionieren (*grins*) und zweitens
keine /etc/hosts gepflegt werden müssen und
Nameserver-Anfragen bei PPP-Verbindungen nur einmal über die Leitung
gehen und dann in Zukunft lokal beantwortet werden.
Man braucht folgende Files:
/etc/named.boot
/var/named/named.local
/var/named/named.hosts
Das habe ich nicht verändert:
/var/named/root.cache
und startet dann /usr/sbin/named.
Sollte der named nicht starten oder nur Fehlermeldungen bringen,
dann ist wahrscheinlich das dummy0-Device nicht
konfiguriert. (Siehe oben.)
Interessante Möglichkeit:
Man kann sich den aktuellen Cache mit dem Kommando
ndc dumpdb in das File /var/tmp/named_dump.db
schreiben lassen. Wenn man aus dieser Datei die SOA-Records
entfernt, dann kann man beim nächsten Start diese Daten dem
named als root.cache verfüttern.
mkdir /var/spool/lpd /var/spool/lpd/myprinter
chown lp.lp /var/spool/lpd /var/spool/lpd/myprinter
chmod ug=rwx,o=rx /var/spool/lpd /var/spool/lpd/myprinter
cd /var/spool/lpd/myprinter
touch .seq errs status lock
chown lp.lp .seq errs status lock
chmod ug=rw,o=r .seq errs status lock
Files:
Die Datei /etc/printcap
(sollte "-rw-r-r-" sein.) ist selbsterklärend. (Es gibt
allerdings Zeitgenossen, die alles in eine Zeile ohne Kommentare
schreiben... tja...) Damit wird die Verbindung von Druckername und
Filter hergestellt.
Ein Filter nimmt den Standard-Input, führt eine Aktion aus und gibt
das Resultat auf Standard-Ausgabe aus. Ein Filter, der Postscript
entgegen nimmt und für einen BJC-600 aufbereitet sieht so aus:
#!/bin/sh
/usr/bin/gs -q -dSAFER -dNOPAUSE -r360x360 -sDEVICE=bjc600 -sPAPERSIZE=a4 -sOutputFile=- -
Zu beachten ist noch, daß der Filter die richtigen
Ausführungsrechte hat.
Bei mir: "-rwxr-xr-x root.root".
Erster Versuch:
lpd
ls -l | lpr -Pmyprinter
Wenn das klappt, dann sollte man den "lpd" beim Systemstart starten
lassen.
In /etc/services stehen die Dienste, die der Rechner zur
Verfügung stellt inklusive der Portnummern.
In /etc/inetd.conf steht dann welches Programm der
inetd starten
soll, wenn jemand an einem bestimmten Port ankommt.
Änderungen werden durch Neustart des inetd wirksam:
kill -HUP pid
Beispiel:
/etc/services:
fortune 7777
/etc/inetd.conf:
fortune stream tcp nowait nobody /usr/bin/fortune
Und dann:
telnet localhost 7777
(Sollte prinzipiell funktionieren.)
Mit dem nachfolgenden funktionieren Backspace und Delete wie erwartet
in allen (!) Applikationen, sowohl auf der Console, als auch im XTerm
und auch mit Motif-Applikationen.
Wenn jemand ein Gegenbeispiel findet, dann möge er sich bei mir
melden!
Zum Testen der Einstellungen eignen sich:
- xmodmap -pke
- xev
- showkey
- xkeycaps (Damit kann man auch ändern!)
Einstellungen in folgenden Files:
/usr/local/bin/localkeydefinitions
(In /sbin/init.d/local.setup starten)
~/.inputrc (Das ist ab SuSE 5.1 nicht
mehr nötig.)
~/.Xdefaults
(Müssen natürlich auch geladen werden:
xrdb -merge ~/.Xdefaults)
Für SuSE 6.0 lade ich zu der Standard-.Xdefaults noch meine
~/.Xdefaults.private
~/.Xmodmap
(Starten mit: xmodmap ~/.Xmodmap)
Für SuSE 6.0 verwende ich diese
~/.Xmodmap
Weitere Informationen
Umfassende Informationen
Als normaler Benutzer verwende ich für den Systemstart folgende
Dateien:
~/.Xresources
~/.bashrc
~/.profile
~/.xinitrc
~/.xserverrc
~/.xsession
In /usr/X11R6/lib/X11/fvwm2/.fvwm2rc stehen die
Standard-Einstellungen.
Wenn aber ein ~/.fvwm2rc
existiert, dann wird dieses verwendet.
-
Wenn man den vorinstallierten Apache (httpd) der SuSE 4.4,
dann ist das WWW-Verzeichnis in: /httpd/
Was ist noch zu tun?
-
In /httpd/conf/httpd.conf unter "ServerAdmin"
die Webmaster-EMail eintragen und unter "ServerName"
einfach "www.sl.de" eintragen (Natürlich muß es den
Hostnamen geben).
-
In /etc/rc.config "START_HTTPD=yes" eintragen
und SuSEconfig starten.
Alle WWW-Dokumente sollen nach /httpd/htdocs gelegt
werden.
Benutzer können eigene Homepages in ~/public_html/ anlegen.
-
Man kann auch einen neuen Apache
installieren. Mit
./configure --prefix=/opt/apache
wird angegeben, daß Apache nach /opt/apache installiert
werden soll.
Dann ändert man in /opt/apache/etc/httpd.conf dieses:
Port 80
ServerName www.sl.de
In /opt/apache/etc/access.conf trägt man dieses ein:
<Directory "/httpd/htdocs">
<Directory "/httpd/cgi-bin">
Wenn man den Benutzern Zugriffskontrolle mittels
.htaccess-Dateien erlauben will, dann muß man noch aus
AllowOverride None ein AllowOverride All machen.
und in /opt/apache/etc/srm.conf trägt man dieses ein:
DocumentRoot "/httpd/htdocs"
ScriptAlias /cgi-bin/ "/httpd/cgi-bin/
Zu guter Letzt muß der Apache noch beim Hochfahren gestartet
werden. Das passiert mit einem Eintrag in
/sbin/init.d/local.setup
.
Der Rest des unter dem ersten Unterpunkt gesagten trifft dann auch
hier zu.
-
Zugriffskontrolle mittels .htaccess-Dateien:
Man erstellt in dem Verzeichnis, das geschützt werden soll eine
Datei .htaccess:
AuthType Basic
AuthName Hochgeheime_Daten
AuthUserFile /home/loescher/.htpasswd
AuthGroupFile /home/loescher/.htgroups
<Limit GET>
require group zugriffsgruppe
</Limit>
und die Datei /home/loescher/.htgroups:
zugriffsgruppe: loescher
Dann vergibt man für den Benutzer "loescher" ein Paßwort:
/opt/apache/bin/htpasswd -c ~/.htpasswd loescher
Gründe für einen lokalen WWW-Cache:
- Alle WWW-Clients und alle Benutzer können einen Cache nutzen.
- Mit WGet macht es erst richtig Spaß!
- Man kann offline in Ruhe im WWW "surfen".
Bemerkung: Mit Squid ab Version 2 funktioniert die Offline-Funktion
nicht mehr. Deshalb rate ich für diesen Zweck zu
WWWOffle.
Einrichtung:
./configure --prefix=/usr/local/squid
make all
make install
Dann kann man
/usr/local/squid/etc/squid.conf
bei Bedarf ändern. Es muß auch noch ein User für squid und WWW-Dienste
eingerichtet werden (bei mir User "www" in der Gruppe "infosys") und
ein Zuständiger für den Cache (bei mir webmaster).
Schließlich wird Squid gestartet:
/usr/local/squid/bin/squid -s -D &
Wenn man eine Internet-Anbindung über einen Provider mit Firewall nutzt
(das wird wohl immer so sein), dann muß man Squid so einstellen, daß
alle Anfragen von dem WWW-Proxy des Providers geholt werden.
Ich habe folgende Änderungen an meiner
/usr/local/squid/etc/squid.conf
vorgenommen:
cache_host wwwcache.informatik.tu-muenchen.de parent 8009 3130
cache_host atrbg17.informatik.tu-muenchen.de parent 3128 3130
cache_host proxy.lrz-muenchen.de parent 8080 3130
inside_firewall none
local_domain sl.de
local_ip 172.16.0.0
neighbor_timeout 10
ftpget_program /usr/local/squid/bin/ftpget
reference_age 0
cache_mgr webmaster
cache_effective_user www infosys
refresh_pattern . 0 100 525600
negative_dns_ttl 0
Man kann auch eine WWW-Kompression mit
der Secure Shell erreichen.
Die Refresh-Age-Einstellung bewirkt, daß erst Daten aus dem Cache
entfernt werden, wenn das Plattenplatz-Limit erreicht ist.
Das Refresh-Pattern besagt, daß Daten ein Jahr im Cache liegen
bleiben können. Der Zeitraum ist aus praktischen Gründen so lang
gewählt. Wenn man sich ansieht, wie alt neu empfange Objekte sind,
dann kommt man zu dieser langen Einstellung. Der Zeitstempel
"Modified" gibt an, wann das Object (auf dem Server) geändert wurde
und das kann schon sehr lange zurückliegen. Zum Beispiel ist meine
Home-Page auch schon ca. 1 Monat alt und würde vom Squid in der
Standard-Einstellung sehr bald (ca. alle 5 Tage) neu geladen werden:
180. http://www.leo.org/~loescher/
Verified 1W ago, Used 1W ago, Modified 1M ago, Expires NEVER,
3604 bytes, 0 accesses, 0 active clients,
STORE_OK, NOT_IN_MEMORY, SWAP_OK, PING_NONE,
0 Locks, Flags: EC,KU,HT
Mit dieser Einstellung kann man jetzt bestens offline WWW-Surfen.
Aber keine Angst: Der Squid prüft sehr wohl, ob seine Objekte noch
"frisch" sind wenn er online ist!
Als Proxy müssen jetzt alle WWW-Clients localhost:3128
verwenden und am besten als "No-Proxy" den lokalen Rechner eingetragen
haben.
Für Lynx muß man in /usr/lib/lynx.cfg diese Zeile eintragen:
http_proxy:http://localhost:3128/
Für die nette Zusatzfunktion "Cache-Manager" kann man man noch
/usr/local/squid/bin/cachemgr.cgi nach
/httpd/cgi-bin/cachemgr.cgi kopieren und sich dann per
http://localhost/cgi-bin/cachemgr.cgi mit Squid
"unterhalten".
(Für sensible Daten sollte man aber in squid.conf Paßwörter
vergeben.)
Gründe für einen lokalen WWW-Cache:
- Alle WWW-Clients und alle Benutzer können einen Cache nutzen.
- Mit WGet macht es erst richtig Spaß!
- Man kann offline in Ruhe im WWW "surfen".
Bemerkung: Wenn der Rechner immer online ist, dann empfehle ich
Squid.
Zur Einrichtung braucht man nur diese Zeilen in
/etc/wwwoffle/wwwoffle.conf ändern:
# Bei Options:
connect-retry = yes
# Bei StartUp:
http-port = 3128
# Bei Proxy:
http://* = localhost:1300
ftp://* = localhost:1300
# Bei Purge:
max-size = 200
default = 365
Dabei ist der Proxy bereits auf einen komprimierten SSH-Tunnel eingestellt.
Kurzfassung für SuSE 6.0 ohne SuSE-Automatik:
In /etc/rc.config:
SENDMAIL_TYPE="no"
In /etc/mail/linux.mc:
FEATURE(`nodns')dnl
FEATURE(`nocanonify')dnl
define(`SMART_HOST', `mailrelay.informatik.tu-muenchen.de')dnl
MASQUERADE_AS(`informatik.tu-muenchen.de')dnl
FEATURE(`masquerade_envelope')dnl
und dann:
m4 /etc/mail/linux.mc > /etc/sendmail.cf
Kurzfassung für SuSE 6.0 mit SuSE-Automatik:
In /etc/rc.config:
SMTP="yes"
SENDMAIL_TYPE="yes"
SENDMAIL_SMARTHOST="mail.provider.de"
# oder für GMX: SENDMAIL_SMARTHOST="esmtp:mail.gmx.net"
SENDMAIL_LOCALHOST="localhost"
SENDMAIL_RELAY=""
SENDMAIL_ARGS="-bd -om"
SENDMAIL_EXPENSIVE="no"
SENDMAIL_NOCANONIFY="no"
# Absenderadresse soll der Domainname des Providers sein und nicht
# der des lokalen Rechners:
FROM_HEADER="gmx.de"
Die Sender-Zeile im Mailheader kann durch
/etc/mail/genericstable ausgetauscht werden:
loescher loescher@leo.org
Das muß man unbedingt verwenden, wenn man z.B. von "root" Mails
über GMX verschickt, da GMX keine Mails annimmt, die von "root"
kommen. Das muß auf einen User bei GMX gemappt werden:
root loescher@gmx.de
Abschließend immer SuSEconfig aufrufen.
Ausführliche Anleitung und Details für SuSE 4.4:
-
Aliases richtet man in /etc/aliases ein:
Einträge sind in der Form:
kurzform: komplette_adresse
Beispiel:
loescher: loescher@leo.org
Aber nicht vergessen dann die Datenbank durch das Kommando
newaliases (ohne Parameter) zu aktualisieren.
-
Wenn man lokale Benutzer-Mailadressen auf andere Adressen
abbilden will, dann geht das mit /etc/userdb:
loescher:mailname loescher@leo.org
loescher:mailsender loescher@leo.org
Aus diesen File wird dann die eigentliche Datenbank so
generiert:
makemap btree /etc/userdb.db </etc/userdb
und den Eintrag in
/etc/sendmail.config/cf/sl.mc:
define(`confUSERDB_SPEC', /etc/userdb.db)dnl
Bei dem neuen Sendmail (SuSE 6.0) stellt man die Adreßumsetzung
in /etc/mail/genericstable ein:
loescher loescher@leo.org
-
Wenn der Rechner, zu dem man die PPP-Verbindung aufbaut hinter
einem Firewall liegt, dann muß man für Sendmail einen SMART_HOST
angeben, der die Mail durch den Firewall nach draußen leitet.
Das macht man durch einen Eintrag z.B. in die Datei
/etc/sendmail.config/cf/sl.mc:
define(`SMART_HOST', name_deines_mail_hosts)dnl
-
Wenn der eigene Rechner nur selten online ist, dann sollen
Fehler-Mails, also Mails, die nicht am Ziel angekommen sind zu
einem Mailhost beim Provider zurücklaufen. Dafür ist die
"From_"-Zeile bzw. der Return-Path verantwortlich. Am besten
verwendet man Masquerading für "From:" und auch für den
Envelope:
MASQUERADE_AS(informatik.tu-muenchen.de)dnl
FEATURE(masquerade_envelope)dnl
Sonst steht am Ende der "From_"-Zeile der eigene Rechner und alle
Mails an falsche Adressen oder sonstige Fehler-Mails gehen
verloren.
Anschließend muß man ein neues Konfigurationsfile erzeugen:
m4 /etc/sendmail.config/m4/cf.m4
/etc/sendmail.config/cf/sl.mc
> /etc/sendmail.cf
Wichtig ist dann natürlich, daß man dem SuSEconfig
in /etc/rc.config verbietet, die /etc/sendmail.cf
zu erstellen: SENDMAIL_TYPE=no
Und nicht vergessen: Sendmail killen und neu starten! Sonst ändert sich
nach den Änderungen gar nichts:
killproc -TERM /usr/sbin/sendmail
/usr/sbin/sendmail -bd -q1m -om
Zum Testen der sendmail-Konfuguration eignen sich besonders die
beiden Aufrufe:
sendmail -bv <mailaddress> (Verify names)
und
sendmail -bt (Addess test)
Wem diese Info nicht reicht findet in der
Sendmail-Dokumentation oder in dem Buch
"Sendmail" aus dem O'Reilly-Verlag alles Wissenwerte.
Weitere Sendmail-Kurzanleitung (von Bernhard Hailer).
Mit Fetchmail kann z.B. von einem POP3-Account Mail abholen. Das
geht mit folgender ~/.fetchmailrc:
poll mailhost.provider.de with protocol pop3 fetchall
Man kann damit Mail auch verschlüsselt und komprimiert über einen
SSH-Tunnel laufen lassen.
Es gibt zu diesem Thema folgende Werke:
"Das Usenet anzapfen" von Bernhard Hailer
Deutsches News HOWTO
Anleitung von Markus Dickebohm (hier gibt es auch Newsflash)
Anleitung von Christoph Kania
Anleitung von Chris Blum
Anleitung von Carsten Voss
Anleitung von Carsten Voss (anderer WWW-Server)
Erweiterung von INN um mehrere Newsserver
News unter Linux
Meine Anleitung:
- Mit Yast den INN installieren und dann SuSEconfig starten.
- Einen user "news" einrichten, wenn es ihn noch nicht gibt und
alle Aktionen in /usr/lib/news als "news" durchführen.
- "START_INN=yes" in /etc/rc.config eintragen.
-
Die Pfade im folgenden können abweichen.
Statt
/usr/lib/news/ kann es auch /var/lib/news/
oder /etc/news/ sein.
-
Folgende Einträge in /usr/lib/news/inn.conf:
organization: SL.de (Private Linux-powered site)
server: localhost
fromhost: informatik.tu-muenchen.de
pathhost: loescher.modem.informatik.tu-muenchen.de
artcutoff: 30
Bemerkenswerterweise muß es tatsächlich
"informatik.tu-muenchen.de" heißen und nicht
"news.informatik.tu-muenchen.de"!
Mit artcutoff wird eingestellt, wie alt eingehende
Artikel sein dürfen in Tagen.
- Das File /var/lib/news/active vom Newsserver abholen:
getlist active > /var/lib/news/active
Das File /var/lib/news/newsgroups vom Newsserver abholen:
getlist newsgroups > /var/lib/news/newsgroups
Wenn das so nicht klappt, dann per Telnet holen:
shell prompt> telnet nntpserv nntp >active
list active
quit
shell prompt> telnet nntpserv nntp >newsgroups
list newsgroups
quit
Danach muß man mit einem Editor noch die überflüssigen Zielen am
Anfang und Ende wegschneiden und darauf achten, daß es die
Gruppen "junk" und "control" gibt!
-
In /usr/lib/news/nnrp.access folgendes eintragen:
# Alle können lesen und Posten:
*:Read Post:::*
-
Bei alten INNs muß man in /usr/lib/news/hosts.nntp
folgendes eintragen:
localhost:
news.informatik.tu-muenchen.de:
-
In /usr/lib/news/newsfeeds
folgendes eintragen:
ME:*::
OVERVIEW!:*:Tc,WO:/usr/lib/news/bin/overchan
tumnews/informatik.tu-muenchen.de:*,!junk,!control*:Ap,Tf,Wnm:tumnews
Wenn man noch einen zweiten Newsserver benutzen will, dann sieht
die letzte Zeile so aus:
tumnews/informatik.tu-muenchen.de,lrz-muenchen.de:*,!junk,!control*:Ap,Tf,Wnm:tumnews
- In /usr/lib/news/expire.ctl kann man die
Expire-Einstellungen ändern, wenn man will.
- Kommando "/usr/lib/news/bin/makehistory -o"
ausführen.
- Inn starten: /sbin/init.d/inn start
- Erster Test bei dem sich der Inn melden sollte:
telnet localhost nntp
- Inn beenden: /sbin/init.d/inn stop
- Wenn irgendetwas jetzt nicht funktioniert, dann sollte man als
User "news" den /usr/lib/news/bin/inncheck starten und
alle Fehler ausbessern.
- Die "From: "-Zeile muß man in jedem Newsreader einstellen und
nicht im Newsserver.
Beim Tin geht das in ~/.tin/tinrc mit der Zeile:
default_mail_address=loescher@leo.org
Beim XRN geht das mit Environmentvariablen:
export HIDDENHOST=leo.org
export HIDDENPATH=leo.org
- Wenn man neue Newsgruppen hinzufügen will, dann geht das
so:
ctlinnd pause REASON
ctlinnd newgroup stardivision.de.chat
ctlinnd go REASON
- Eine moderierte Newsgruppe fügt man so hinzu:
In /etc/news/moderators dieses eintragen:
# Moderated German Groups
de.*:%s@moderators.dana.de
Und dann die Gruppe anlegen:
ctlinnd pause REASON
ctlinnd newgroup de.comp.os.unix.linux.moderated m
ctlinnd go REASON
oder man kann es auch nachträglich ändern:
ctlinnd changegroup de.comp.os.unix.linux.moderated m
- Die News-Batchfiles, die uqwk erzeugt
(snews.zip) kann man mit rnews in den INN
füttern. Ich verwende dazu simport
(Dazu braucht man noch
fixuqwkbatch).
-
Wenn man keinen Shell-Account und damit keinen uqwk hat, dann
kann man "suck" verwenden. Dazu braucht man nur folgendes:
Einmalig das Verzeichnis erstellen:
md /usr/lib/news/suck
und dann im PPP-ON-Sktipt:
ErstelleSuckNewsrc /usr/lib/news/suck `/bin/ls /home/*/.newsrc`
su - news -c getnews
oder besser noch mit
fetchnews.
- Absenden kann man die News mit postit:
postit -i -d news.informatik.tu-muenchen.de tumnews
Oder mit dessen Nachfolger
newsx:
newsx --no-fetch --inn --verbose tumnews news.informatik.tu-muenchen.de
- Der beste Newsreader ist XEmacs mit Gnus. (Siehe dazu auch
meine ~/.gnus)
- Die täglichen Wartungsarbeiten, wie z.B. ein expire werden
durch das bei INN (bzw. Distribution) mitgelieferte
/usr/lib/news/bin/news.daily erledigt. Dazu legt
am Besten der User "news" eine ~/.crontab mit diesem Inhalt
an:
SHELL=/bin/bash
MAILTO=loescher
PATH=/usr/lib/news/bin:/usr/lib/news:/bin:/usr/bin
# news.daily jeden Tag um 18:30h laufen lassen
30 18 * * * /usr/lib/news/bin/news.daily
und übergibt diese crontab dann an cron mit dem Kommando:
crontab ~/.crontab
-
Wenn INN einen News-Batch nicht annimmt, weil man vergessen hat,
vorher eine neue Newsgruppe anzulegen, so merkt sich der INN ja
alle Message-IDs und man kann selbst nach Anlage der Newsgruppe
die Artikel nicht einfüttern. Abhilfe: Man setzt
remember in /etc/news/expire.ctl temporär auf
0 und läßt einen Expire laufen.
FTP für Benutzer funktioniert bereits.
Informationen gibt es per "man in.ftpd" oder "man wu.ftpd".
Folgendes ist einzustellen für Anonymous-FTP:
mkdir /home/ftp
chdir /home/ftp
mkdir bin etc lib pub
chmod 444 /home/ftp bin etc lib
chmod 775 /home/ftp/pub
cp /bin/ls /home/ftp/bin
cp /etc/passwd /etc/group /etc/ld.so.cache etc
# Dann löscht man aus der Paßwort- und Gruppendatei alles heraus,
# bis auf den User "ftp" und die Gruppe "users".
cd lib
cp /lib/ld-linux.so.1 /lib/libc.so.5.2.18 .
ln -s libc.so.5.2.18 libc.so.5
chmod 111 /home/ftp/bin/ls
chmod 444 /home/ftp/etc/*
chmod 555 /home/ftp/lib/*
Wenn man den wu.ftp verwendet, dann funktioneren auch Messages und
der Banner, den man in /etc/ftpaccess einstellen kann.
Welcher FTP-Dämon gestartet wird ist in /etc/inetd.conf
eingetragen.
- Type1-Fonts
- Neue Fonts z.B. nach /usr/local/fonts/neu
kopieren.
- Dann in diesem Verzeichnis
"type1inst -samples" starten.
- In
/etc/XF86Config
diese Zeile hinzufügen:
FontPath "/usr/local/fonts/neu/"
oder zum sofortigen Testen:
xset fp+ /usr/local/fonts/neu
xset fp rehash
- Für GhostScript:
Die neu erzeugte Datei Fontmap muß man mit einem
Editor der systemweiten
/usr/share/ghostscript/4.03/Fontmap hinzufügen und
dann die Verzeichnisse bekanntmachen:
export GS_LIB=/usr/local/fonts/neu
Das muß sowohl systemweit erfolgen, als auch in einem
Druckerfilter, der GhostScript direkt aufruft!
Also muß es in diesen Dateien geändert werden:
/etc/profile.local
/var/spool/lpd/myprinter/ps_filter
- True-Type-Fonts
-
Für die Bilschirmanzeige benutzt man den True-Type-Fontserver
"xfstt". Man kopiert einfach TT-Fonts nach
/usr/local/fonts/truetype und initialisiert den
Fontserver, wobei man gleich die "Fontmap" für Ghostscript
erstellen lassen kann:
xfstt --dir /usr/local/fonts/truetype --gslist --sync |
perl -pe 's:/./:/:g;' > Fontmap
Mit der Fontmap und dem Font-Pfad für GhostScript verfährt
man genauso wie bei Type1-Fonts (siehe oben.)
Starten (am besten in /etc/init.d/local.setup):
xfstt --dir /usr/local/fonts/truetype&
Hinzufügen des neuen "Fontpfads" in
/etc/XF86Config:
FontPath "unix/:7100"
-
Man kann die TTF-Fonts auch nach Type1-Fonts
konvertieren (Das ist die einfachste Möglichkeit, sie
StarOffice zugänglich zu machen). Dazu braucht von
Dieser
Seite die Files ttf2pt1.tar.gz und
t1utils.tar.gz und auch noch
afm.pl.
Für einen Font funktioniert die Umwandlung dann so:
ttf2pfa font.ttf font
afm.pl font.afm
mv font.afm.new font.afm
ttf2pt1 font.ttf font
t1asm -b font.pfa > font.pfb
rm font.pfa
Wenn man ein ganzes Verzeichnis konvertieren will, dann geht
es so:
for i in *.ttf; do ttf2pfa $i `basename $i .ttf`; done
for i in *.afm; do afm.pl $i; /bin/mv $i.new $i; done
for i in *.ttf; do ttf2pt1 $i `basename $i .ttf`; done
for i in *.ttf; do ttf2pt1 $i `basename $i .ttf`; t1asm -b `basename $i .ttf`.pfa > `basename $i .ttf`.pfb; rm `basename $i .ttf`.pfa; done
Mit den so generierten Fonts funktioniert leider
type1inst nicht.
-
Wenn TrueType-Fonts keine Umlaute zeigen, dann sollte man
diesen Font mit xfd anschauen, um festzustellen, ob er
wirklich Umlaute hat.
Wenn afmmaker.ps aus dem
TrueType kein AFM (braucht man nur für StarOffice!) erstellen
kann, dann ist der Font unbrauchbar. Die Benutzung von
afmmaker.ps: Man trägt den Fontnamen hinter /fontname
in afmmaker.ps ein und startet damit Ghostscript:
gs -sNODISPLAY -q -sBATCH afmmaker.ps -c quit > font.afm
Die NCR53c400a-SCSI-Karte, die bei HP-Scannern, wie dem HP-ScanJet
IIcx mitgeliefert wird, wird nicht direkt von Linux unterstützt. Man
braucht dazu erst den Patch 53c400a-patch-0.2.
(Eine neue, von mir nicht getestete Version gibt es
hier)
Aber das reicht auch noch nicht, denn der 53c400a muß durch bestimmte
IOs freigeschaltet werden, bevor er vom normalen 53C400-Treiber
erkannt wird. Das macht für Mustek-Karten der Patch, bei HP gibt es
den mitgelieferten DOS-ASPI-Treiber "mini400i.sys", der das macht.
Also muß man unbedingt vor dem Linux-Start unter DOS die Karte
initialisieren und dann per Loadlin Linux starten.
-
Kernel 2.0.30 mit patchen mit 53c400a-patch-0.2:
cd /usr/src/linux
patch < 53c400a-patch-0.2
-
Einstellungen:
- SCSI-Support (Modul)
- Generic SCSI-Support
(Modul)
- Generic NCR5380/53C400 SCSI Support
(Modul)
- Enable NCR53C400 extensions (built in)
(yes)
- NCR5380/53C400 mapping method: Port
Der Treiber läßt sich nur als Modul laden!
-
Unter DOS so Linux booten:
config.sys:
shell=c:\command.com c:\ /p
device=c:\hp\mini400i.sys
autoexec.bat:
c:\linux\loadlin.exe c:\linux\kernel ncr53c400a=0x280,-1
root=/dev/sdb1 ro
- modprobe g_NCR5380 ncr_addr=0x280 ncr_53c400a=1
-
Bei neueren Karten kann es auch sein, daß man das Modul so laden
muß:
modprobe g_NCR5380 ncr_addr=0x278 ncr_irq=255 ncr_53c400=1
Aber man sollte von der NCR-Karte nicht zuviel erwarten. Da sie keine
Interrupts unterstützt wird Linux ziemlich unbenutzbar beim Scannen.
Für Deutschland stellt man die Zeitzone CET oder MET ein.
Dazu erstellt man einen Link:
ln -s /usr/lib/zoneinfo/CET /usr/lib/zoneinfo/localtime
bzw. unter SuSe in /etc/rc.config:
TIMEZONE=CET
Desweiteren muß man in /etc/rc.config noch GMT="-u"
eintragen.
Die Rechneruhr stellt man auf UTC (=GMT) ein.
CET ist eine Stunde nach UTC, also Zeitzone +0100.
Also setzt man zurerst die Uhr auf GMT, indem man (in Deutschland)
eine Stunde von der lokalen Zeit abzieht. Wenn es jetzt 18:00h ist,
dann muß man die Uhr auf 17:00h stellen, z.B.:
date -s '1997-10-30 17:00:00' +'%Y-%M-%d %T'
Dann die CMOS-Uhr auf die aktuelle Zeit (in GMT) setzen:
clock -w
Dann kann man per clock -us die GMT-Zeit der CMOS-Uhr in
lokale Systemzeit setzen lassen. Sommer-/Winterzeit-Umstellung sollte
in Zukunft automatisch erfolgen.
Zum Stellen der Uhr unter Verwendung von anderen Rechnern kann man
"netdate", "ntpdate" oder "xntp" benutzen.
Wenn man selbst als Timeserver fungieren will, dann müssen in
/etc/inetd.conf die Zeilen stehen:
time stream tcp nowait root internal
time sdgram udp wait root internal
Die Zeit kann man einfach holen: netdate tcp rechnername
Vorweg eine Warnung: Ich habe sehr schlechte Erfahrungen mit UMSDOS
gemacht und verwende es nicht mehr! Es ist wirklich Beta und
außerdem "Benutzer-fehlerträchtig"! Man
sollte tunlichst aufpassen, daß man mit den "--linux-.---"-Files
nichts durcheinanderbringt. Typische Fehler sind:
- Umsdos nicht als solches gemountet und Files darin verändert
- Umssync vergessen oder im falschen Verzeichnis
- "--linux-.---"-Files gelöscht
- Noch schlimmer: "--linux-.---"-File mit anderem
"--linux-.---"-File überschrieben
Wenn jemand nur lange Dateinamen haben will, dann sollte er VFAT
nehmen.
Nun aber doch das How-To:
- Kernel mit umsdos (auch als Modul möglich) übersetzen
- Mounten: Beispiel: mount -t umsdos /dev/sda /mnt/mo
- Pro Verzeichnis existiert bei echten UMSDOS-Filesystemen
eine Datei "--linux-.---". Wenn diese Datei nicht
existiert, dann verhält sich UMSDOS genauso, wie MSDOS.
- Mit "umssync ." wird im aktuellen Verzeichnis ein
"--linux-.---" angelegt und somit UMSDOS aktiviert.
- Wenn DOS an solchen Verzeichnissen etwas ändert, dann muß
man unter Linux erst "umssync ." starten.
- Man kann aber sehr gut mit DOS die UMSDOS-Verzeichnisse
verschieben, z.B. auch auf MO.
Zuerst muß man das loopback-Device in den Kernel eincompilieren und,
z.B. ein Image einer Diskette erstellen:
dd if=/dev/fd0 ibs=512 of=/tmp/MeineDisk
Dann kann man das Image so mounten:
mount /tmp/MeineDisk /mnt/disk -t msdos -o loop
Wenn die automatische Erkennung des Mediums nicht funktioniert, dann
sollte man sich mit fdisk das "Medium" mit "p" (Print partition
table) anschauen:
prompt> fdisk /tmp/disk
Disk /tmp/disk: 0 heads, 0 sectors, 0 cylinders
Units = cylinders of 1 * 512 bytes
Device Boot Begin Start End Blocks Id System
/tmp/disk1 * 1 33 444416 222192 6 DOS 16-bit >=32M
Wenn man also die erste Partition im File "/tmp/disk" mounten will,
dann muß man einen Offset angeben, der sich aus "Start-1" mal "Units"
berechnet, also im Beispiel: 32*512=16384. Der Aufruf lautet dann:
mount /tmp/disk /mnt/a -t msdos -o offset=16384
Wenn ich ein Bochs-HDD-Image mounten will, das
so aussieht:
Disk /tmp/BochsHDD: 0 heads, 0 sectors, 0 cylinders
(Mit tatsächlich 15 heads, 17 sectors, 900 cylinders)
Units = cylinders of 1 * 512 bytes
Device Boot Begin Start End Blocks Id System
/tmp/BochsHDD4 * 1 18 229245 114614 6 DOS 16-bit >=32M
Dann muß man einen Offset von (17*512)Bytes angeben:
mount /tmp/BochsHDD /mnt/bochs -t msdos -o offset=8704
Für die MTools reicht dann ein analoger Eintrag in ~/.mtoolsrc:
drive c: file="/tmp/BochsHDD" offset=8704
Es gibt täglich Aktionen, die ein (möglicherweise privilegierter)
Benutzer ausführt, wozu er normalerweise nicht berechtigt ist, zum
Beispiel das Mounten einer CDROM oder das Starten einer
PPP-Verbindung.
Die meisten Rechte sind bei mir durch Gruppen geregelt.
-
Anghörige der Gruppe "sysop" dürfen beispielsweise folgende
Files verändern oder verwenden (bei ausführbaren Dateien):
/etc/profile.local
/etc/XF86Config
/home/skel/*
/root/.tapebackuprc
/sbin/halt
/usr/bin/nice
/usr/local/bin/*
/usr/local/man/*
/usr/local/lib/*
/usr/local/include/*
/usr/local/include/icons/*
/usr/local/squid/etc/squid.conf
/usr/local/fonts/*
/httpd/htdocs/*
/httpd/cgi-bin/*
Das impliziert noch diese Änderungen in /etc/permissions:
/var/log/messages root.sysop 640
/var/log/warn root.sysop 640
- Anghörige der Gruppe "scanner" dürfen den Scanner verwenden.
- Mounten ist vollständig in der
/etc/fstab geregelt.
- Newsverwaltung geht per Cronjob als User "news". Siehe:
News
- Sich wiederholende System-Jobs laufen als Cronjob von Root.
- Um einen Druckerfilter, der seine Ausgaben nicht an den
Drucker schickt, sondern in /tmp/ ablegt habe ich einen
SUID-Wrapper erstellt.
-
Einen Wrapper braucht man noch um "ppp-on/off".
Darin läuft dann alles als Root:
- PPP aufbauen/abbauen
- Mail absenden
- News als User "news" versenden
-
In /etc/dosemu.conf müssen die Benutzer eingetragen werden, die
den DOSEMU hernehmen dürfen sollen.
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.
Das Device-Filesystem stellt die Geräte in /dev nach einem
neuen Namens-Schema dar.
Damit gehört die unpraktische und gefährliche Numerierung sga, sgb,
sgc, ... der Vergangenheit an.
Details zu den Vorteilen gibt es in der FAQ
zu devfs.
Mit devfs werden z.B. SCSI-Platten so angesprochen:
/dev/scsi/host1/bus0/target6/lun0/part8, aber man kann auch
praktische Links legen, was mein
devfs-setup erledigt.
Außerdem kann man mit dem optionalen Dämon devfsd beim
Zugriff auf Devices Aktionen definieren. Das wird einfach in
/etc/devfsd.conf
eingetragen.
Der devfsd ist auch wichtig, wenn man die alten Gerätenamen
noch nutzen will.
Diese Anleitung bezieht sich auf Version 0.5.1a bis 0.5.3 (und evtl.
höher) und den "trident"-Chipsatz in der
Hoontech SoundTrack Digital 4DWave NX
(
Hoontech).
Eine kleine Randnotiz zum S/PDIF-Kabel: Das sind bei mir 9 Meter
dünnes Antennenkabel (75 Ohm Wellenwiderstand) von der Hoontech zum
DAT. Damit sollten auch 20 Meter kein Problem sein. Man kann auch
ein Netzwerkkabel RG 59 (75 Ohm) nehmen.
-
Im Linux-Kernel nur Soundunterstützung aktivieren und ein
make dep für den Kernel durchlaufen lassen.
-
cd alsa-driver-x.x.x
./configure --with-processor=i586 --with-sequencer=yes
--with-debug=detect --with-cards=trident
make
make install
-
Wenn man kein devfs verwendet:
./snddevices
-
cd alsa-lib-x.x.x
./configure
make
make install
-
cd alsa-utils-x.x.x
./configure
make
make install
-
/etc/conf.modules
anpassen. Es muß folgendes auskommentiert bzw. hinzugefügt
werden:
# OSS-Modul auskommentieren
# alias char-major-14 sound
# alias char-major-14 mad16
#
# ALSA mit OSS-Emulation
alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-card-trident
post-install snd-card-trident /usr/sbin/alsactl "restore" ; modprobe snd-pcm-oss
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 snd_device_gid=0 snd_device_uid=0
options snd-card-trident snd_index=0 snd_id=CARD_1
#
# Einstellungen für devfs
alias gen_sound snd-card-trident
alias /dev/js* joy-pci
-
Als Mixer gibt es für die Kommandozeile amixer und mit
Curses-Oberfläche alsamixer. Mit letzterem sollte man
von den Kanälen Master, PCM, PCM Play und Wave die Stummschaltung
mit Taste M ausschalten und Volume hochdrehen.
-
Einstellungen mit alsactl store nach
/etc/asound.conf
speichern. Das wird in
/etc/conf.modules
automatisch per post-install geladen.
-
Für Aktivierung des digitalen S/PDIF-Ausgangs muß man in
/etc/asound.conf
noch diese Zeile ändern:
switch("S/PDIF Mixer Out", true)
-
Falls Timing-Probleme auftreten sollten: im Kernel
PCI-Quirks=Yes und PCI-access=any einstellen.
-
Aufnehmen von Line-In kann man erst, wenn im Mixer das Capture
auf Line steht, unmuted ist und Volume aufgedreht
ist. Zusätzlich muß auch noch Input-Gain unmutet sein! Dann kann
man 30 Sekunden in CD-Qualität als WAV so aufnehmen:
arecord -w -t 30 -M test.wav
-
Den angeschlossenen Joystick kann man nutzen, wenn man im Kernel
(ab 2.2.14) das joystick- und joy-pci-Modul aktiviert und in
/etc/conf.modules
diese Zeile einträgt:
alias /dev/js* joy-pci
Man kann auch von Hand mit modprobe joystick,
modprobe joy-pci die Module laden und mit js 0
testen.
-
... Wie gebe ich _echtes_ MIDI wieder? Ohne timidity ...
-
Was ist RAID und wozu dient es?
Bei mir ist ein konkreter Performancegewinn durch RAID-1
zwischen zwei SCSI-Platten zu verzeichnen: Der Verbund ist um
den Faktor 1.7 schneller als die Einzelplatten.
-
RAID-Unterstützung im Kernel aktivieren.
-
Devices zu einer logischen Einheit zusammenfassen:
mdadd /dev/md0 /dev/sdb6 /dev/sdc6 /dev/hda5
bzw. mit devfs:
mdadd /dev/md0 /dev/scsi/host1/bus0/target5/lun0/part6 /dev/scsi/host1/bus0/target6/lun0/part6 /dev/ide/host0/bus0/target0/lun0/part5
-
Lauffähig und zugreifbar als RAID-0-Device wird
/dev/md0 erst nach:
mdrun -p0 /dev/md0
-
Jetzt kann man ein Dateisystem darauf anlegen:
mke2fs -v /dev/md0
-
und wie ein normales Device mounten:
mount /dev/md0 /mnt/raid
-
Um das ganze beim nächsten Boot zu automatisieren generiert man
eine /etc/mdtab:
mdcreate raid0 /dev/md0 /dev/sdb6 /dev/sdc6 /dev/hda5
bzw. mit devfs:
mdcreate raid0 /dev/md0 /dev/scsi/host1/bus0/target5/lun0/part6 /dev/scsi/host1/bus0/target6/lun0/part6 /dev/ide/host0/bus0/target0/lun0/part5
-
Ab jetzt kann man mit mdadd -ar und mdstop -a
arbeiten, was z.B. SuSE auch in /sbin/init.d/boot und
/sbin/init.d/halt verwendet.
© Stephan Löscher,
1 Apr 2000