Tipps für Linux
Inhalt:
- Vorwort
- Literatur
- Serielle Verbindungen
- Nullmodem
- Modem-Verbindungen
- Modem-Callback
- PPP
- PPP-Server mit Telnet/Chat
- PPP-Server mit purem PPP
- PPP-Nullmodem-Verbindung
- Serielle Konsole
- USB-to-Serial-Adapter
- Booten
- Bootdisk
- Bootsektor kopieren
- LILO
- Init-Parameter
- Rechner ohne Platte booten
- Fehlermeldungen beim Booten
- NFS-Root
- Linux über Windows mit Loadlin
booten
- Linux über Windows Vista oder 7 booten
- Windows7 mit Grub booten
- Kopieren und Sichern
- Backup und Restore
- Sicherungen und Kopieren
- Sicherungen mit Streamer
- Komplette Filesysteme kopieren
- Konvertieren (Encoding) und Kopieren
- Verschiedenes
- Disketten formatieren
- USB-Sticks formatieren
- Mount (Root ReadOnly)
- X11
- Hinzufügen von nachträglich
eingeschalteten SCSI-Geräten und Reset
- Suid-Scripten
- Swap (Paging)
- "Zerstörte" Terminals
- Patch mit Diff erstellen
- Inode-Anzahl einstellen
- Tipps zu Postscript
- Referenzen auf eine Homepage
feststellen
- Bemerkungen zur SuSE 6.0
Installation
- CD und CDRW brennen bzw. einlesen
- Kernel Oops analysieren
- Beeps ausschalten
- Die C-Bibliothek libc
- Festplatten-Tuning
- Konsole sperren mit vlock
- Domain mit whois abfragen
- Screen
- Sicheres Programmieren
- Festplatte löschen
- Festplatten-Inhalt retten
- Festplatten - Defekte Sektoren
- Bash-Tipps
- tiptoi
- Software
- Perl
- LaTeX einrichten
- StarOffice
- PovRay
- finddupe
- c't-Rom
- XEmacs einrichten und Tipps
- WGet
- Sound-Programme
- RPM
- Rosegarden
- Vacation / Procmail
- Mail weiterleiten mit
Procmail
- Email: Mailen von der Kommandozeile
- cdda2wav
- PGP
- TCP-Wrapper
- SSH (Secure Shell)
- Faxen
- MGetty
- VGetty als Anrufbeantworter
- CVS
- Subversion
- GIT
- LaTeX2HTML
- Ghostscript
- X-Mame
- Firefox
- WindowMaker
- GCC (ehem. EGCS)
- SANE
- MySQL
- VMWare
- xmove
- VDR (Video Disk Recorder)
- Bildbearbeitung
- Video aufzeichnen
- Streaming
- Empfehlenswerte Programme nach
Kategorien
- ICAClient
- OpenSSL
- Libraries
- GGI
- MESA
- Emulatoren
- DOSEMU
- Wine
- Bochs
- KVM / Virtualisierung
- System-Konfiguration
- Kernel-Einstellungen
- Bootvorgang / Programme
starten
- Grundlegende
Netzkonfiguration
- Nameserver mit Bind 8
- Nameserver mit Bind 9
- Drucker
- Drucker einrichten mit CUPS
- INETD
- Tastatur (Delete und
Backspace)
- Benutzer-Einstellungen (Shell,
X11)
- FVWM2
- HTTPD / WWW-Server
- WWW-Cache: Squid
- WWW-Cache: WWWOffle
- Sendmail
- Postfix
- Fetchmail
- News (INN)
- FTP
- Fonts installieren
- NCR53c400a-SCSI-Karte
verwenden
- Zeitzone einstellen
- NTP / Chrony
- UMSDOS
- Images von Platten mit dem
Loopdevice mounten (oder auch MTools)
- Benutzer und System-Verwalter
einrichten
- Device-Filesystem (devfs)
- ALSA
- RAID / Multiple Devices (MD)
- Samba
- NFS (Network File System)
- Automounter (autofs)
- PAM (Pluggable Authentication Modules)
- IP-Masquerading / Network
Address Translation (NAT)
- Firewall
- Verschlüsseltes Dateisystem
- Software Suspend
- Tipps zu Gentoo
- WLAN
- Networkmanager
- VPN per OpenSSH
- OpenVPN
- User Mode Linux
- UnionFS
- Universal-Plug-and-Play (UPnP)
- Portscan
- UPS/USV mit NUT überwachen
- Shinobi
- Motion
- Hardware
- USB-PCI-Karten
- ATX-Netzteil
- Meine Programme
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 8MB (Huh - so viel.) erweitert. (Für die
jüngeren Leser die Anmerkung: Es sind wirklich Megabyte und nicht
Gigabyte!) 1997 wurde die
Suse 4.2 durch eine 4.4.1 mit Kernel 2.0.28 ersetzt. Der 386 wurde nach
einem Jahr dann durch einen Pentium 200 mit 128MB abgelöst.
Seit der Erstinstallation habe ich einiges am System verändert.
Dadurch kann es sein, daß manche Einstellungen für das alte Linux
noch stimmen, aber für das aktuelle angepaßt werden müssen.
Dann verging eine lange Zeit mit SuSE 4.4.1 mit Kernel 2.0.33 und
libc.so.5.4.7.
Bis ca. März 2001 lief dann SuSE 6.0 mit Kernel 2.0.33 und glibc.
Seit ca. März 2001 arbeite ich mit SuSE 7.1 und Kernel 2.4.6.
Der Pentium 200 verichtet immernoch brav seinen Dienst mit Suse
7.1 und inzwischen einen Kernel 2.4.25
Auf meinem VDR habe ich zwar mit Suse
begonnen, aber im November 2004 auf
Gentoo umgestellt und mit
damit wesentlich zufriedener.
In 2005 habe ich dann noch mein
altes Notebook (Celeron-500) mit Gentoo beglückt. Daher beziehen
sich alle neueren Tipps auf Gentoo, aber das werden mir die
Suse-Nutzer sicherlich verzeihen.
Bei Gentoo bin ich dann auch auf dem X200s Notebook geblieben.
Einen kurzen Wechsel zu Sabayon hatte
ich wieder beendet und zu Gentoo zurück gewechselt.
Seit dem 1.10.2022 läuft auf meinem guten, alten X200s
jetzt Arch, mit dem ich sehr
zufrieden bin!
Also bitte nicht wundern, wenn in dieser Anleitung für
Software-Installation diverse Kommandos auftauchen: yast, emerge,
equo, pacman/yay...
Kommentare (und Fehlerberichtigungen) sind immer willkommen, am besten
per Mail: loescher@gmx.de
Ich möchte allen danken, die mir bei der Installation geholfen haben
und mir bei Fragen und Problemen weitergeholfen haben. Besonderer
Dank geht hiermit an alle hilfsbereiten Menschen in:
de.comp.os.unix.linux.misc
de.comp.os.unix.linux.hardware
de.comp.os.unix.x11
de.comp.os.unix.networking
maus.os.linux
In diesem Abschnitt lege ich Hyperlinks zu Dokumenten, die mehrere
Themen zu Linux abdecken und nicht speziell einsortiert werden sollten.
Meine Linux-Bookmarks
ISDN und alles über Internetworking
S.u.S.E. Support-Datenbank
Linux Wegweiser für Netzwerker
Linux Wegweiser zur Installation & Konfiguration
Linux Documentation Project
Unix-Einführung
Firewall Handbuch für LINUX 2.0 und 2.2
Open Books von O'Reilly
Schlanke Distribution für alte 32-Bit Rechner: Bunsenlabs
Und natürlich das Usenet::
de.comp.os.linux.misc
de.comp.os.linux.hardware
de.comp.os.linux.x
de.comp.os.linux.networking
maus.os.linux
Bemerkung: Sowohl
mgetty,
als auch getty lesen die Datei
/etc/gettydefs. Diese Datei
ist für
mgetty
notwendig!
Um den Rechner, der eine eingehende Verbindung ermöglichen soll zu
konfigurieren gibt es zwei Möglichkeiten:
Dann Neustart des Init: kill -HUP 1 oder init q
(Danach sollte ein login auf dem Terminal des anderen Rechners
erscheinen.)
1. /dev/modem sollte auf /dev/ttyS1 gelinkt werden.
2. Unter Umständen RTS/CTS einschalten:
in /sbin/init.d/boot.local eintragen:
stty crtscts < /dev/modem
3. Re-Ring für Modem-Verbindungen mit nur einer Telefonleitung, die
auch für Gespräche genutzt werden soll, geht mit
mgetty.
Nur in /etc/initab eintragen:
mo:123:respawn:/usr/sbin/mgetty -R 60 -s 57600 modem
Man kann mgetty nicht testweise von Hand starten, sondern nur
über init!
In /etc/gettydefs muß
dann diese Zeile hinein:
F57600# B57600 CS8 CRTSCTS # B57600 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F57600
Mgetty wartet auf Klingeln und geht nicht (!) an die Leitung, sondern
wartet erst 30 Sekunden und geht dann in den nächsten 60 Sekunden
an die Leitung.
Es wird sowohl FAX, als auch Datenverbindung entgegengenommen.
Zum Fehlersuchen kann eventuell "script" oder "cu" oder
"echo -ne 'ATZ\r'>/dev/modem'" nützlich sein.
Für einen Verbindungsaufbau im Callback-Verfahren braucht man nur
einen aktuellen mgetty. Bei diesem ist ein
Programm namens callback dabei. Das kompiliert man und
kopiert z.B. nach /usr/local/sbin/callback.
Man braucht dann noch diesen Eintrag in
/usr/local/etc/mgetty+sendfax:
CALLBACKUSER - - /usr/local/sbin/callback -S TELEFONNUMMER
Also z.B.:
loescher - - /usr/local/sbin/callback -S 08912345
callback hat auch noch ein Konfigurationsfile
/usr/local/etc/mgetty+sendfax/callback.config:
dialout-devices modem
retry-time 30
max-time 90
debug 9
dial-prefix ATX3DT
Dann kann man diesen Rechner anrufen und als User "loescher"
eingeben. Es wird dann aufgelegt und die Telefonnummer 08912345
zurückgerufen.
Um eine PPP-Verbindung damit aufzubauen, dient dieses Chat-Script
auf Clientseite als Grundlage:
ABORT BUSY
"" ATZ
OK ATDTnummer_des_callback_servers
TIMEOUT 120
CONNECT ""
ogin: callbackusername
RING ATA
-
Als ersten sollte man die
grundlegende Netzkonfiguration
vornehmen, die auch für Rechner ohne Netzverbindung notwendig ist.
-
Informationen über den Anschluß bei
LRZ
oder
TUM
lesen.
-
Kernel mit PPP-Unterstützung kompilieren
-
PPP-Paket installieren
-
Sendmail sollte man mit YAST auf SMTP mit DNS-Zugriff einstellen.
-
Man muß
Sendmail mit einem SMART_HOST konfigurieren,
wenn man "hinter" einem Firewall PPP nutzt. (Wie üblich.)
-
Das "ppp-on" -Skript legt man
nach /usr/local/bin.
-
Dazu gehört noch das
"ppp-chat" -Skript, in dem
das Paßwort steht. Diese Datei darf deshalb nicht für Fremde lesbar
sein!
-
Ausschalten kann man das PPP mit einem
"ppp-off" -Skript
-
Ganz wichtig: mkdir /var/lock
-
Und immer dran denken: Im SYSLOG (F10) wird alles
mitgeschrieben! Dort kann man Fehler finden!
-
Zum Fehlersuchen: tcpdump
-
Performance
Unter Linux ist im Kernel der ganze Netzwerk-Teil auf höchsten
Durchsatz optimiert.
Das hat aber den großen Nachteil, daß bei PPP-Verbindungen dieser
Effekt auftritt: Wenn ein Programm viele Daten überträgt, wie etwa
bei FTP oder WWW, dann leidet die "Interaktivität", also die
Reaktionszeit der langsamen Programme wie Telnet erheblich.
Das geht so weit, daß man nicht mehr damit arbeiten kann.
Abhilfe schafft eine Änderung der Window-Größe, wie sie durch
mein "setspeed"-Kommando in meinem
"ppp-on" -Skript zu sehen ist.
Durch diese Änderung sinkt zwar der Datendurchsatz von 1.32 kB/s auf
1.21 kB/s, das ist aber wohl leicht zu verschmerzen.
Wer will, der kann auch mit den Nagle-Algorithmus im Kernel
herumspielen:
NagleFix-Patch
Andere Möglichkeit:
In /usr/src/drivers/net/ppp.c in ppp_init_dev()
den tx_queue_len Parameter von 10 auf 3 oder 4
setzen. Ab Linux 2.1.77 gibt es auch einen neuen ioctl
(SIOCSIFTXQLEN) um diesen Wert für jedes Device zu setzen. Bei
ISDN Links läßt sich auch ein positiver Effekt mit einer
kleineren tx_queue_len erreichen.
-
Sicherheitsaspekte:
- Alle Accounts sicher machen durch Paßwortvergabe.
-
Das ppp-on Skript unlesbar machen, wenn Paßwörter
drinstehen:
chmod 711 ppp-on
-
Das PPP-Paßwort darf nicht in der chat- oder gar
pppd-Commandline
(die kann man über ps oder
/prog/<pid>/cmdline bekommen)
stehen, sondern in einer Script-Datei, owner Root, mod 600.
-
In der Datei /etc/login.def ist definiert, von
wo sich der Root einloggen darf:
CONSOLE tty1:tty2:tty3:tty4:tty5:tty6:tty7:tty8
Wenn sich Root über ttyS1 einloggen können soll, dann ttyS1
hinzufügen.
-
Eine mögliche Methode: Alles was nicht ausdrücklich erlaubt
ist, ist verboten: Alle Dienste, die man nicht braucht aus der
inetd.conf austragen.
-
Man kann die Zugänge zu einem System mit einem sogenannten
tcpwrapper sichern.
Das setzt aber voraus, daß auf den Maschinen, von denen aus
der Zugriff erfolgt, der "Authentication Service" (meist durch
identd immplementiert) verfügbar ist.
Man sollte sich aber klar sein, daß auch so ein Verfahren
Schwächen und Angriffspunkte hat.
-
Die r* Berkeley-Dienste (rcp, rlogin, rsh) sollte man
durch SSH (Secure Shell) ersetzen.
- In /etc/inetd.conf sollte man tftp auskommentieren,
wenn man es nicht braucht, denn damit sind alle world-readable
Files ohne Passwort jedem zugänglich.
Wenn man tftp (etwa für ein X-Terminal) braucht, dann sollte
man es auf ein Verzeichnis einschränken, indem man den
Verzeichnisnamen dahinterschreibt:
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /boot/tftp
-
Die Dateien /etc/hosts.allow und
/etc/hosts.deny bestimmen, zu welchen anderen Rechnern
Verbindungen zugelassen werden. Allen Rechnern, die in
/etc/hosts.allow stehen wird Zugriff erlaubt, egal
was in /etc/hosts.deny steht. Wenn der Rechner in
/etc/hosts.deny steht, dann wird der Zugriff verweigert.
Wichtig: Wenn der Rechner nirgends steht, dann wird der Zugriff
erlaubt! Man sollte also alles Sperren, bis auf Ausnahmen, indem
man /etc/hosts.allow leer läßt und in
/etc/hosts.deny das einträgt:
ALL EXCEPT telnet, ftp, www, tcpmux : ALL EXCEPT LOCAL
-
In die Datei /etc/hosts.equiv sollte man Rechner
eintragen, denen man vertraut. In der Regel sollte man nichts
eintragen. Wenn z.B. hp3 eingetragen wird, dann
können alle Benutzer von hp3 sich an meinem System
unter dem gleichen Benutzernamen anmelden, wie auf hp3.
ACHTUNG: Folgende Anleitung stimmt nicht mehr! Ich bekomme vom
pppd immer die Fehlermeldung: "Unauthorized remote IP address"
Zuerst konfiguriert man den
mgetty
um Modem-Verbindungen zu ermöglichen.
Wenn man dabei das "Auto-PPP" von mgetty aktiviert, dann ist man schon
fertig. Wenn man es allerdings über einen Login-Vorgang lösen will,
dann geht das so:
Dann richtet man einen PPP-Account ein (entnommen aus
NAG - Network
Administration Guide von Olaf Kirch):
In /etc/passwd:
ppp:x:500:200:PPP Account:/tmp:/usr/local/bin/ppplogin
(Natürlich bei Bedarf mit anderen uid und gid.)
Der User "ppp" muß evtl. auch noch in der Gruppe "dialout" sein, da
er sonst den "pppd" nicht ausführen kann.
Und /usr/local/bin/ppplogin:
#!/bin/sh
# ppplogin - Script startet pppd beim Login
mesg n
stty -echo
exec /usr/sbin/pppd -detach silent modem crtscts
Zum Login verwendet man ein gewöhnliches "ppp-on":
#!/bin/bash
stty 57600 cs8 pass8 crtscts </dev/modem
pppd -ipx-protocol mtu 296 debug crtscts defaultroute \
netmask 255.255.255.0 /dev/modem 57600 \
connect '/usr/sbin/chat -v -f /root/private/remote.chat'
Das Chat-Script sieht so aus:
ABORT BUSY ABORT "NO CARRIER" ""
ATZ OK
ATL1M1DPtelefonnummer TIMEOUT 90
CONNECT "" login: ppp assword: geheimes_passwort
Für den Palm-Pilot reicht ein simpler pppd-Aufruf:
/usr/sbin/pppd /dev/modem 19200 :172.16.0.100 local persist
Zuerst konfiguriert man den mgetty
um Modem-Verbindungen zu ermöglichen.
Dann aktiviert man in /etc/mgetty+sendfax/login.config das
AutoPPP, sodaß mgetty direkt PPP-Verbindungen annimmt:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap debug
192.168.1.1:192.168.1.2
Die IP-Adressen dürfen nicht aus dem lokal und remote verwendetem
Netz stammen.
In /etc/ppp/pap-secrets muß man auf dem PPP-Client eine
PPP-Benutzerkennung und -Kennwort eintragen, z.B.:
ppptestuser * ppptestkennwort
Auf dem Server trägt man die gleiche Zeile ein und kann dahinter
noch die IP-Adresse angeben, die der Client erhalten soll. Man kann
auch "*" eintragen und damit die vom Client vorgegebene Adresse
übernehmen:
ppptestuser * ppptestkennwort *
Dann kann man vom Client eine Verbindung aufbauen:
pppd lock bsdcomp 15,15 debug crtscts netmask 255.0.0.0 /dev/modem 115200 asyncmap 0 nodetach user ppptestuser
Auf dem Server muß folgendes eingerichtet werden:
-
In /etc/inittab:
nu:123:respawn:/usr/local/sbin/mgetty -r -s 115200 nullmodem
Aktivieren mit init q.
-
In /etc/passwd:
ppp:x:500:200:PPP Account:/tmp:/usr/local/bin/ppplogin
(Natürlich bei Bedarf mit anderen uid und gid.)
Der User "ppp" muß evtl. auch noch in der Gruppe "dialout" sein, da
er sonst den "pppd" nicht ausführen kann.
-
Ein /usr/local/bin/ppplogin anlegen:
#!/bin/sh
# ppplogin - Script startet pppd beim Login
mesg n
stty -echo
exec /usr/sbin/pppd -detach silent modem crtscts
Dann kann man auf dem Client die PPP-Verbindung mit diesem Kommando
aufbauen:
pppd lock bsdcomp 15,15 debug crtscts netmask 255.0.0.0 /dev/nullmodem 115200 asyncmap 0 nodetach connect '/usr/sbin/chat "" "\r" ogin: ppp assword: geheimnis'
Zwei PCs mit Siemens-Gigaset verbinden:
Basisstation:
pp:23:respawn:/usr/sbin/pppd /dev/ttyS1 115200 crtscts silent
nodetach local passive 10.10.10.1:10.10.10.2 mtu 296 mru 296
PC als Teilnehmer:
pp:23:respawn:/usr/sbin/pppd /dev/ttyS1 115200 crtscts nodetach
local passive 10.10.10.1:10.10.10.2 mtu 296 mru 296
Wenn man bereits den LILO über die serielle Konsole bedienen will,
dann muß das in den globalen Abschnitt von /etc/lilo.conf:
serial = 0,9600n8
Dem Kernel sagt man mit diesen Parametern, daß eine serielle Konsole
verwendet werden soll:
append = "console=ttyS0,9600n8 console=tty0"
(Natürlich muß dazu im Kernel CONFIG_SERIAL_CONSOLE aktiviert
sein.)
Wenn man sich dann auch noch am System anmelden will, dann muß diese
Zeile in die /etc/inittab:
nu:123:respawn:/usr/local/sbin/mgetty -r -s 9600 nullmodem
oder
7:2345:respawn:/sbin/getty ttyS0 DT9600
Für getty braucht man evtl. noch die Ergänzungen in
/etc/conf.getty.ttyS0:
DEBUG=777
CLEAR=NO
WAITFOR=\r
Viele dieser Adapter, die USB mit einer seriellen Schnittstelle
verbinden, sind günstig und unter Linux unterstützt.
Man steckt den Adapter in den USB-Port und schaut sich erst einmal
die IDs an:
lsusb -v
...
idVendor 0x1a86
idProduct 0x7523
...
cd /usr/src/linux/drivers/usb/serial
grep 0x1a86 *
Dann in der Kernel-Konfiguration (make menuconfig) das Modul
eintragen:
USB Serial Converter support
-> USB Winchiphead CH341 Single Port Serial Driver
(Dieser Chip ist seit Kernel 2.6.24 unterstützt.)
-
Direkt mit dem Kernel von der Diskette:
Kernel auf die Disk
dd if=/vmlinuz of=/dev/fd0
Sagen, welche Partition gebootet werden soll:
rdev /dev/fd0 /dev/sd[irgendwas]
-
Mit LILO von der Diskette:
Ein bdlilo.conf anlegen mit diesem Inhalt:
boot =/dev/fd0
install =/boot/boot.b
map =/boot/map
read-only
backup =/dev/null
compact
prompt
timeout =20
image =/2214
label =Bootdisk
root =/dev/scsi/host1/bus0/target5/lun0/part5
append ="vga=0x105 aic7xxx=tag_info:{{0,0,0,0,0,0,0},{0,0,0,0,0,0,0}}"
Und dann eine Diskette einlegen und
mke2fs -v -i 8192 -m 0 /dev/fd0
(Oder Minix um etwas Platz zu sparen:
mkfs.minix -c /dev/fd0 1440)
mount /dev/fd0 /mnt/a
rd /mnt/a/lost+found/
md /mnt/a/{boot,dev}
cp -R /dev/{null,fd0} /mnt/a/dev/
cp /boot/boot.b /mnt/a/boot
cp bdlilo.conf /mnt/a/
cp /usr/src/linux/arch/i386/boot/bzImage /mnt/a/
md -p /mnt/a/dev/scsi/host1/bus0/target5/lun0
cp -R /dev/scsi/host1/bus0/target5/lun0/part5 /mnt/a/dev/scsi/host1/bus0/target5/lun0
lilo -v -C bdlilo.conf -r /mnt/a/
umount /mnt/a
Sicherung des Bootsektors:
dd if=/dev/sdaX of=bootsektor bs=512 count=1
Sicherung des Master-Boot-Records (MBR):
dd if=/dev/sda of=mbr bs=512 count=1
Auf eine Floppy kopieren zum Booten:
dd if=/dev/hda of=/dev/fd0 bs=512 count=1
Wenn man von MO von der 1. Partition (/dev/sda1) booten will,
dann muß LILO im MBR installiert sein. Wichtig ist dann dieser Eintrag
in der lilo.conf:
boot=/dev/sda (Und nicht /dev/sda1)
Trotzdem wird im IMAGE-Abschnitt das Root angegeben:
image = /vmlinuz
root = /dev/sda1
label = Linux
Erklärungen:
install=<Bootsektor>
Lage und Bezeichnung des bootsektors. Linux verwendet
als Standard /boot/boot.b
image=<Kernelimage>
Bei Problemen:
Wenn beim Booten mit lilo nur 'li' erscheint, deutet das auf einen
Plattengeometriefehler hin. Auch die Warnung 'not on the first disk'
deutet darauf hin, daß die Platte nicht als erste gemeldet wird, aus
welchem Grund auch immer.
Also: Die Zeile 'verbose = 3' in
/etc/lilo.conf einbauen und lilo aufrufen. Im Output nach einer
Zeile suchen, die wie folgt aussieht:
Device 0x0808: BIOS drive 0x81, 255 heads, 522 cylinders
Das wichtige dabei ist die Bios drive number. Wenn die nicht
0x80 ist, in /etc/lilo.conf die Zeile
disk = /dev/sda bios=0x80
am Ende der 'global section', (vor der Zeile mit Image=...)
einfügen und lilo erneut aufrufen.
In jedem Fall die hexadezimale Notation mit 0x.. verwenden!
Wenn das nichts hilft: Das Kapitel über drive geometry in user.dvi aus
der lilo Dokumentation lesen (unter /usr/doc/lilo/doc oder
/usr/lib/lilo/doc)
Konfiguration:
Im BIOS abgemeldete IDE-Platte, 2 SCSI Platten, Linux soll von
SCSI-Disk 1 booten:
verbose=3
boot=/dev/sda
linear
read-only
delay=50
vga = normal
disk = /dev/sda bios=0x80
image = /vmlinuz
root = /dev/sda1
label = Linux
LILO kann man auch über den NT-Bootloader starten. Dazu läßt man LILO
nicht direkt auf Platte schreiben, sondern in ein File:
lilo -s /tmp/linux.bin
und kopiert dieses File nach C:\. Dann muß man nur noch in
die C:\boot.ini von NT im Abschnitt
[Operating Systems] das eintragen:
c:\linux.bin="Linux starten"
Seit Version 21.x.x kann LILO Partitionen auch jenseits der
1024-Zylinder-Grenze booten. Man muß dazu nur das neue Schlüsselwort
LBA32 in die lilo.conf eintragen.
Man kann dem Lilo oder Loadlin Parameter für Init mitgeben:
1, 2, 3, 4, 5, single oder emergency. Wenn z.B. Linux nicht richtig
bootet, weil im Runlevel 2 oder 3 etwas schiefläuft, dann kann man
Linux im Single-User-Mode booten:
c:\linux\loadlin c:\linux\2033 root=/dev/sda1 ro single
Oder mit Lilo:
Lilo-Prompt: Linux single
Man kann den Kernel auch veranlassen, statt Init eine Shell zu
starten:
init=/bin/sh
Ich habe es noch nicht ausprobiert, aber mir schon folgendes notiert:
- Das geht z.B. mit etherboot. Man braucht natürlich einen
bootp/NFS-Server dafür.
- netboot-0.5.2
- Diskless-Mini-Howto, NFS-Root-Mini-Howto,
/usr/src/linux/Documentation/nfs-root.txt
-
"Diskless" booten: Der Rechner holt sich auch den Kernel selber
übers Netz. Du brauchst also entweder eine bootfähige Netzwerkkarte
oder aber eine Bootdiskette, die Du mit dem Paket "netboot" (irgendwo
auf der Sunsite) selber erstellen kannst.
Bei mir haut das mit der Bootdiskette leider nicht hin, ich
bekomme nur die Meldung, daß der Loader nicht in Ordung sei.
-
Root-Verzeichnis via NFS importieren. Das bedeutet, daß nur der
Linux-Kernel auf Deinem Rechner ist (Booten dann z.B. mit
loadlin) und alles andere via NFS importiert wird. Dafür mußt Du
dann "NFS-Root" und NFS selber in den Kernel mit
importieren. Deine IP-Adresse bekommst Du dann mit dem
BOOTP-Protokoll vom Server mitgeteilt (anhand Deiner
Netzwerkkarten-Hardwareadresse). Danach sollte eigentlich das
Root-Verzeichnis via NFS gemounted werden, aber das klappt bei
mir nicht ("Adding of local route failed"... Keine Ahnung, wieso.
- Mal sehen ...
-
Was auf jeden Fall sehr gut funktioniert, ist das
netboot.xyz
welches man unter anderem auf einen USB-Stick schreiben kann und
dann damit einen Netboot machen.
Aus dem Menu sind diverse Live/Install-Images oder Tools verfügbar.
-
Die Meldung beim Booten:
Starting daemons: syslogd/etc/rc.d/rc.M: line 30: 37
Interrupt
kann man beheben durch Start des syslog im Hintergrund mit "&".
-
Wenn die Meldung "Can't locate module char-major-4"
kommt, dann muß man in
/etc/modules.conf
das eintragen:
alias char-major-4 off
-
Boot-Loader-Fehler kann man mit
Boot-Repair korrigieren.
Mit loadlin:
valerie.img root=/dev/nfs rw vga=-2 nfsroot=192.168.1.1:/mnt4/iX-Terminal/valerie,rsize=4096,wsize=4096 nfsaddrs=192.168.1.8:192.168.1.1::255.255.255.0:valerie::none
Weitere Infos:
/usr/src/linux/Documentation/nfsroot.txt
Man kopiert einfach loadlin.exe und einen Kernel nach
c:\linux\ und erstellt folgende c:\config.sys:
[Menu]
menuitem=Win95, Windows 95 starten
menuitem=Linux, Linux starten
menudefault=Win95,15
[Linux]
shell=c:linux\loadlin.exe c:\linux\2217 root=/dev/sda5 ro
[Win95]
device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
Country=049,850,C:\WINDOWS\COMMAND\country.sys
Am einfachsten geht das nach
dieser Anleitung
bzw. nach
dieser Anleitung
mit EasyBCD:
Damit bootet der Windows Vista oder 7 Bootloader das
Linux.
Achtung: NeoGrub unterstützt keinen Linux LVM, sondern man braucht
eine normale Partition, zumindest ein /boot.
Kurzfassung:
EasyBCD starten und "add a new entry" klicken, dann den NeoGrub Tab
auswählen und Install klicken. Dann Configure klicken, welches die
Datei C:\NST\menu.lst öffnet. Dort Folgendes eintragen:
root (hd0,4)
kernel /kernel-genkernel-x86-4.0.5-gentoo root=/dev/mapper/rootvg-root1lv dolvm
initrd /initramfs-genkernel-x86-4.0.5-gentoo
boot
Nach dieser Anleitung
geht das so:
Man bootet ein Live-Linux.
Bootloader ohne Partitionstabelle sichern:
dd if=/dev/sda of=bootloader_sicherung bs=446 count=1
MBR (Bootloader plus Partitionstabelle) sichern:
dd if=/dev/sda of=mbr_sicherung bs=512 count=1
Dann:
mount -o bind /dev /mnt/dev
mount -t proc /proc /mnt/proc
chroot /mnt /bin/bash
Dann Grub in den MBR schreiben:
grub
grub> root (hd0,1)
grub> setup (hd0)
grub> quit
und das in die /boot/grub/menu.lst:
title Windows7
rootnoverify (hd0,0)
chainloader (hd0,0)+1
Alle Rechner werden durch ein an den jeweiligen Rechner angepasstes
Skript gesichert, z.B.:
backup-x200
welches ein kleines Perl-Modul verwendet:
slbackup.pm
Im Kern erfolgt die Sicherung aber nur durch einen
rsync -avSH --delete --delete-excluded --numeric-ids ...
Für eine Außer-Haus-Sicherung bietet sich
syncosync an. Es verbindet zwei
Raspberry PI zu einem cloudartigen Speicher, siehe dazu auch c't
13/2022 S. 88.
Für eine Desktop-Sicherung bietet sich
Duplicati an.
Und für eine Image-basiertes Full-Backup:
Rescuezilla
Man kann und sollte einen Restore in einer VM testen. Dazu die VM
anlegen und mit einem Boot-ISO starten:
qemu-img create -f raw restore-test.raw 50G
qemu-system-x86_64 -enable-kvm -drive if=virtio,driver=raw,node-name=hda,file=/xtemp/vms/restore-test.raw -m 2G -smp 1 -net nic -net user,hostfwd=tcp::2222-:22 -cdrom image.iso -boot once=d
Ein Restore geht grob so:
# Live-CD booten
# Mit fdisk die Partitionen anlegen und ggf. LVM einrichten.
# ACHTUNG: Darauf achten, dass die Partitions-Tabelle DOS und
nicht GPT ist!
# Beispiel:
export BOOT=/dev/sda1
export SWAP=/dev/sda2
export ROOT=/dev/sda3
mkswap -L SWAP $SWAP
# Filesysteme formatieren, aber Achtung:
# Wenn man in seinem Backup einen alten grub hat (0.97), der keine Inodes
größer 128 unterstützt, dann sollte man beim Formatieren "-I 128"
angeben!
# Boot-Partition
mkfs.ext3 $BOOT
e2label $BOOT BOOT
# Root-Partition
mkfs.ext4 $ROOT
e2label $ROOT ROOT
tune2fs -c 0 $ROOT
tune2fs -i 400d $ROOT
mkdir /mnt/restore
mount $ROOT /mnt/restore
mkdir /mnt/restore/boot
mount $BOOT /mnt/restore/boot
cd /mnt/restore
rsync -avSH --numeric-ids server:/mnt/data/backup/fremd/backup_von_WASAUCHIMMER/. .
source .slbackup_infos/mkdirs.sh
# bzw. zumindest: mkdir proc sys mnt tmp
# fstab prüfen, ob die Geräte den richtigen Namen haben:
vi etc/fstab
# ggf. neues Netzwerk-Interface suchen und eintragen
# Für Gentoo:
ifconfig -a
vi etc/conf.d/net
cd etc/init.d
mv net.ALT net.NEU
# Für Arch:
ip link
cd etc/systemd/network
ls
# z.B.:
vi 30-ethernet-bond0.network
vi 30-wifi-bond0.network
# Dann weiter:
cd /mnt/restore
mount -t proc proc proc
mount --rbind /dev dev
mount --rbind /sys sys
chroot . /bin/bash
# Dann noch Grub, entweder der alte Grub...
grub
# root (hd0,1)
# setup (hd0)
# quit
vi boot/grub/menu.lst
# oder der neue Grub ab Version 2...
grub-install /dev/sda
# bzw.:
grub-install --target=i386-pc /dev/sda
# Das root Device bei "root=UUID=..." anpassen:
vi boot/grub/grub.cfg
exit
cd
reboot
Beim Testen in einer VM, kann es sein, dass man die VM mit der
Disk-Option -drive if=ide,... starten muß, weil das alte Linux
noch kein virtio unterstützt!
Nach dem ersten Boot:
grub-mkconfig -o /boot/grub/grub.cfg
journalctl -p 3 -b
mkdir -p /usr/sl
cd /usr/sl
svn co svn://server/sl/trunk/bin .
cd quelle
find . -print | cpio -pvdm /ziel
(Manche cpios brauchen auch noch den Schalter "-u".)
oder:
cd /quelle
cp -axv . /ziel
oder mit TAR:
cd /quelle
tar -cvpf - . | gzip --best > /ziel.tgz
Bedeutung:
Create, Verbose, Preserve attributes, file stdout (-)
GZIP nimmt die Ausgabe vom TAR und komprimiert nach ziel.tgz
Sicherungen über das Netzwerk:
-
rsync -avSH --numeric-ids --delete --delete-excluded --exclude /proc --exclude /sys --exclude / sicherungsserver:/backup_von_xxx/
Restoren kann man das vom Sicherungsserver so:
cd /verzeichnis/wo/die/sicherung/liegt/
rsync -avSH --numeric-ids . zielrechner:/mnt/neues_root/
Laut
diesem Artikel
sollte rsync am schnellsten mit dieser Option laufen:
-e 'ssh -T -c aes128-ctr -o Compression=no -x'
Weitere Details
siehe: c't - Schlüsselspiele
-
tar -clpSf - /filesystem | ssh sicherungsserver tar -C /zielverzeichnis -xpSf -
-
Rshd richtig einstellen, wenn es als Root funktionieren soll:
shell stream tcp nowait root /usr/sbin/tcpd in.rshd -Lh
-
tar -cvzf - /filesystem | \
ssh tapehost 'buffer -s 32k -m 10m >/dev/st0'
-
tar -cvf username@backuphost:/dev/st0 .
(Dafür ist aber auf dem "backuphost" das Programm "rmt" notwendig.
-
tar -cvf - waszusichern | \
( rsh host.domain -l username tar -xvf /dev/st0 - )
-
Geschwindigkeitsvergleich (Backuphost: Pentium-200, Client:
Celeron-500, 100er Ethernet, 1.4 GB Daten)
-
tar -cf backuphost:/tmp/backup.tar .
27 Minuten
-
tar -cf - . | ( rsh backuphost 'cat - > /tmp/backup.tar' )
12 Minuten
-
tar -cf - . | gzip -1 | ( rsh backuphost 'cat - > /tmp/backup.tar.gz' )
18 Minuten
-
Auf backuphost:
netcat -l -p 3000 > /tmp/backup.tar
Auf Client:
tar -cf - . | netcat -w 10 backuphost 3000
14 Minuten
cd /quelle
tar -cvpf /dev/tape .
(d: diff, x: extract, t: list)
Einzelfiles extrahieren: tar -xvf /dev/tape 'c:/temp/*'
Bandbewegungen:
Zurück: mt bsfm
Ungetestet:
I use a mt setblk 0, and a dd buffer of 32 KB
I do backups like:
cd /
find . -print | cpio -ovB | dd of=/dev/st2 bs=32000
Angeblich ist "-b 20" die übliche Blockgröße?!
Ungetestet:
cd /quelle
find . -print | cpio -ocvB > /dev/tape
cd /quelle
find . -print | cpio ocvC 65536 > /dev/tape
Der dd kann auch die Übertragungsrate anzeigen, wenn man
dem dd das Signal USR1 schickt.
Linux komplett auf anderes Medium kopieren:
-
Die einfachste Methode, die alles außer gemounteten Filesystemen
(-x) kopiert ist:
cp -axv /quelle /ziel
-
Mit tar geht es so:
cd /ziel
tar -C /quelle/ -cplf - . | tar -xpf -
-
So funktioniert es (wenn auch umständlicher) auch:
cd /
find . -xdev | egrep -v "\./dev/|\./mnt/|./proc/" | cpio -pvdm
/mnt/ziel/
Das /dev-Verzeichnis kann man kopieren mit:
cp -av /dev /mnt
wobei /mnt das Ziel ist. In /mnt wird dabei ein
/mnt/dev/ erstellt, wenn es noch nicht existiert.
Und das /mnt/-Verzeichnis kann man "kopieren" mit:
cd /mnt
mkdir `/bin/ls /mnt/ALTE_PLATTE/mnt/`
-
Wenn man die komplette Platte auf CDs sichern will, dann muß man
das Image, das dd erstellt noch splitten:
dd if=/dev/hda | gzip -1 | split -b 600m -
/meine_images/image.gz
Sollte man Dateien mit Namen in nicht-UTF8 Encoding angelegt haben,
dann hilft convmv bei der
Umbenennung:
convmv --nfc -r -f utf8 -t utf8 -r .
# bzw.
convmv -r -f latin1 -t utf-8 .
Mit der Option --notest wird es dann tatsächlich
ausgeführt.
Den Inhalt einer Datei kann man mit
iconv von z.B. Latin-1 zu UTF-8 wandeln:
iconv -f latin1 -t utf-8 document.txt >> document_new.txt
XEmacs unterstützt UTF erst richtig ab app-editors/xemacs-21.5.34-r4
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
MOs (Magneto-Optical-Disks) formatiere ich so:
mk.ext3 /dev/sdb && tune2fs -c 0 -i 0 -r 0 /dev/sdb && mount /dev/sdb /mnt/mo && chown loescher:users /mnt/mo/.
Testen, ob der Stick die echte Kapazität hat, oder ein "Fake"-Stick
ist:
f3probe --destructive --time-ops /dev/sdX
Damit kann man auch auf Defekte (kaputte Sektoren) testen!
Geschwindigkeit testen:
mount ...
cd ...
time ( dd if=/dev/zero of=sltest.dd status=progress bs=1M count=2000 ; sync )
Das Ergebnis (z.B. 3m38.179s) dann in MB/s umrechnen:
calc '2000/(3*60+38)' ergibt ~9MB/s.
Mein schnellster USB-Stick schafft am USB2-Port hier ca. 26 MByte/s.
Formatierung mit FAT:
Zuerst mit fdisk eine primäre Partition mit Typ "c" ("W95 FAT32
(LBA)") anlegen und dann:
mkfs.vfat /dev/sdX1
fatlabel /dev/sdX1 'USB-Stick'
Formatierung mit exFAT:
Zuerst mit fdisk eine primäre Partition mit Typ "7"
("HPFS/NTFS/exFAT") anlegen und dann:
mkfs.exfat /dev/sdX1
exfatlabel /dev/sdX1 'USB-Stick'
Formatierung mit NTFS:
Zuerst mit fdisk eine primäre Partition mit Typ "7"
("HPFS/NTFS/exFAT") anlegen und dann:
mkfs.ntfs -f /dev/sdX1
ntfslabel /dev/sdX1 'USB-Stick'
Formatierung mit EXT:
Zuerst mit fdisk eine primäre Partition mit Typ "83"
("Linux") anlegen und dann:
export TARGET=/dev/sdX1
export LABEL=AUDIO
mkfs.ext3 ${TARGET}
e2label ${TARGET} ${LABEL}
tune2fs -c 0 LABEL=${LABEL}
tune2fs -i 0 LABEL=${LABEL}
tune2fs -m 0 LABEL=${LABEL}
mount -L ${LABEL} /mnt/tmp
chown loescher:users /mnt/tmp/.
umount /mnt/tmp
Um die Root-Partition, die aus diversen Gründen Read-Only gemountet
worden ist, wieder als Read-Write zu mounten reicht dieser Befehl:
mount -w -n -o remount
-
Mit xvidtune kann man die Einstellungen Testen und
verbessern. (Das alte vgaset gibt es nicht mehr.)
-
X11 nutzen mit VESA und Frame Buffer:
Grafikkarte muß VESA 2.0 kompatibel sein. Alternativ kann man auch
unter DOS univbe verwenden und Linux mit Loadlin starten. Im Kernel
muß FB-Support für VESA drin sein. Kernel-Boot-Parameter muß
z.B. vga=792 sein (1024x768x16M). Bei RedHat gibt es einen X-Server
dafür: XF86_FBdev-xx-xxx-xxx.rpm installieren und den
Server auf X linken. Modeline erhält man mit "fbset -x". Es geht
auch ohne Modeline, wenn man in der Screen-Section bei Modes default
einträgt.
-
Einen X-Bildschirm-Snapshot von einem anderen Rechner kann man
so anfertigen:
xwd -root -silent -display host:0 | xwud
-
Man kann X11 mehrmals (auch mit verschiedenen Farbtiefen) starten,
indem man die gewünschte Display-Nummer angibt:
X -bpp 24 :1
oder startx -- :1 -bpp 8
Die Server starten dann auf der nächsten freien virtuellen Konsole
(bei mir ab F8).
Nornalerweise verwende ich den 16bpp-Modus, 8bpp starte ich mit
x8, und 24bpp mit
x24. Dazu sind entsprechende
Display-Sections in der
/etc/XF86Config ganz
nützlich.
-
Die Stromsparfunktionen unter XFree4 aktiviert man so:
Section "ServerFlags"
Option "AllowMouseOpenFail"
# Für Power-Saver:
Option "BlankTime" "3"
Option "StandbyTime" "6"
Option "SuspendTime" "9"
Option "OffTime" "12"
EndSection
-
Um X11 gegen Abhörversuche durch andere Benutzer abzusichern und um
zu verhindern, daß andere Benutzer auf einem X-Server Fenster öffnen,
muß man nur ein File "/usr/X11R6/lib/X11/xinit/xserverrc"
anlegen:
#! /bin/sh
authfile=$HOME/.Xauthority
xauth -f $authfile add :0 . `mcookie`
exec X -auth $authfile "$@"
Ab jetzt wird ein cookie verwendet. Wer den cookie nicht kennt, kann
keine Fenster aufmachen oder abhören.
Allerdings kann jetzt nicht einmal mehr root ein Fenster
aufmachen. Wenn man das will, dann muß man in der .profile
(oder ähnlichem) von root dafür sorgen, daß er das gleiche
.Xauthority nutzt, wie der User.
-
X11 auf mehreren Monitoren: Distributed Multihead X (DMX):
Server "xdmx" und "Xevie".
z.B.:
Xdmx :0 +xinerama -display Rechner1:0 -display Rechner2:0
-
KDE von einem anderem Rechner auf dem lokalen X11 starten (quasi
X-Terminal): Dazu einfach in die persönliche
~/.xsession das eintragen:
ssh server 'sudo /usr/bin/mkdir /tmp/.ICE-unix; sudo /usr/bin/chmod 1777 /tmp/.ICE-unix'
ssh server /usr/kde/3.3/bin/startkde
oder die Variante ohne ssh-Tunnelung (für alte
performance-schwache Rechner):
xhost +server
ssh server 'sudo /usr/bin/mkdir /tmp/.ICE-unix; sudo /usr/bin/chmod 1777 /tmp/.ICE-unix'
ssh server 'DISPLAY=mein.lokaler.rechner:0.0 /usr/kde/3.3/bin/startkde'
-
Man kann sich auch dem xdm-Login-Bildschirm von einem anderen
Rechner (auf diesem muß xdm laufen) holen:
X -query host
-
Wenn man als Benutzer2 auf das Display von Benutzer1 zugreifen
will, dann am besten so:
benutzer1# xauth nextract myxkey :0
benutzer1# su - benutzer2
benutzer2# xauth nmerge myxkey
-
Mit xrandr kann man die Auflösung von X11 umschalten.
-
Wenn man eine X11-Session praktisch "im Hintergrund" analog zu
screen für TTYs laufen lassen will, dann geht das mit VNC.
Dazu startet man einmalig den VNC-Server (tightvnc) (als ganz
normaler Benutzer):
vncserver -geometry 1271x968
Um in diesem virtuellen X-Server eine Sitzung zu starten, legt
man sich ein ~/.vnc/xstartup an:
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid blue
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
wmaker &
xterm -vb -ls -sl 5000 -geometry 80x24-0+0 &
asclock -d &
xemacs &
Beenden kann man den VNC-Server mit vncserver -kill :1
Der Server lauscht auf Port 5901. Das muss man aber nur zum
SSH-Tunneln wissen.
Um mit dieser (nicht sichtbaren) X11-Session arbeiten zu können,
braucht man einen VNC-Viewer. Es bieten sich drei Möglichkeiten
an:
-
Windows VNC-Viewer: Einfach das vncviewer.exe von
TightVNC starten. Das
ist für Windows erfahrungsgemäß die beste Lösung!
-
Linux VNC-Viewer: viewer -fullscreen rechnername:1
-
Browser VNC-Viewer: Mit einem Browser den URL
http://rechnername:5801/ ansteuern.
Das funktioniert aber leider nicht mit allen
VNC-Servern.
Abhilfe:
yay -S novnc
x11vnc
novnc
Und dann im Browser diesen URL ansteuern:
http://rechnername:6080/vnc.html?host=rechnername&port=6080
- Mit der Kombination von VNC-Server und -Viewer ist auch
eine betriebssystemübergreifende Fernhilfe möglich. Am
elegantesten ist das durch die
Fernwartung von heise-Netze gelöst.
Einziger Nachteil dieser Lösung: UAC funktioniert damit
nicht.
Das geht nur, wenn man
UltraVNC
als Service installiert und
dann z.B. in einem Batch-File den Verbindungsaufbau
hinterlegt:
@ECHO OFF
SETLOCAL
SET VNCPATH="C:\Program Files\uvnc bvba\UltraVNC"
%VNCPATH%\winvnc -connect dns.name.des.helfers.de
Unter reinem Linux geht es so:
Beim Helfenden (Internetrouter muss TCP/5500 durchlassen!):
emerge -avt net-misc/ssvnc
ssvncviewer -listen
Beim Hilfesuchenden:
emerge -avt x11-misc/x11vnc
# bzw.
sudo apt-get install x11vnc
x11vnc -connect <DNS-Name oder IP des Helfenden>
-
Es gibt auch die Möglichkeit einem oder mehreren Benutzern auf
dem gleichen Rechner Shell-Interaktionen zu zeigen:
su - benutzer_der_schauen_will
who
# Verwendetes TTY heraussuchen
script /dev/null | tee /dev/pts/3
Man könnte auch mehrere TTYs angeben.
-
Als Alternative zu VNC bietet sich auch
X2Go an!
-
Wenn man von einem anderen Rechner das Display umleiten will
(ohne ssh, sondern klassisch mit xhost und DISPLAY), dann muss
der X-Server, der die Verbindungen annehmen soll, ohne die
Optionen "-nolisten tcp" gestartet werden. Dazu muss
man für eine gewöhnliche X-Session in /usr/bin/startx
diese Optionen entfernen.
Um in KDE-kdm-Sessions das einzustellen, muss man in
/usr/kde/3.5/share/config/kdm/kdmrc die nolisten-Option
enfernen.
-
Man kann ganz einfach X11 Eingabegeräte, die man nicht braucht
mit
xinput list
auflisten lassen und dann mit z.B.
xinput --disable 'TPPS/2 IBM TrackPoint'
Entnommen aus: /usr/src/linux/drivers/scsi/scsi.c:
Verwendung:
echo "scsi add-single-device Host Channel Id Lun" >/proc/scsi/scsi
Also:
echo "scsi add-single-device 0 0 3 0" >/proc/scsi/scsi
Damit wird das Gerät mit der SCSI-ID 3 hinzugefügt.
Entfernen geht mit "remove-single-device".
In sein Skript gepackt sieht es dann so aus:
scsirescan
Ich empfehle aber jedem, der externe Geräte nachträglich ein- und
ausschalten muß, sich das Device-Filesystem
devfs
anzuschauen. Das löst alle Probleme mit den generischen
SCSI-Geräten. Damit gehört die unpraktische und gefährliche
Numerierung sga, sgb, sgc, ... der
Vergangenheit an.
Einen SCSI-Reset (z.B. für ein hängendes Gerät) kann so ausgelöst
werden:
cdrecord -reset
oder
cdrdao unlock --device 0,0,0
Um etwas Set-UID laufen zu lassen gibt es "su1" oder "sudo".
Aber es ist unter Linux nicht möglich Scripten SUID laufen zu lassen, da
es ein Sicherheitsloch darstellen würde. Das SUID-Bit (ebenso wie SGID)
kann bei Shellscripten zwar gesetzt werden, hat aber keine Wirkung.
Aber es gibt eine Lösung: Man kann das Script in ein C-Programm packen,
das dann SUID laufen kann. Man kann z.B. folgendes C-Programm als
Wrapper verwenden:
#include <stdio.h>
#define PROGPATH "/usr/local/bin/perl"
#define PROG "perl"
main ()
{
execl (PROGPATH, PROG, "/usr/local/bin/MEINSCRIPT", NULL);
fprintf (stderr, "exec %s failed\n");
}
Die Swap-Partition oder ein Swap-File kann bei alten Kernels (vor
2.2.x mit x<17 (Wer weiss wann das genau geändert wurde?))
maximal 130752 Blocks groß sein!
Wenn man das Paging beschleunigen will, so kann man Striping
bzw. Interleave zwischen den Swap-Spaces aktivieren. Dazu stellt man
für die Swapspaces die gleiche Priorität ein, was bewirkt, daß auf
diese gleichzeitig zugegriffen wird. Das macht natürlich nur bei
physisch unterschiedlichen Platten Sinn.
# For interleaved swapping across multiple devices:
/dev/scsi/host1/bus0/target5/lun0/part1 swap swap pri=1 0 0
/dev/scsi/host1/bus0/target6/lun0/part1 swap swap pri=1 0 0
/dev/scsi/host1/bus0/target1/lun0/part2 swap swap pri=0 0 0
Wenn ein XTerm oder die Konsole etwa so aussieht:
ÈccyvyéYxyPÃâ`Y0;¤zIb!+ìÀyí-prríq`
"q^,wí ÉÞð+¼qó/62øaðvÀÃkó,ªxË·1t¥eÿIÈ,Ù8³âcË
x"Öæ0`;ÇàdTÚ®ÉëYv¹!tØ,BÃtæ0È0p||=â1ÎwÈS`õå4
weil man z.B. versehentlich ein cat test.gif losgelassen
hat, dann hilft das Kommando reset in diesem
Terminal. Alternativ funktioniert auch
"<Ctrl>-v <Esc> c <Enter>".
Einen Patch zwischen zwei Verzeichnissen erstellt man mit:
diff -u --recursive --new-file AltesVerz NeuesVerz >
patch.txt
Einen Patch zwischen zwei Files erstellt man so:
diff -u AltesFile NeuesFile > patch.txt
Anwenden kann man den Patch dann so:
patch < patch.txt
(Dabei sollten sich das zu patchende Verzeichnis oder File im
aktuellen Verzeichnis befinden.)
Für eine Platte, die viele kleine Files aufnehmen soll, wie zum
Beispiel ein News-Spool, sollte man die Inode-Anzahl erhöhen:
mke2fs -v -i 2048 /dev/sdc
Standardwert ist 4096. Je kleiner der Wert, desto mehr Inodes werden
reserviert.
-
Eine falsche (oder defekte) Boundingbox kann man so beheben:
pstoedit -f fig x.ps x.fig
xfig x.fig
und dann als PS exportieren. (Ungetestet: Alternativ kann man
auch ps2epsi von Ghostscript benutzen.)
-
Einen Booklet-Druck mit Duplexeinheit kann man so erreichen:
Ohne psnup:
psbook file.ps | pstops "4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm),1R@.7(0cm,14.85cm)+-2R@.7(0cm,29.7cm)" > out.ps
andere Drehung:
4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm),1L@.7(21cm,0)+-2L@.7(21cm,14.85cm)
Mit psnup:
psbook file.ps | psnup -2 | pstops "2:0,1U(21cm,29.7cm)" >
out.ps
-
Zwei Seiten auf eine Seite kann man praktisch in jeder Anwendung
drucken, wann man dem lpr-Kommando das voranstellt:
psnup -2 -q
-
Eine A4 Seite auf mehrere A4-Seiten aufteilen, so daß die nach
dem Zusammenkleben A3 ergeben:
poster -v -iA4 -mA3 -pA1 infile.ps > outfile.ps
-
Um unter Windows (Vista oder 7) in eine Postscript-Datei zu
drucken installiert man einfach den "MS Publisher Imagesetter"
am Anschluß "FILE".
-
Zwei oder mehrere Postscript-Dateien kann man mit dem Kommando
psmerge zusammenfügen. Allerdings klappt das nicht
immer fehlerfrei. Besser ist daher folgendes:
gs -dBATCH -dNOPAUSE -q -sDEVICE=ps2write
-sOutputFile=out.ps in1.ps in2.ps ...
kann man, indem man in
Altavista oder
Infoseek nach folgendem
sucht:
link:www.loescher-online.de
Hotbot hat diese Funktion in der
"Look for"-Auswahlbox.
Auch Google kann das über die
erweiterte Suche.
-
chmod 755 /mnt
-
Bei neu angelegten Usern muß man erst ~/.Xauthority
löschen, sonst startet kein X.
-
Um alte libc5-Programme laufen zu lassen, muß man den
LD_LIBRARY_PATH der SuSE 4.4 löschen.
-
Eine Audio CD als einzelne WAV Dateien einzulesen geht so:
cdparanoia -B
Bei sehr fehlerhaften Tracks einer CDs hat sich auch das bewährt:
cdda2wav -vall cddb=0 speed=4 -paranoia paraopts=proof -track 2
-
CD-Größen (nach Ausgabe von du -sm ...:
Für Musik: 807 geht maximal.
Für Daten: 704 geht maximal.
-
Mit diesem Einzeiler kann man eine Liste zum Ausdrucken auf
Musik-CDs erstellen:
/bin/ls -1 | perl -e '$line=0; while(<>){$line++; s/_/ /g; s/\.mp3//g; s/\.wav//g; print sprintf("%.2d",$line)." $_";}'
-
Vorher: Doppelte Files, Backup-Files und Namen mit
Doppelpunkten und Fragezeichen und Anführungszeichen entfernen,
da das nicht alle Betriebssysteme unterstützen:
finddupe -vv .
find . | grep ~
find . | grep :
find . | grep \?
find . | grep \"
-
Nützliche Einzeiler:
Alle Verzeichnisse mit ":" in "_-_" umwandeln:
find . -type d | grep : | perl -wne 'chomp; $neu = $_; $neu =~ s/:/_-_/; rename $_,$neu;'
Skript in Unterverzeichnis ausführen:
find . -name 01.mp3 > /tmp/x ; perl -wne 'chomp; s:(./)*(.+?)/01.mp3:$2:; if (-e "$_/titel.txt"){ chdir $_; system("SetMp3TagFromTitelTxt"); chdir "..";}' /tmp/x
-
Image erstellen:
mkisofs -o Image -pad -J -r verzeichnis_oder_file(s)
Mit "-T", dann ein TRANS.TBL erstellt.
Mit "-l" wird es unter DOS unbrauchbar!
Mit "-b imagefile" wird eine bootfähige CD nach El Torito
erstellt.
-
Wenn man eine bestehende CD, die mit isolinux bootfähig war,
verändert hat und neu brennen will, dann so:
mkisofs -o image.iso -b isolinux/isolinux.bin -c
isolinux/boot.cat -no-emul-boot -boot-load-size 4
-boot-info-table -R -J -T .
-
Image mounten:
mount -t iso9660 -o ro,loop=/dev/loop0 IMAGEFILE
/mnt/cdrom
-
Brennen von Daten-CD oder DVD:
Testen:
cdrecord -dummy -v speed=4 dev=1,3,0 IMAGEFILE
Brennen:
cdrecord -v speed=4 dev=1,3,0 IMAGEFILE
Bei neueren Laufwerken kann man BurnFree aktivieren:
-driveropts=burnfree
Bei DVD-R kann es sein, dass man den Timeout verlängern muss:
timeout=60
-
Brennen von Audio:
Von MP3 ein WAV erstellen geht mit:
amp -c -w file.mp3 file.wav
oder
mpg123 -w file.wav file.mp3
Wenn das WAV-File nicht mit 44.1 kHz gesamplet ist, dann
umrechnen:
mpg123 -r 44100 -w file.wav file.mp3
cdrecord -v speed=4 dev=1,3,0 -pad -audio /tmp/*.wav
Wenn die Tracks übergangslos sein sollen "defpregap=0" und
"-dao" verwenden:
cdrecord -v speed=4 dev=1,3,0 defpregap=0 -dao -pad -audio
/tmp/*.wav
(Erfahrungen mit verschiedenen CD-Marken)
-
Brennen von Mixed-Mode-CD, bei denen der erste Track Daten und
die folgenden Musik sind:
cdrecord -v speed=4 dev=1,3,0 IMAGEFILE -pad -audio /tmp/*.wav
-
Erste Session einer Multisession-CD brennen:
cdrecord -v speed=4 dev=1,3,0 -multi ...
Um ein Image für nächste Session erstellen braucht mkisofs noch
diesen zusätzlichen Schalter:
-C $(cdrecord dev=1,3,0 -msinfo)
Die letzte Session wird ohne "-multi" gebrannt und schließt
damit die CD ab.
-
Bei CD-RWs muß man einfach zusätzlich die Option
-blank=fast beim Brennen verwenden.
-
Bei DVD-RWs muß man einfach zusätzlich die Option
-blank=fast bzw. -format beim Brennen verwenden.
-
Bei ATAPI (IDE) Brennern gibt man das hdX-Gerät an, z.B.:
cdrecord -v speed=20 -driveropts=burnfree dev=/dev/hdc
und bei USB-Brennern das SCSI-Gerät:
cdrecord -v speed=20 -driveropts=burnfree dev=0,0,0
-
Infos:
cdrecord -scanbus
cdrecord -atip -v dev=1,3,0
cdrecord -prcap -v dev=1,3,0
cdrecord -inq -v dev=1,3,0
Wenn der Kernel einen Oops bringt, dann versucht der klogd
diesen zu analysieren, was meist fehlschlägt. Deshalb am besten in
einer Testphase den klogd deaktivieren.
Wenn es dann zu einem Oops kommt, dann sitzt dieser Text noch in
/proc/kmsg wo man ihn nur so herauslesen kann:
cat /proc/kmsg > /tmp/oops.txt
Nach einer kurzen Wartezeit mit CTRL-C abbrechen.
Dann kann man den Oops mit /usr/src/linux/scripts/ksymoops
analysieren:
ksymoops -v vmlinux -m System.map
Wenn der make für ksymoops nicht durchläuft, dann fehlen
wahrscheinlich die Libraries libiberty und lbfd,
welche bei den binutils-2.9.1.0.15 dabei sind.
Auf der Konsole kann man die Beeps so ausschalten:
setterm -blength 0
Und unter X11 kann man es so ausschalten:
xset b off
Der dynamische Linker ist ld.so.
Statische Bibliotheken enden auf .a, dynamische auf
.so.
Wenn $LD_LIBRARY_PATH gesetzt ist, dann werden Bibliotheken
in diesem Pfad gesucht.
Zum Debuggen kann man $LD_DEBUG auf help oder
libs setzen.
ldd zeigt verwendete Bibliotheken eines Programmes an.
Die libc kann man auch am Prompt ausführen. Es wird die Version
ausgegeben.
Mit $LD_PRELOAD kann man Bibliotheken laden, die Funktionen
anderer Bibliotheken überschreiben, z.B.:
LD_PRELOAD=libmemusage.so /bin/ls
Feststellen, ob die EIDE-Platte DMA benutzt:
hdparm -cd /dev/hda
Umstellen:
hdparm -c1 -m16 -d1 -X68 /dev/hda
für Ultra-ATA/66 oder -X66 für Ultra-ATA/33.
Die maximalen Werte für -m erfährt man mit -i.
Aktuelle (2016) Western Digital Platten arbeiten standardmäßig mit
einem sehr aggressiven Stromsparverhalten.
Dazu ist der IDLE3-Timer auf 8 Sekunden eingestellt.
Das ist ganz OK für einen Desktop, aber nicht für einen Server, denn
da wird der LCC-Wert sehr schnell das Maximum überschreiten und die
Platte ein Garantiefall.
smartctl --all /dev/sdb | grep 193
Daher IDLE3-Timer auf z.B. 10 Minuten stellen:
idle3ctl -s150 /dev/sdb
Mit vlock kann man die Text-Konsolen sperren.
Mit z.B.
whois -h whois.denic.de loescher-online.de
kann man den Besitzer einer Domain herausfinden.
In einem Text-Terminal kann man mit screen mehrere Sessions
gleichzeitig laufen lassen und diese auch nach einem Logout und
späterem Login wieder fortsetzen.
Kurzanleitung:
1. Ganz normal anmelden, willkommen in Deiner Shell.
2. "screen" aufrufen. Es kommt eine Hinweismeldung, Taste drücken und
Du bist wieder in Deiner Shell (allerdings in einer neuen, wie auch
pstree zeigt).
3. Arbeite einfach drauf los.
4. Stürze mit deinem Client ab :-) oder schließe einfach das
Terminal.
5. Neu anmelden. Danach "screen -r" aufrufen (wenn das nicht klappt,
zuvor noch ein "screen -d").
6. Voila, willkommen in Deiner alten Session.
Wenn Du eine Session "weich" in den Hintergrund schicken willst,
dann drückst Du Strg-a-d. Du kannst mehrere in den Hintergrund
geschickt haben, dann mußt Du bei screen -r angeben, welche Session
Du wiederhaben willst.
screen ist eine Gute Sache. Du kannst Programme starten, Dich abmelden
und nach einem Tag mal wieder vorbeischauen, was die so machen.
Folgende Punkte sollte man unter anderem bedenken, wenn man ein
sicheres Programm oder Skript schreiben will:
Core-Dumps verhindern (ulimit -c 0 oder setrlimit())
umask 077
env -i (unset %ENV)
STDOUT und andere Descriptoren etc. schließen
Bevor man eine Festplatte zum Wertstoff-Hof trägt oder sie verkauft,
sollte man sicherstellen, dass alle Daten gelöscht sind.
Dazu eignet sich "dd" oder wenn die Platte schon schwere
Schreibfehler aufweist besser
"dd_rescue"
oder
"ddrescue".
Der Aufruf mit dd_rescue würde so aussehen:
dd_rescue /dev/zero /dev/sdX
Aufruf mit ddrescue so:
ddrescue --generate-mode /dev/zero /dev/sdX mapfile
ddrescue --fill-mode=+ --force /dev/zero /dev/sdX mapfile
Das einfachste und laut c't aus ausreichende ist dd:
dd if=/dev/zero of=/dev/sdX bs=10240 conv=noerror status=progress
Das braucht auf einer älteren Platte ca. 1 Minute pro GB.
Man kann die Platte auch statt mit Nullen mit Zufalls-Werten
überschreiben:
dd if=/dev/urandom of=/dev/sdX bs=10240 conv=noerror status=progress
Das braucht allerdings schon ca. 7 Minuten pro GB. (Pentium-4)
Etwas schneller geht angeblich:
sdd -inull bs=1m of=/dev/sdc -noerror -pg
Noch sicherer ist shred (aus den Fileutils oder Coreutils):
shred -v -n0 -z /dev/sdX
oder
DBAN.
Wenn es aber bereits sehr viele Schreibfehler gibt, dann bricht ein
dd oder Vergleichbares leider immer ab.
Dann hilft nur: Ein Filesystem (ext3 oder besser XFS) anlegen und es
Stück für Stück füllen, z.B.:
yes "string pattern" > /mnt/device-to-kill/file001
usw.
Bei einer SSD reicht ein einfacher dd nicht aus, da noch Daten im
Overprovisioning Bereich sein könnten. Daher sollte man den Secure
Erase der SDD nutzen. Das funktioniert nur kurz nach der Sromzufuhr,
da sollte die Platte noch den Status "not frozen" haben sollte, was
man so testet:
hdparm -I /dev/sdX | grep frozen
Dann setzt man ein Kennwort und löscht mit diesem gleich die
SDD:
hdparm --user-master u --security-set-pass irgendwas /dev/sdX
hdparm --user-master u --security-erase irgendwas /dev/sdX
Alternativ müsste das funktionieren:
blkdiscard --secure /dev/sdX
Hier braucht man nicht weiterlesen, wenn man ein aktuelles Backup
hat!
Aber auch nach einem Plattendefekt sind nicht unbedingt gleich alle
Daten verloren.
Man kann mit einer Hand voll Tools noch einiges retten.
Zuerst erstellt man von der defekten Platte ein Image und arbeitet
dann nur noch mit diesem Image um die defekte Platte nicht noch
weiter zu belasten.
Am besten geeignet ist die GNU Variante von ddrescue.
Vorher noch Wiederholgungsversuche des Betriebssystems bei
Zugriffsfehlern reduzieren:
echo 1 > /sys/block/sdX/device/eh_timeout
echo 1 > /sys/block/sdX/device/timeout
Dann kann die Image-Kopie losgehen:
equo install --ask sys-fs/ddrescue
ddrescue -b 4096 -v -d -O /dev/defekte_platte /mnt/disk.img /mnt/disk.map
(Die 4096 machen nur Sinn, bei Festplatten, wie 4K Sektoren haben!)
Mit dem Tool ddru_findbad kann man sich auflisten lassen, welche
Dateien von den dekten Blöcken betroffen sind:
yay -S ddrutility
ddru_findbad /mnt/disk.img /mnt/disk.map
Zusätzlich kann man den Fortschritt mithilfe des Map-Files per
ddrescueview
sichtbar machen.
Bei ganz hartnäckigen Defekten kann noch das Programm OpenSuperClone
helfen!
Im Idealfall kann man dieses Image einfach per loop mounten:
mount -o loop disk.img /mnt/disk
Wenn das nicht geht, dann kann man (hoffentlich) mit
Autopsy
hineinschauen, also:
equo install --ask app-forensics/autopsy
autopsy rechnername_auf_dem_man_per_Browser_zugreifen_will
Für den Restore von einzelnen Dateien ist das recht nett, aber für
größere Menge, sollte man direkt das
Sleuthkit nutzen.
equo install --ask app-forensics/sleuthkit
# Liste der Dateien mit Inodes erstellen:
fls -F -r -f ntfs -o 0 /tmp/disk.img > /tmp/filelist.txt
icat -f ntfs -o 0 /tmp/disk.img $inode
Statt nfts kann man auch z.B. fat angeben. Eine Liste der
unterstützten Dateisysteme erhält man mit:
fls -f list
Für die Rettung von Fotos bietet sich aber das Programm
PhotoRec
an. Das findet man aber nur in Kombination mit dem Programm
Testdisk, also:
emerge -avt app-admin/testdisk
photorec disk.img
Wenn man z.B. in Fehlermeldungen nur inodes vorliegen hat und
wissen möchte, zu welchem File dieser gehört, dann hilft eines
dieser Kommandos:
find /path/to/mountpoint -inum INODE
debugfs -R 'ncheck INODE' /dev/sdX9
Siehe: S.M.A.R.T.
Bei Verdacht auf einen Defekt sollte man die internen Tests laufen
lassen:
# Kurz:
smartctl -t short /dev/device
# Lang:
smartctl -t long /dev/device
# Ergebis anschauen:
smartctl -l selftest /dev/device
Wenn hier ein defekter Sektor gefunden wird, dann kann man
versuchen, dass er durch einen neuen ersetzt wird.
Aber Achtung: Im folgenden werden Daten überschrieben!
Herausfinden, welcher sector (LBA) defekt ist:
smartctl -l selftest /dev/device
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed: read failure 40% 60011 2722406032
Also: D=2722406032
Dann herausfinden, mit welcher Blocksize die Platte arbeitet:
# fdisk -l /dev/device | grep ^Sector
Sector size (logical/physical): 512 bytes / 4096 bytes
Also: L=512 und P=4096
Falls mit Partitionen gearbeitet wird, dann den Offset vom Beginn
der Platte herausfinden:
# fdisk -l /dev/device
Device Boot Start End Sectors Size Id Type
/dev/sdd1 2048 3907029167 3907027120 1.8T fd Linux raid autodetect
Also: O=2048
Dann kann man den Block für dd so ausrechnen:
B = (D-O)*L/P
Hier also:
echo '(2722406032-2048)*512/4096' | bc -l
Also: B=340300498
Dann kann man den Block mit dd überschreiben (ACHTUNG:
Datenverlust!):
dd if=/dev/zero of=/dev/sdX1 bs=4096 count=1 seek=340300498
Falls man herausfinden will, welche Datei auf dem defekten Block
liegt, dann geht das so:
# debugfs
debugfs: open /dev/sdX1
debugfs: icheck 340300498
Block Inode number
340300498 41032
debugfs: ncheck 41032
Inode Pathname
41032 /path/to/some/file.ext
Falls man in einer Not-Situation keinen "cp"- oder "cat"-Befehl hat
und trotzdem in der laufenden Bash eine Datei kopieren muss, dann
wie in dieser
BashFAQ
beschrieben:
IFS=
while read -d '' -r -n1 x ; do case "$x" in '') printf "\x00";; *) printf "%s" "$x";; esac; done < QUELLDATEI > ZIELDATEI
Damit können auch Binärdateien kopiert werden!
Für die
tiptoi
Stifte dann man neue Audio-Dateien und auch neue
Firmware auch ganz einfach unter Linux installieren, indem man sie
herunterlädt und auf den Stift per USB kopiert, siehe:
Ubuntu - Tiptoi
Tiptoi - Fragen zum händischen Download
Tiptoi - Aktualisierung der Firmware
Perl ist normalerweise bereits intalliert.
Sehr empfehlenswert sind noch die folgenden Module:
Time-modules-100.010301.tar.gz
Data-Dumper-2.08.tar.gz (bereits bei 5.005_02 dabei!)
libnet-1.0901.tar.gz
MD5-1.7.tar.gz
MIME-Base64-2.12.tar.gz
URI-1.18.tar.gz
libwww-perl-5.62.tar.gz
Tk400.202.tar.gz
sha-1.2.tar.gz
MLDBM-2.00.tar.gz
HTML-Tagset-3.03.tar.gz
HTML-Parser-3.25.tar.gz
HTML-TableExtract-1.07.tar.gz
Diese können nach dem Auspacken ganz einfach installiert werden:
perl Makefile.PL
make
make test
make install
Mit diesem fork()-Trick kann man in einem Perl-Programm STDIN
schliessen:if (fork() != 0)
{
# Im Vaterprozess
exit;
}
else
{
# Im Kindprozess
close(STDIN);
}
Man sollte seinen Perl Code immer mal wieder mit
Perl::Critic
überprüfen:
perlcritic mein_programm.pl
sollte keine Meldungen bringen. Das kann man dann steigern mit den
Schaltern: -4, -3, -2.
LaTeX einrichten
teTeX (veraltet)
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.
TeX Live(Nachfolger
von teTeX)
Unter Gentoo ist das
nach dieser Anleitung
ganz einfach:
emerge -avt texlive
Die genaue Versionsnummer eines installierten SO kann man herausfinden,
indem bei Hilfe->Produktionformationen STRG-SDT tippt.
Die Tar-Files in ein Verzeichnis entpacken, z.B.
/usr/StarOffice3.1 und dann muß jeder Benutzer setup
starten.
Man sollte
/usr/StarOffice3.1/linux-x86/bin/svdaemon und
/usr/StarOffice3.1/linux-x86/bin/svportmap nur einmal starten.
Wenn man diese in /sbin/init.d/boot.local starten will,
dann muß man vorher den Path für die Libraries definieren:
export LD_LIBRARY_PATH=/usr/X11R6/lib:/usr/StarOffice3.1/linux-x86/lib
und den Port-Mapper starten: /usr/sbin/portmap -v,
wenn er nicht sowieso schon läuft.
Man kann auch noch weitere Fonts
installieren.
StarOffice 4.0 Service-Pack 3 und Nachfolger (bis 5.1)
-
Wenn man von einem älterem SO updatet, dann kann man die beiden
Dämonen svdaemon und svportmap wieder entfernen.
-
SO4 SP3 funktioniert auch mit einer LibC 5.4.7!
- Das Tar-File in ein temporäres Verzeichnis entpacken und als
Root "./setup /net" starten. Als User nur noch
"setup" starten.
-
Farbig drucken ermöglichen (für 5.1 nicht mehr nötig!):
In /opt/Office40/xp3/ppds/GENERIC.PS folgende Änderungen
vornehmen:
*LanguageLevel: "2"
*ColorDevice: True
*DefaultColorSpace: RGB
-
Fonts hinzufügen (Type 1) (bis SO 5.0):
-
Fonts für X11 und Ghostscript
installieren
-
Vorweg muß man erwähnen, daß SO bis Version 5.0 nur ca. 300
Fonts verkraftet. Entscheidend ist dabei die Anzahl von
Dateien oder Links im Verzeichnis
/opt/Office/xp3/pssoftfonts. Seit 5.0 kann man
beliebig viele Fonts installieren.
-
StarOffice benötigt zu jedem Font eine afm-Datei.
Die fehlenden afm-Dateien ("Adobe Fontmetrik") kann man mit
einem der Ghostscript-Tools erzeugen. Es heißt printafm.ps
und wird mit GhostScript z.B. so benutzt:
gs -q -dNODISPLAY -- printafm.ps capri.pfb >
capri.afm
Am einfachsten ist dazu
pfb2afm zu verwenden.
Da StarOffice mit diesen afm-Files Probleme hat muß man sie
noch durch
afm.pl
modifizieren.
Wenn man die AFMs gleich mit
afmmaker.ps erstellt, so
kann man auf afm.pl verzichten. Dazu trägt man den Fontnamen
hinter /fontname in afmmaker.ps ein und startet damit
Ghostscript:
gs -sNODISPLAY -q -sBATCH afmmaker.ps -c quit > font.afm
Diese afm-Files linkt man dann einzeln in das Verzeichnis
/opt/Office40/xp3/fontmetrics/afm/:
ln -s /meine/neuen/fonts/capri.afm /opt/Office40/xp3/fontmetrics/afm/capri.afm
- Die pfb-Files linkt man einzeln in das Verzeichnis
/opt/Office40/xp3/pssoftfonts/:
ln -s /meine/neuen/fonts/capri.pfb /opt/Office40/xp3/pssoftfonts/capri.pfb
- Die Datei /opt/Office40/xp3/psstd.fonts ist noch zu
ergänzen (ähnlich fonts.dir, man beachte die "%d" anstelle
der "0"):
starmath, -star division-starmath-medium-r-normal--%d-%d-%d-%d-p-0-iso8859-1
starbats, -star division-starbats-medium-r-normal--%d-%d-%d-%d-p-0-iso8859-1
Diese Einträge kann man sich so aus fonts.dir erzeugen:
cd /meine/neuen/fonts/
cat fonts.dir | perl -pe 's/\.pfb/,/; s/0-0-0-0-p-0/\%d-\%d-\%d-\%d-p-0/;'
-
Zusammenfassung:
cd /meine/neuen/fonts/
pfb2afm *.pfb
for i in *.afm; do afm.pl $i; /bin/mv $i.new $i; done
cd /opt/Office40/xp3/pssoftfonts
for i in `find /meine/neuen/fonts/ -name "*.pfb"`; do ln -s $i; done
cd /opt/Office40/xp3/fontmetrics/afm
for i in `find /meine/neuen/fonts/ -name "*.afm"`; do ln -s $i; done
cd /meine/neuen/fonts/
cat fonts.dir | perl -pe 's/\.pfb/,/; s/0-0-0-0-p-0/\%d-\%d-\%d-\%d-p-0/;'
-
Fonts hinzufügen (Type 1) (ab 5.1):
-
Fonts für X11 und Ghostscript
installieren
-
Die Font-Installation geht fast unproblematisch nach
dieser Anleitung:
-
As root, run psetup (or spadmin if you have Star Office 5.1)
-
Press the ``add fonts'' button.
-
The easiest thing to do after this is press the
``initialize font paths'' button. This puts a list of
all fonts in your X font path in the list box.
-
Choose the directory containing the font you wish to
install ( it should be in the box ), and then press
``OK''.
-
Click the ``convert all font metrics button''.
-
Leider werden dabei leicht defekte Font-Metriken erzeugt,
Deshalb sollte man die *.afm-Files wie oben beschrieben (altes SO)
erzeugen und nach
/opt/office52/share/xp3/fontmetrics/afm linken.
-
Fonts hinzufügen (TrueType):
-
Fonts für X11 und Ghostscript installieren
(Dabei werden auch gleich brauchbare afm-Files erstellt.)
-
Wenn man die so installierten Fonts in StarOffice hernehmen will,
dann muß man die Einträge in
/opt/Office/xp3/psstd.fonts von Hand erstellen, die
so aussehen:
font, -ttf-font-normal-r-normal-tt-%d-%d-%d-%d-p-0-iso8859-1
Allerdings wird ein Minus-Zeichen beim Aussdruck zu einem
Kästchen, was wohl an der unterschiedlichen Codierung der
Fonts liegt.
-
Interessant ist aber die Nutzung des TrueTypes Times News Roman,
weil man damit auf Systemen, die keinen skalierbaren Times-Font
haben trotzdem eine perfekte Bildschirmdarstellung erhält. Dazu
installiert man wie eben beschrieben den Font und trägt ihn aber
nicht in /opt/Office/xp3/psstd.fonts ein.
Dann wird der Font nur zur Bildschirmdarstellung verwendet.
-
Neue Drucker kann man ganz einfach in
/opt/Office40/xp3/Xpdefaults durch folgende Ergänzungen
eintragen:
[devices]
Canon BJC-620 (normal)=GENERIC PostScript,default_queue
Canon BJC-620 (low)=GENERIC PostScript,low
Canon BJC-620 (high)=GENERIC PostScript,high
Ghostview (Preview)=GENERIC PostScript,preview
[ports]
low=lpr -Plow
high=lpr -Phigh
preview=cat | ghostview -geometry +0+0 -
Bei 5.1 muß es SGENPRT statt GENERIC heißen.
Natürlich müssen die benannten Drucker "low" und "high" in
/etc/printcap
eingetragen sein. Siehe dazu auch den Abschnitt über
Drucker.
-
Eine Fontliste kann man leicht mit
fontliste erstellen.
Ab OpenOffice bzw. LibreOffice Version 4 gibt es keine Möglichkeit
mehr StarOffice-Dokumente (sdw/sdc) zu laden.
Da hilft nur eine temporäre Installation einer 3er-Version und die
Batch-Konvertierung:
emerge -avt app-office/unoconv
layman -a wish
emerge --unmerge app-office/libreoffice-l10n
ACCEPT_KEYWORDS=~x86 emerge -avt =app-office/libreoffice-bin-3.3.1
find . -name "*.sdc" | xargs -n 1 unoconv -f ods
find . -name "*.sdw" | xargs -n 1 unoconv -f odt
layman -d wish
emerge --unmerge app-office/libreoffice-bin app-office/unoconv
emerge -avt app-office/libreoffice-bin
- 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).
Alternativ kann man auch
fdupes
verwenden.
Beste Lösung: Das Windows-Programm mit WINE
starten.
Echte UNIX-Lösung (mit Einschränkungen beim Suchen):
- Vorher httpd zum Laufen bringen
(siehe HTTPD)
- ctsuch1_8.tar auspacken, CD im Laufwerk lassen und
./ctinstall starten
Antworten:
Pfadname des cgi-bin-Verzeichnisses des WWW-Servers:
/httpd/cgi-bin
Pfadname des Verzeichnisses für die c`t-ROM-WWW-Seiten:
/httpd/htdocs/ctrom
Auf alle Fragen mit "Ja" antworten.
XEmacs einrichten
(Version 20.4) und Tipps
Installation:
-
Auspacken von xemacs-20.4.tar.gz.
-
Normales Vorgehen:
./configure
make
cd src
rm xemacs
strip temacs
cd ..
make
make dist
make install
-
Bei mir war es etwas anders:
./configure --with-dialogs=athena -with-jpeg=no
--with-session=yes
make prefix=/opt/xemacs exec_prefix=/opt/xemacs
cd src
rm xemacs
strip temacs
cd ..
make prefix=/opt/xemacs exec_prefix=/opt/xemacs
make dist prefix=/opt/xemacs exec_prefix=/opt/xemacs
make install prefix=/opt/xemacs exec_prefix=/opt/xemacs
Meine Änderungen an den Einstellungen finden sich im
~/.emacs-File. Sehr hilfreich
ist auch die
XEmacs-FAQ.
Umfangreiche Konfiguration und Dokumentation gibt es auf der
XEmacs & Gnus Page.
Folgendes habe ich eingestellt bzw. aktiviert:
- Die DEL-, Backspace-, HOME- und END-Tasten funktionieren wie
gewohnt. Für HPUX 10.20 ist dazu folgende xmodmap nötig:
remove Mod1 = Mode_switch
keycode 0x7D = End
- Control-Tab schaltet zum nächsten Buffer
- F2 speichert den aktuellen Buffer
- F8 speichert den aktuellen Buffer und schließt ihn. (Das
funktioniert leider nicht mehr mit dem neuen GNU-Server des
XEmacs 20.2)
- F9 startet einen LaTeX-Lauf mit dem aktuellen Buffer oder
startet make, wenn XEmacs im C-/C++-Mode ist
- F10 staret XDVI mit dem *.dvi-File des aktuellen Buffers
- Es wird zusätzlich die aktuelle Zeilennummer und Spaltennummer
angezeigt
- F11 und Shift-F11 springt im C-/C++-Mode zum nächsten/vorigen
Fehler
- Auto-Save in ein separates Verzeichnis eingeschaltet
- .h-Files werden als C++ erkannt
- .Z- oder .gz-Files kann man direkt bearbeiten
(Wird automatisch entpackt und wieder eingepackt)
- Fonts für den Bildschirm werden dauerhaft eingestellt
(Das wird bei "Save-Options" ja vergessen)
- AucTeX wird aktiviert
- Der Pretty-Print druckt nur noch Filename und Seitenzahl
- Die zuletzt geöffneten Files werden in ein Menü gelegt
- Am Textende werden keine Leerzeilen hinzugefügt, wenn man mit
dem Cursor weiter nach unten geht
- XEmacs merkt sich die Cursorposition in jedem File und man
befindet sich bei nächsten Laden wieder an der gleichen Stelle
- Es wird verhindert, daß XEmacs seine Region verliert, wenn man
beim Markieren mit dem Cursor an das Ende des Buffers gelangt
- C-z macht dasselbe, wie C-y (Für englische Tastaturen)
- Gnuserver wird gestartet. Dann kann man durch
"gnuclient textfile" einen Text vom Prompt weg im XEmacs
öffnen oder mit einem Mail-Reader wie etwa elm verbinden.
- Der Maus-Cursor weicht dem Text-Cursor aus. (Das ist
auskommentiert, weil es inzwischen durch "unclutter" besser
gelöst ist!)
- Text wird bei Cut&Paste am Textcursor eingefügt.
- Wenn man gnuclient im elm als Editor hernimmt, dann werden
elm's snd.*-Files im Text-Mode mit Auto-Fill geöffnet. Den
aktuellen Paragraph kann man sofort mit M-q neu
formatieren.
- Den XEmacs Newsreader
Gnus
habe ich noch ein bischen konfiguriert:
~/.gnus. (Siehe dazu auch
meine
XEmacs-Add-On-Bookmarks und die
XEmacs & Gnus Page und natürlich
comp.emacs.gnus.
- Mit "%" wird zur passenden Klammer gesprungen, wenn Cursor auf
einer Klammer steht.
Weitere Tipps:
Ein universelles und leistungsgähiges Programm zum rekursiven
WWW-Download ist WGet (wget-1.4.4).
Meine Einstellungen finden sich in
/etc/wgetrc.
Man wechselt dann in das Zielverzeichnis (z.B.
/httpd/htdocs/mirror) und ruft wget z.B. so auf:
wget --level=2 http://www.sl.de
Dabei kann man die Rekursionstiefe (hier 2) angeben und die gewünschte
Start-URL.
Erst mit einem WWW-Cache macht WGet (zumindest
in dieser Version 1.4.4) erst Sinn. Denn wenn man WGet wie hier
beschrieben betreibt, dann wird ja jede Kopie einer WWW-Seite lokal
geändert (Pfade anpassen). Das hat zur Folge, daß beim nächsten
WGet-Update-Lauf diese Seiten wieder geholt werden. Und so werden
sie von lokalen WWW-Cache geholt.
Ich habe folgende andere Programme bereits probiert,
und sie haben sich für mich als unbrauchbar herausgestellt:
- getwww-1.4 hat zu wenig Konfigurationsmöglichkeiten und außerdem
nur eine koreanische Anleitung, funktioneiert aber prinzipiell.
- webcopy-0.98b7 kann meinen lokalen WWW-Server nicht ansprechen
und ist damit nur online testbar und konfigurierbar, sonst aber
in Ordnung.
- Noch nicht getestet, klingt aber sehr gut: Snag-o-rama
(snag-1.4)
Nur pavuk ist noch
wesentlich leistungsfähiger als wget. Damit sind z.B. auch Cookies
möglich:
pavuk -fnrules F "*" "%n" -noRobots -progress -cookie_send
-cookie_file ~/.netscape/cookies http:/www.....
Das modernste ist aber curl.
Aber es geht auch ganz ohne derartige Tools.
Es reicht zur Not auch telnet (für HTTP) oder OpenSSL (für HTTPS),
z.B.:
echo -ne "GET /my-page.html HTTP/1.1\nHost: www.server.de\n\n" | openssl
s_client -quiet -crlf -connect www.server.de:443 >
/tmp/my-page.html
-
Wave nach MP3 konvertiert man am besten so:
lame
--preset cd in.wav out.mp3
oder:
mp3enc
-v -br 192000 -qual 9 -no-is -if in.wav -of out.mp3
-
Der beste MOD-Player ist
Mikmod.
-
Der beste MIDI-Player ist
timidity, weil er
GUS-Patches
(eawpats)
verwenden kann und damit aus einer billigst-Soundkarte die
tollsten Töne holt. (Den OPL3-Sound kann man ja nicht aushalten...)
-
Der beste MP3-Player für X11 war lange Zeit xmms. Ein würdiger Nachfolger
ist audacious. Für
die Konsole ist mpg123 der beste.
-
Ein riesiges Wave-File (von einer LP- oder Kassetten-Aufnahme)
kann man vollautomatisch mit
Gramofile in
einzelne Lieder aufteilen. Dazu sind diese Einstellungen
optimal:
[x]
[ ]
4410
100
1
20
50
3
6
Noch viel einfacher geht es mit
wavsilence:
wavsilence -v -s -b 64 -n '%2' -c 0 -i aufnahme.wav
Man kann es aber auch mit grafischer Oberfläche mit
wavbreaker machen.
-
Zur Wave-Bearbeitung eignen sich
KWave,
DAP und
xwave.
Der Beste ist meines Erachtens aber
audacity.
Wenn man nur zwei WAV-FIles aneinanderhängen will, dann ganz
einfach mit
pwavecat.
Alternativer mächtiger Editor:
Ardour.
-
Wenn man den Sound von einem Rechner (B) auf den anderen Rechner (A)
umleiten will, dann startet man auf A den ESound-Dämon:
esd -tcp -public
Und auf B stellt man in seinem Sound-Programm den Output auf ESD
um. Wenn das nicht unterstützt wird, dann hilft noch der
edddsp:
esddsp --server=A mein_programm
-
Mittels Streamripper
kann man ganz einfach Internet-Radio aufnehmen und die Lieder
als einzelne MP3s speichern lassen:
streamripper http://62.27.26.45/sunshinelive/livestream.mp3 -d /xtemp/streamrip/ --xs_offset=-7500 --xs_padding=2500:2500 -M 10000
oder einfach nur ein paar Minuten aufzeichnen:
streamripper http://server:3000/ES/200 -d /xtemp/streamrip/ -s -D %d -a -A -l 360
-
Shortwave - internet radio player.
-
Eine AMR Audio Datei kann man so in WAV wandeln:
ffmpeg -i test.amr -ar 44100 test.wav
-
Installieren (i) mit Balken (h) und verbose (v):
rpm -ihv file.rpm
Mit --nodeps kann man rpm dazu zwingen, die
Abhängigkeiten zu ignorieren.
-
Paket deinstallieren:
rpm -e paketname
- Liste aller installierten Pakete:
rpm -qa
oder nur die Namen ohne Versionen ausgeben:
rpm -qa --queryformat "%{NAME}\n"
- Weitere Information über ein Paket (i=Info, l=Fileliste):
rpm -qil paketname
-
Inhalt eines noch nicht installierten Pakets auflisten:
rpm -qlp file.rpm
-
Suchen, welches RPM-Paket ein installiertes File enthält:
rpm -qf filename
-
Aktualisieren kann man ein Paket so (Update):
rpm -U paketname
Wenn man mehr Pakete vorliegen hat, als aktuell installiert
sind, und man möchte nur die aktualisieren, die bereits
installiert sind, dann geht das durch Auffrischen:
rpm -F paketname
-
Die *.rpm-Quellen kann man auch als ftp- oder http-URL angeben:
ftp://user:password@hostname:port/path/to/package.rpm
-
Die Integrität eines installieten Pakets läßt sich so
prüfen:
rpm -V paketname
-
Schließlich kann man auch aus RPM-Quell-Paketen Software
compilieren und installieren:
rpm -ihv --rebuild paket.src.rpm
RPM neu einrichten (auf alten nicht-RPM-basierten Systemen):
rpm-xx.xx.xx.i386.tar.gz installieren und
mkdir -p /var/lib/rpm
rpm --initdb
Man kann auch mit rpm2cpio < filename.rpm | cpio -di das RPM
in ein CPIO-Archiv verwandeln und auspacken.
Wenn man den Ausdruck von Notenblättern durch Rosegarden (2.0.1)
vergrößern will, dann geht das nur, indem man im TeX-File die
Seitengröße reduziert, z.B. \hsize=3.5in und dann beim
Ausdruck mit dvips vergrößert: dvips -x 2000 file.ps
Problem: Man ist im Urlaub und möchte aber auf alle Mails automatisch
antworten, daß man die Mail erhalten hat, aber erst am Tag XX lesen
kann. Die Lösung ist procmail. Dazu braucht man zwei Files:
-
~/.forward:
|/usr/bin/procmail
-
~/.procmailrc:
# Diese .promailrc realisiert einen "vacation"
# Man muß nur noch in ~/.forward das eintragen:
# "|/usr/bin/procmail" (Ohne Anführungszeichen!)
SHELL=/bin/sh # for other shells, this might need adjustment
LOOP="X-Loop: loescher@gmx.de"
:0 Whc: vacation.lock
# Perform a quick check to see if the mail was addressed to us
* $^To:.*\<$\LOGNAME\>
# Don't reply to daemons and mailinglists
* !^FROM_DAEMON
# Mail loops are evil
* !^${LOOP}
| formail -rD 8192 vacation.cache
:0 ehc # if the name was not in the cache
| (formail -rA"Precedence: junk" \
-A"${LOOP}" ; \
echo "Automatically generated answer follows:"; \
echo ""; \
echo "I received your mail,"; \
echo "but I won't be back until 31.12."; \
echo ""; \
echo "Stephan."; \
echo ""; \
echo "-- "; \
echo "loescher@gmx.de"; \
echo "http://www.loescher-online.de/"; \
) | $SENDMAIL -oi -t
Problem: Man hat zwei Accounts auf denen man Mail liest und kann sich
aber auf dem jeweils anderen Account nicht von dem anderen Account
aus einloggen.
Man kommt auf die naheliegende Idee zwei Forwards einzurichten, aber
das erzeugt einen Mail-Loop.
Die Lösung ist procmail. Dazu braucht man zwei Files auf beiden Rechnern:
Die Weiterleitung kann natürlich auch auf einen Drucker erfolgen:
# Diese .procmailrc druckt eingehende Mails aus
SHELL=/bin/sh
:0 c
| a2ps -nP -1 -p -ns -nL | lpr -Pepson
Eventuelle Konvertierungen und Umformatierungen sind dem Leser als
Übung überlassen.
Mail in ein Programm füttern oder ein Programm starten:
:0w
*^(cc|to|Resent-From|X-Mailing-List):.*debian-user@lists.debian.org
| /usr/local/bin/mail2news local.debian.user
oder:
:0:
* (^Subject: backup)
| backup
Email: Mailen von der Kommandozeile
Mit email kann man
z.B. Bilder von der Kommandozeile einfach wegschicken:
echo "Hier sind die Bilder..." | email -s "Bilder" -a 01.jpg,02.jpg,03.jpg ziel@adresse.de
Man muss nur diese ~/.email.conf anlegen:
SMTP_SERVER = '127.0.0.1'
SMTP_PORT = '25'
MY_NAME = 'Stephan Loescher'
MY_EMAIL = 'meine_absender_adresse@provider.de'
# REPLY_TO = ''
Mit cdda2wav kann man CDs digital auslesen. Wenn die Fehlermeldung
kommt:
no match: increase overlap (3) or decrease SYNC_SIZE (320).
no match: at position 9468565 from 9469740
dann sollte man in "interface.c" den Wert von "overlap" auf 4
erhöhen.
Ein TCP-Wrapper hängt zwischen dem inetd und den Dämonen, die Dienste
anbieten. Es gibt dazu eine
kurze Beschreibung des Verfahrens oder den
Original-Artikel
Bei SuSe ist bereits der TCP-Wrapper (tcpd) vorinstalliert.
Falls nicht, dann geht es so:
-
tcp_wrappers_7.6.tgz
auspacken und kompilieren
- cp tcpd /usr/local/bin
- cp tcpd.8 /usr/local/man/man8
- chmod 644 /usr/local/man/man8
- chown root.system /usr/local/bin/tcpd
- chmod 711 /usr/local/bin/tcpd
- In /etc/inetd.conf alle Zeilen so ändern:
Alt: ftp stream tcp nowait root /usr/sbin/ftpd
ftpd
Neu: ftp stream tcp nowait root /usr/local/bin/tcpd /usr/sbin/ftpd ftpd
- inetd neu starten
Ab nun werden alle Verbindungen in syslog(8) mitgeschrieben.
SSH ist ein Ersatz für die r* Berkeley-Dienste (rcp, rlogin, rsh)
der wohl den besten Kompromiß zwischen Sicherheit und Praktikabilität
liefert. Zusätzlich zur Verschlüsselung aller Daten kann man auch
noch eine Kompression aktivieren. Das wohl interessanteste Feature
ist das X11-Forwarding. Damit kann man X11-Programme remote über
mehrere Rechner hindurch verwenden, ohne das DISPLAY umsetzen zu
müssen oder den unsicheren xhost oder xauth zu verwenden.
Informationen:
Benutzer-Installation (wenn bereits im System vorhanden):
-
Authentisierung kann entweder über einen RSA-Schlüssel oder
über das normale Benutzer-Paßwort erfolgen. Wenn keinen
Schlüssel, wie nachfolgend berschrieben erzeugt, dann wird nur
das Paßwort verwendet.
-
Aufruf von ssh-keygen Auf Recher A.
Eine gute lange Passphrase (Paßwort) angeben. Damit wird der
private Schlüssel geschützt.
Man kann auch eine leere Passphrase angeben, was den Vorteil
hat, daß beim Login kein Passwort benötigt.
Das Programm erzeugt ein asymetrisches Schlüsselpaar.
Es werden unter $HOME/.ssh/ die Dateien:
identity = privater Schlüssel (nicht verbreiten!) und
identity.pub = öffentlicher Schlüssel erzeugt.
-
Kopieren des öffentlichen Schlüssels:
$HOME/.ssh/identity.pub enthält den Public Key für die
Authentisierung. Den Inhalt diese Files sollte man an das File
$HOME/.ssh/authorized_keys auf allen Maschinen anhängen,
auf die man sich einloggen will.
Wenn alle Maschinen ein NFS-Home verwenden, dann ist das denkbar
einfach:
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys
Ansonsten kann das mit einem Editor geschehen.
Allen Keys, die in $HOME/.ssh/authorized_keys stehen ist
der Zugriff auf diesen Account erlaubt.
-
Für verschiedene Accounts sollte man verschiedene Keys verwenden.
-
Dann kann man sich mit ssh rechner oder
slogin rechner in den Rechner einloggen. Es wird nach
der Passphrase gefragt, außer man hat die Passphrase bei
ssh-keygen leer gelassen.
-
Wenn man sich oft in ein System einloggt, dann ist die
Paßwortabfrage lästig. Abhilfe schafft der ssh-agent, der sich
die Paßwörter merkt. Aufruf ist:
ssh-agent $SHELL
oder
ssh-agent startx &
Dann kann man mit ssh-add einen Key hinzufügen und muß
diesen dann solange nicht mehr eingeben, bis man
ssh-agent beendet.
-
ssh kann man als erweiterten Ersatz für rsh verwenden:
ssh rechner who
ssh -n rechner xterm &
(Das letzte Beispiel funktioniert so ohne weiteres mit rsh nicht!)
-
scp ersetzt rcp.
-
Die Paßwortabfrage kann man verhindern, indem man in
~/.shosts die beteiligten Rechner analog zu
~/.rhosts einträgt. Die Datei ~/.rhosts sollte
man dann zur Sicherheit löschen.
-
Mail kann man mittels POP3 und fetchmail verschlüssselt (und
komprimiert!) übertragen, indem man folgende
~/.fetchmailrc verwendet:
poll mailrechner via localhost port 1234 with protocol pop3 fetchall limit 12000 preconnect "ssh -C -o 'CompressionLevel 9' -f -L 1234:mailrechner:110 mailrechner sleep 20 </dev/null >/dev/null";
System-Installation von sshd:
-
Als Root den Host-Schlüssel erzeugen:
ssh-keygen -f /etc/ssh_host_key
Bei der Frage nach der Passphrase nur Enter drücken. Wenn eine
Passphrase angegeben wird, dann startet sshd nicht!
-
In /etc/rc.config START_SSHD=yes eintragen und
SuSEconfig starten.
-
Bei der SSH-Installation der SuSE 6.0 habe ich in
/etc/sshd_config noch dieses geändert:
IgnoreRhosts no
RhostsAuthentication yes
RhostsRSAAuthentication yes
PasswordAuthentication yes
Tipps zur Benutzung:
-
Wenn irgendetwas nicht klappt, dann sollte man es mit der Option
"-v" probieren.
-
Mit der Option "-C" werden Daten komprimiert übertragen.
-
Wenn so eine Fehlermeldung mit -v kommt:
hphalle3: Trying rhosts or /etc/hosts.equiv with RSA host authentication.
hphalle3: Remote: Accepted by .rhosts.
hphalle3: Remote: Your host key cannot be verified: unknown or invalid host key.
hphalle3: Remote: The host name used to check the key was 'hphalle3.informatik.tu-muenchen.de'.
hphalle3: Remote: Try logging back from the server machine with the canonical host name using ssh, and then try again.
hphalle3: Server refused our rhosts authentication or host key.
dann einfach Paßwort eingeben und sich zurückloggen:
ssh -v hphalle3.informatik.tu-muenchen.de
und solange "im Kreis" loggen, bis keine Paßwortfrage mehr kommt.
-
Man kann auch über einen Rechner zu einem anderen tunneln.
Mit folgendem Aufruf entsteht ein Tunnel vom lokalen Port 1300
zum Port 8009 des Rechners wwwcache, wobei aber die
SSH-Verbindung zu dem Rechner hp3 geht. Man braucht dazu auf
wwwcache keinen Login besitzen!
ssh -C -L 1300:wwwcache:8009 hp3 sleep 1000 </dev/null
>/dev/null
Wenn man jetzt den lokalen Squid oder
WWWOffle noch so konfiguriert:
cache_host localhost parent 1300 7
und in /etc/inetd.conf den UDP-Echo-Dienst
freischaltet:
echo dgram udp wait root internal
dann erhaelt man eine komprimierte Verbindung zu wwwcache und kann
lokal wie gewohnt über Squid darauf zugreifen.
Der Trick mit dem UDP-Echo ist notwendig, weil Squid per ICP einen
anderen Squid kontaktieren will. Jedoch wird von der SSH nur TCP
getunnelt und ICP ist aber ein UDP-basiertes Protokoll.
Für WWWOffle ist der Umstand mit dem
UDP-Echo nicht nötig.
-
X Forwarding over Multiple SSH Hops, kurz:
TERMINAL 1:
ssh server01 -L2200:server02:22
TERMINAL 2:
ssh localhost -XYC -p2200
Zum Faxen braucht man ein PostScript-File.
Einen ASCII-Text kann man nach PS wandeln mit:
a2ps -nP -1 -p -F15 -ns -nL ascii.txt > fax.ps
bzw:
a2ps --no-header --portrait -1 --output=- ascii.txt > fax.ps
oder:
cat fax.test | pbmtext | pbm2g3 > fax.g3
PS nach FAX:
gs -q -dSAFER -dNOPAUSE -sDEVICE=faxg3 -sOutputFile=fax.%d.g3
input.ps -c quit
Es geht auch komfortabler mit ps2fax.
Abgesendet werden die G3-Files dann mit:
faxspool NUMMER FILES
wenn man das sendfax aus dem
mgetty-Paket verwendet.
Die Fax-Queue kann man mit faxq anzeigen lassen.
Root sollte irgendwann die Queue mit faxrunq absenden.
Die Umkehrung von G3 in ein darstellbares Bild geht mit:
g32pbm fax.1.g3 > fax.pbm
Ein Fax als (evtl. mehrseitiges) TIFF kann man so in Postsrcipt
umwandeln:
tiff2ps -a FAX.ifx > FAX.ps
DCX ist ein Fax-Format ähnlich PCX und kann z.B. von xnview
angezeigt werden.
Wenn man sich Faxe als PDF per Mail zuschicken lassen will, dann
sollte man sich dieses Skript bei mgetty einbauen:
Tipp: Eingehende Faxe als PDF per Mail
Einfach nur nach PDF konvertieren geht mit diesem Skript:
fax2pdf.
Installieren mit emerge -avt mgetty.
Dann trägt man in /etc/mgetty+sendfax/faxheader
seinen Faxkopf ein, also Name und Telefonnummer.
In
/etc/mgetty+sendfax/mgetty.config habe ich folgendes
geändert:
fax-id 49 8142 1234567
speed 115200
# Speziell für Creatix LC144VF:
# init-chat "" \d\d\d\d\d\d+++\d\d\dATE1Q0V1 OK ATS0=0&D3&K3 OK
# switchbd 19200
# Speziell für US Robotics Message Modem:
init-chat "" ATZ OK ATE1Q0V1 OK ATS0=0&D3 OK
fax-owner root
fax-group uucp
fax-mode 0644
notify root
und in /etc/mgetty+sendfax/sendfax.config habe ich
folgendes geändert:
fax-devices ttyS0
fax-id 49 8142 1234567
dial-prefix ATDT
# Speziell für Creatix LC144VF:
# modem-handshake AT&K3
Um einzelnen Benutzern das Faxen zu erlauben, trägt man diese entweder
in /etc/mgetty+sendfax/fax.allow ein oder löscht
diese Datei und legt eine leere Datei
/etc/mgetty+sendfax/fax.deny an. Dann können alle
Faxen.
Für Mails bei erfolgreichem oder fehlgeschlagenem Fax sollte man
noch das in faxrunq.config eintragen:
success-send-mail y
failure-send-mail y
In /etc/mgetty+sendfax/login.config habe ich
folgendes geändert, um PPP ohne vorheriges Login zu ermöglichen:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap debug remotename auto-ppp-dialin
Zu letzterem braucht man noch diesen Eintrag in
/etc/ppp/pap-secrets:
auto-ppp-dialin * geheim *
und der anrufende Client braucht eine eigene IP-Adresse. Man kann auch
so ein feste IP-Adresse vergeben:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth :10.3.3.99 -chap +pap debug remotename auto-ppp-dialin
Der Client muß dann beim pppd die Option "user auto-ppp-dialin"
verwenden und diesen Eintrag in seiner
/etc/ppp/pap-secrets haben:
auto-ppp-dialin * geheim
Zu guter letzt muß noch ein Eintrag in die /etc/inittab, um
den mgetty zu starten:
# Für Modem (geht beim zweiten Klingeln an die Leitung)
mo:12345:respawn:/usr/sbin/mgetty -n 2 -s 115200 ttyS0
Und dann noch:
init q
Vgetty ist im
mgetty
-Paket dabei. Zum Kompilieren wechselt man ins Unterverzeichnis
voice und:
make
make install
cp voice.conf-dist /etc/mgetty+sendfax/voice.conf
Wichtig: VGetty liest auch die Datei
/etc/mgetty+sendfax/mgetty.config ein und benutzt
davon zum Beispiel die Option init-chat.
In /etc/mgetty+sendfax/voice.conf habe ich dann
folgendes geändert:
port_speed 115200
rings 2
dtmf_program /bin/dtmf.sh
voice_devices modem
VGetty wird einfach anstelle von megtty in initab eingetragen:
mo:123:respawn:/sbin/vgetty modem
Dann kann man eine Ansage einrichten:
voctopvf file.voc | pvftormd Rockwell 4 > /var/spool/voice/message/standard.rmd
oder
voctopvf file.voc | pvftormd US_Robotics 1 > /var/spool/voice/message/standard.rmd
Wiedergeben kann man eingegangene Anrufe in
/var/spool/voice/incoming über das Modem:
vm play -s filename.rmd
oder über die Soundkarte:
rmdtopvf filename.rmd | pvfspeed -s 8000 | pvftobasic > /dev/audio
bzw. über ALSA:
rmdtopvf filename.rmd | pvfspeed -s 8000 | pvftowav | aplay -
VGetty kann auch DTMF erkennen und danach Aktionen auslösen.
Kurzanleitung (sehr kurz) zu CVS. Ausführliche Beschreibung: XEmacs
C-h i g cvs.
Das CVS-Repository erstellt man mit:
cvs -d /usr/src/cvsroot init
Dann setzt man die Environmentvariable:
export CVSROOT=/usr/src/cvsroot
Dann ein Projekt-Verzeichnis anlegen mit Files und
evtl. Unterverzeichnissen darin:
md projekt
cvs import -m "Anfang des Projekts" projekt loescher start
Dann kann man z.B. in ein anderes Verzeichnis wechseln (/tmp) und
cvs checkout projekt
cd projekt
Dann kann man drin Files verändern und wieder einchecken:
cvs commit file.pl
Die lokale Working-Copy kann man so updaten:
cvs update
bzw. falls man ein Update auf eine bestimmte Version gemacht hat
mit
cvs update -D 2010-10-11
dann ist die Working-Copy "sticky" und man muss so updaten:
cvs update -A
Server einrichten
emerge -avt subversion
mkdir -p /mnt/data/svn/sl
svnadmin create /mnt/data/svn/sl
chown -R apache:root /mnt/data/svn/sl
Am einfachsten ist es den svnserve-Dämon laufen zu
lassen.
Erst einmal eine Gruppe und einen Benutzer dafür anlegen:
groupadd -g 777 svn
useradd svn -m -u 777 -g svn -c 'account for svnserve'
Dann erstellt man eine /etc/conf.d/svnserve:
SVNSERVE_OPTS="--root=/mnt/data/svn"
SVNSERVE_USER="svn"
SVNSERVE_GROUP="svn"
Dann trägt man in /mnt/data/svn/sl/conf/svnserve.conf das
ein:
[general]
password-db = passwd
realm = SL-Repository
Dann müssen noch die User und Kennwörter in
/mnt/data/svn/sl/conf/passwd eingetragen werden:
[users]
harry = geheim
Dann den Dämon starten:
/etc/init.d/svnserve start
rc-update add svnserve default
Dann kann man schon arbeiten:
mkdir test
cd test
svn co svn://server/sl .
mkdir trunk branches tags
svn add trunk branches tags
svn ci -m 'erster Check-In'
Client einrichten (Gentoo)
echo "dev-util/subversion -berkdb -dso -webdav-neon" >>
/etc/portage/package.use
emerge -avt subversion
Tipps zum Umgang
Im aktuellen Verzeichnis kann man Dateien von svn auch ignorieren
lassen:
svn propedit svn:ignore .
Wenn man ein Subversion von einem Server auf einen anderen umzieht,
dann kann man das den ausgecheckten Working Repositories so
mitteilen:
svn relocate ALTER_URI NEUER_URI
Praktischer Fall: Wenn man von unterwegs per SSH-Port-Forward seinen
SVN Server auf localhost weiterleitet, dann z.B.:
svn relocate svn://server/bla/trunk/data svn://localhost/bla/trunk/data
Repository herunterladen/"klonen":
git clone git://projects.vdr-developer.org/vdr-plugin-extrecmenu.git
Wenn man einen bestimmten Stand in seinem Repository "festzurren"
will, dann sucht man im git-Log nach dem gewünschten commit-Hash und
setzt das Repository dann per checkout auf diesen Stand:
git log --since=2010-06-05 --until=2010-06-06 | less
# bzw.
git log | less
git checkout 66c39bab76c1b4a30a80e991d07d823e2905369b
Zurück zum aktuellsten Stand ("HEAD") kommt man mit pull:
git pull git://projects.vdr-developer.org/vdr-plugin-extrecmenu.git
Weitere Details zu git sind in c't 5/2014 S. 176 beschrieben.
LaTeX2HTML (Version 96.1 (Feb 5, 1996)
LaTeX2HTML konvertiert LaTeX-Dokumente nach
HTML. Ich verwende diese alte Version, weil die aktuelle bei mir
nicht funktioniert. Eine sehr gute Alternative ist
tth.
Installation:
-
Alle Dateien nach /usr/local/lib/latex2html/ kopieren.
-
cd /usr/local/lib/latex2html/
-
./install-test
-
export TEXINPUTS=$TEXINPUTS:/usr/local/lib/latex2html/texinputs
Aufruf:
latex2html -address '<A
href="http://www.loescher-online.de/">Stephan
Löscher</A>, 16 Jun 1998' file.tex
cd file
perl -pi -e 's(http://cbl.leeds.ac.uk/nikos/figs/)()g;' *.html
Und folgende Icons muß man noch kopieren:
contents_motif.gif next_motif.gif up_motif.gif next_motif_gr.gif
up_motif_gr.gif previous_motif.gif previous_motif_gr.gif
So habe ich meine Jokes-LaTeX-Dateien
umgewandelt:
md /tmp/jokes
cd /tmp/jokes
cp /home/loescher/TeX/jokes/* .
for i in *.tex ; do latex2html -no_navigation -address \
'<a href="http://www.loescher-online.de/">Stephan Löscher</A>,\
20 Nov 1998' -info '' $i; done
/bin/rm `find | grep -v 'html\|gif'` `find -size 0`
Wenn man die Stylesheets nicht benötigt, dann sollte man aus den
HTML-Files die Zeilen mit den Links auf die CSS-Files löschen.
Ghostscript Installation:
cd /usr/src/gs5.03
ln -s unixansi.mak makefile
unzip jpeg-6a.zip
unzip lpng096.zip
tar -zxvf zlib-1.0.4.tar.gz
mv JPEG-6A jpeg-6a
mv libpng-0.96 libpng
mv zlib-1.0.4 zlib
cd jpeg-6a ; lowercase * ; cd ..
cd libpng ; lowercase * ; cd ..
make
Für den Canon BJC-610 und 620 sollte man unbedingt den
bjc620-Patch vor dem "make"
einspielen. (Vielen Dank für den Patch an Gernot Zander,
hifi@scorpio.in-berlin.de)
Der MultiArcade Machine Emulator (MAME) sucht seine
CHEAT.DAT in dem Verzeichnis, das in
~/xmame/xmamerc als mamedir angegeben ist.
-
Die Tastatur-Belegung kann man umstellen von CRTL auf ALT, indem
man in die Adress-Leiste about:config
eingibt und darin das ändert:
user_pref("ui.key.accelKey", 18);
user_pref("ui.key.menuAccessKey", 17);
oder man kann es auch direkt in seinem Home im File
prefs.js eintragen.
-
Ab Firefox 3 werden die Bookmarks nicht mehr in einem
bookmarks.html gespeichert, sondern in der Datei
places.sqlite.
Man kann Firefox aber so einstellen, dass beide Files gepflegt
werden:
- In die Adress-Leiste about:config
eingeben.
- Im Filter nach autoexport suchen.
- Dieses Feld auf "true" umstellen.
-
Wenn man die Menüleiste unter Wind*ws7 dauerhaft einblenden möchte,
dann muß man mit der rechten Maustaste auf einen leeren Bereich in
der Tab-Leiste klicken und erscheinenden Kontextmenü den Eintrag
Menüleiste wählen.
-
Um die Tabs unter der Menüleiste anzuordnen, in die Adress-Leiste
about:config
eingeben und
browser.tabs.onTop = false
setzen.
-
Wenn man neue Tabs nicht nach dem aktuellen Tab, sondern ganz rechts
öffnen lassen will, dann muss man im
about:config
Browser.tabs.insertRelatedAfterCurrent
auf FALSE setzen.
-
Wenn man mit Firefox Version größer Version 31 das Flash-Plugin nutzen
will/muss, dann funktionieren leider keine Youtube-Videos
mehr.
Abhilfe: Erweiterung "Flash Control" installieren und auf
Youtube Flash blockieren lassen, dann werden Videos mit HTML5
wiedergegeben.
-
Ab irgendeiner Firefox Version wurde das Verhalten der rechten
Scroll-Leiste geändert: Ein Click in blättert nicht
seitenweise, sondern positioninert.
Das alte/gewohnte Verhalten kann man wieder erreichen, indem man
unter
about:config
mittels rechtem Mausklick einen neue Integer Wert anlegt:
ui.scrollToClick = 0
(Das funktioniert übrigens auch beim Thunderbird!)
Die dynamisch selbst einblendenden Scroll-Leisten kann man auch
dauerhaft einblenden, indem
man widget.gtk.overlay-scrollbars.enabled
auf false setzt.
-
Man kann ganz einfach laut
"Wiederherstellen wichtiger Daten aus altem Profil"
seine gespeicherten Kennwörter in ein neues Profil kopieren:
Einfach die Dateien key?.db und logins.json kopieren!
-
Beim Upgrade von z.B. Version 52 auf 84 wird ein neues leeres
Profil erstellt.
Man kann über
about:profiles
das alte wieder aktivieren.
-
Um einen URL aus der Zwischenablage mit der mittleren Maustaste
einfügen zu können, dass er geladen wird, muß man im
about:config
middlemouse.contentLoadURL
auf TRUE setzen.
-
Wenn man den Password-Manager auch auf Seiten verwenden will, die
jenes durch das Formular- bzw. Input-Tag-Attribut "autocomplete=off"
verhindern, dann geht das nur durch eine (vorübergehende) Änderung
in /usr/lib/xulrunner-1.9.2/components/nsLoginManager.js. Dazu kommentiert man diese Zeilen aus:
if (element && element.hasAttribute("autocomplete") &&
element.getAttribute("autocomplete").toLowerCase() == "off")
return true;
Also folgender diff:--- nsLoginManager.js.ORIG 2011-03-21 12:54:03.000000000 +0100
+++ nsLoginManager.js 2011-03-21 12:58:49.000000000 +0100
@@ -802,9 +802,9 @@
* specified form input.
*/
_isAutocompleteDisabled : function (element) {
- if (element && element.hasAttribute("autocomplete") &&
- element.getAttribute("autocomplete").toLowerCase() == "off")
- return true;
+/* if (element && element.hasAttribute("autocomplete") && */
+/* element.getAttribute("autocomplete").toLowerCase() == "off") */
+/* return true; */
return false;
},
Viel eleganter und ohne zu patchen geht es mit dem Addon RememberPass.
-
Empfehlenswerte Add-Ons:
Manche interessante Seiten wie z.B. der
Sprechender Sprachatlas von Bayern
benötigen Flash.
Abhilfe: Ruffle.
Wenn man die Fensterumschaltung mit Alt-Tab wie unter MS-Windows
will, dann muß man vor nach dem ./configure und vor dem Kompilieren
in src/wconfig.h.in
das einstellen:
#define WEENDOZE_CYCLE
Und in ~/GNUstep/Defaults/WindowMaker diese Zeile
hinzufügen:
WindozeCycling = YES
md /usr/src/gcc-obj
cd /usr/src/gcc-obj
/usr/src/gcc-2.95.1/configure --prefix=/opt/gcc
make bootstrap-lean
make install
Dann muß man noch diesen Link legen:
/lib/cpp -> /opt/gcc/lib/gcc-lib/i586-pc-linux-gnu/2.95.1/cpp
Empfehlenswerte Optionen auf einem Pentium sind:
-O3 -fstrict-aliasing -ffast-math -funroll-loops -march=pentium
-fschedule-insns2
Man braucht auf jeden Fall
SANE. Sehr zu empfehlen
ist auch XSANE.
Der "Server" (mit dem Scanner) wird so installiert:
USE="media-gfx/sane-backends -ipv6 xinetd"
emerge -avt media-gfx/sane-backends
cp /etc/sane.d/dll.conf /etc/sane.d/dll.conf.ORIG
# Für Netzwerk und HP Scanner reicht das:
echo -e "net\nhp" > /etc/sane.d/dll.conf
Test:
scanimage -L
Wenn man einen Scanner übers Netz freigeben will, dann muß man
serverseitig das einstellen:
In /etc/sane.d/saned.conf den Namen des/der Clients
eintragen.
Dann in /etc/xinetd.d ein File namens
saned anlegen:
service sane-port
{
socket_type = stream
server = /usr/sbin/saned
protocol = tcp
user = root
group = scanner
wait = no
disable = no
only_from = x200 x200.sl.de
}
Wenn /dev/scanner der Gruppe scanner gehört, dann muß der User nicht
root sein, sondern "saned".
Dann xinetd durchstarten.
Und auf Client-Seite:
In /etc/sane.d/net.conf muß man den Rechnernamen des
Servers eintragen.
Der "Client" (mit Netzwerk-Zugriff auf den Scan-Server) wird so installiert:
emerge -avt media-gfx/xsane
cp /etc/sane.d/dll.conf /etc/sane.d/dll.conf.ORIG
# Für Netzwerk reicht das:
echo "net" > /etc/sane.d/dll.conf
Test:
scanimage -L
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('xxx') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql -u root -p
> CREATE DATABASE IF NOT EXISTS tele;
> use tele
> CREATE TABLE tele(name VARCHAR(130), vorwahl VARCHAR(6), nummer VARCHAR(9));
> SHOW DATABASES;
> SHOW TABLES FROM tele;
> SHOW COLUMNS FROM tele;
shell> mysqlimport --local tele tele.txt -p
shell> mysql -e 'SELECT * FROM tele' tele -p
select * from tele where name like "%löscher%";
Wenn irgendetwas nicht funktioniert, dann mit -vv aufrufen.
Mit xmove kann man X-Clients von einem X-Server auf einen anderen
verschieben. Einfaches Beispiel:
A: xmove
A: xhost +
A: DISPLAY=localhost:1 xterm &
A: DISPLAY=localhost:1 xmovectrl -list
B: xmove
B: xhost +
A: DISPLAY=localhost:1 xmovectrl -move B 1
und wieder zurück:
A: DISPLAY=localhost:1 xmovectrl -move A 1
Oder Xnest als Client von xmove starten:
DISPLAY=localhost:1 Xnest :2
DISPLAY=localhost:2 xterm &
DISPLAY=localhost:2 twm &
Wenn man die Sitzung nicht braucht, dann kann man sie auf den
"Null-X-Server" Xvfb legen.
Es gibt auch ein kommerzielles Produkt von
X-Software.
Dieser höchst interessanten Software widme ich gerne
eine eigene Seite.
Siehe Foto-Tipps und Bildoptimierung.
Zuerst muß man die TV-Karte so konfigurieren, daß diese erst einmal
funktioniert und man Bild und Ton hat. Ausprobieren kann man das
recht gut mit xawtv.
Bei meiner
Hauppauge WinTV
brauche ich nur das Modul bttv laden und den Audio-Line-Out
der TV-Karte mit dem Audio-Line-In der Soundkarte per Kabel
verbinden.
Vom S-VHS-Eingang (und dem Audio-Line-In) kann man z.B. so
aufzeichnen:
mencoder -tv driver=v4l2:device=/dev/v4l/video2:norm=PAL:width=352:height=288:volume=100:input=2 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -vop pp=ci -endpos 00:01:00 -o video-mencoder.avi tv://
Oder das gleiche in höherer Auflösung:
mencoder -tv driver=v4l2:device=/dev/v4l/video2:norm=PAL:width=720:height=576:volume=100:input=2 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -vop pp=ci -endpos 00:01:00 -o video-mencoder.avi tv://
Oder vom TV-Eingang vom Kanal 36 aufnehmen:
mencoder -tv driver=v4l2:device=/dev/v4l/video2:norm=PAL:width=352:height=288:volume=45:input=0 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -vop pp=ci -endpos 00:01:00 -o video-mencoder.avi tv://36
Oder in besserer Qualität:
mencoder -tv driver=v4l2:device=/dev/v4l/video2:norm=PAL:width=720:height=576:volume=45:input=0 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1500 -vop pp=ci -endpos 00:01:00 -o video-mencoder.avi tv://
Scheiden kann man die Aufzeichnungen mit
avidemux.
Um auf einfache Art eine MP3-Sammlung als HTTP-Stream auszugeben, um
dies z.B. im Heimnetz nutzen zu können eignet sich am besten
Icecast
und
ezstream
wie unter
Run your own online radio station with icecast2 and ezstream (howto)
beschrieben. Hier die Kurzfassung:
emerge -avt icecast
vi /etc/icecast2/icecast.xml
# Kennworte unter "password" ändern!
rc-update add icecast default
/etc/init.d/icecast start
Nun kann man seinen Icecast-Server schon unter
http://server:8000/
erreichen.
Dann:
echo "media-sound/ezstream ~x86" >> /etc/portage/package.keywords
echo "media-libs/libshout ~x86" >> /etc/portage/package.keywords
emerge -avt ezstream
vi /audio/ezstream_neu.xml
und z.B. das eintragen:
<ezstream>
<url>http://localhost:8000/neu</url>
<sourcepassword>sagichnicht</sourcepassword>
<format>MP3</format>
<filename>/audio/neu.m3u</filename>
<stream_once>0</stream_once>
<svrinfoname>Neu</svrinfoname>
<svrinfopublic>0</svrinfopublic>
</ezstream>
und noch für den Start beim Reboot sorgen:
vi /etc/local.d/local.start
# das eintragen:
/usr/bin/ezstream -n -c /audio/ezstream_neu.xml >/dev/null 2>&1 &
Und
chmod 755 /etc/local.d/local.start
Jetzt kann man mit fast jedem MP3-Stream-Player den URL
http://server:8000/neu ansteuern und hört seine MP3-Sammlung.
Eine gute Alternative dazu wäre auch noch
mpd. Siehe dazu auch c't
14/2014 S. 154.
Durch Drücken von CTRL-F2 im ICAClient kann man den nachfolgenden
Tastendruck an das Linux weitergeben.
Wenn man also z.B. im KWin für "Globale Kurzbefehle" die Aktion
"Fenster Minimieren" auf CTRL-F2 legt, dann kommt man aus der
Full-Screen-ICAClient-Session mit CTRL-F2 CTRL-F2 zu seinen anderen
Fenstern.
Wenn die mittlere Maustaste auch in ICA-Anwendungen funktionieren
soll, dann muss man in ~/.ICAClient/wfclient.ini im
Abschnitt "[WFClient]" die Option
MouseSendsControlV=False
setzen.
Für eine fehlerfreie deutsche Tastatur sollte man außerdem
KeyboardLayout=GERMAN
setzen.
Um das Mikrofon zu verwenden, muß man das eintragen:
AllowAudioInput=True
Damit wird aber nur das "Standard" ALSA Mikrofon und Ausgabe
verwendet.
Wenn man mehr Geräte hat (z.B. Eine USB-Freisprecheinrichtung), dann
sollte man in /opt/Citrix/ICAClient/config/module.ini im
Abschnitt [ClientAudio] die Option
AudioRedirectionV4=True
setzen. (Siehe dazu
auch: Citrix
Workspace-App für Linux - Konfigurieren)
Im ICAClient 13 muß man diese Optionen möglicherweise in
/opt/Citrix/ICAClient/config/wfclient.ini eingetragen
werden!
Unter Gentoo muss man nach Installation der Version 13.3.0.344519
noch das ausführen:
ln -s /opt/Citrix/ICAClient/nls/en/UTF-8/eula.txt /opt/Citrix/ICAClient/nls/en/eula.txt
Und als Benutzer:
touch ~/.ICAClient/.eula_accepted
Bei den neueren Firefox Versionen (>52) funktioniert das Citrix
Plugin nicht mehr.
Man muss aber nur einstellen, dass die ICA Files mit
/opt/Citrix/ICAClient/wfica geöffnet werden sollen.
Wenn man z.B. nur für interne Zwecke im eigenen Netz Zertifikate
verwenden will/muss, dann kann man diese auch selbst erstellen.
Ein guter Artikel dazu ist:
Be your own Certificate Authority
Kurzfassung:
Die CA erstellen:
mkdir ca
cd ca
touch index.txt
echo 1000 > serial
cp /etc/pki/tls/openssl.cnf .
# das ändern:
dir = .
new_certs_dir = $dir/
certificate = $dir/meine-ca.crt
private_key = $dir/meine-ca.key
#
openssl genrsa -aes256 -out meine-ca.key 8192
openssl req -new -x509 -extensions v3_ca -key meine-ca.key -out meine-ca.crt -days 10950
Das erste Zertifikat erstellen:
openssl req -new -nodes -keyout client-privkey.pem > client.csr
openssl rsa -in client-privkey.pem -out client-key.pem
openssl ca -config openssl.cnf -out client.pem -infiles client.csr
-
Astronomie
-
Backup
- ntfsclone (Backup von NTFS)
-
Bildbearbeitung- und Verwaltung, etc.
-
Bilder-Ähnlichkeitssuche
-
Panorama-Erstellung:
hugin
-
Vector-Grafik:
Inkscape
-
Betrachter für medizinische DICOM Bilder:
XMedCon:
yay -S xmedcon
-
Für einfache Screenshots eignet sich "xv".
Für Screencasts ist
Blue Recorder
zu empfehlen.
-
Diff
-
Druck (auch PDF etc.)
- pdftk (Tool, um PDFs
zu manipulieren, z.B. aneinanderzuhängen: pdftk in1.pdf in2.pdf cat output out.pdf)
- Mit qpdf kann man z.B. Kennwort-geschützte
PDFs auf der Kommandozeile vom Kennwort befreien: qpdf --password="meinpdfkennwort" --decrypt input.pdf output.pdf
- Okular - PDF, EPub, DjVU und MD für Dokumente, JPEG, PNG, GIF, Tiff, WebP für Bilder, CBR und CBZ für Comics viele weitere Formate
- pdfarranger - merge or split PDF documents and rotate, crop and rearrange their pages using an interactive and intuitive graphical interface
- Xournal++
- various features for annotating on top of PDF files
-
File Manager
-
Headless Web-Browser (Eigenstänig oder zum selber programmieren)
-
Hex-Editoren
-
Netzwerk
-
Notensatz
-
OCR / Texterkennung
-
Partitions-Manipulatoren
-
Windows 7 kann schon einiges mit "Bordmitteln":
Systemsteuerung -> ins Suchfeld "partition" eingeben
-> dann ist man schon bei "Festplatten Partitionen
erstellen und verwalten" -> Links-Klick auf Partition
-> Verkleinern etc.
Damit ist aber leider nicht alles möglich.
-
EASEUS
Partition Master Home Edition kann so ziemlich alles,
was man als Heim-Anwender braucht. Funktioniert auch für
SAS-Platten und Windows7.
- Partition Logic
- parted
- gparted
-
Spiele (siehe: happypenguin.org)
-
Spieleplattform:
Lutris
-
Action:
-
BZFlag
(Mehrspieler, netzwerkfähig)
-
Arcade:
-
Karten:
-
SchafKopf
Da es leider keine aktuellen ebuilds oder Pakete mehr
gibt, muss man es manuell zum Laufen bringen:
emerge -avt1 kde-frameworks/kdelibs
emerge -avt1 kde-apps/libkdegames:4
git clone git://github.com/benni0815/SchafKopf.git
cd SchafKopf
mkdir build
cd build
cmake .. -DINSTALL_OPEN_TAROCK=ON
make
-
Rennen:
- Schach: Knights mit der Engine Phalanx (Ganz einfach zu installieren: emerge -avt phalanx knights)
-
Strategie:
-
Streaming
-
Um RTMP-Streams zu speichern ist sehr gut
rtmpdump
geeignet.
-
Zugriff auf die Mediatheken der öffentlichen
Fernsehsender ermöglicht
MediathekView:
pacman -S mediathekview
java -Xmx2048m -jar /usr/share/java/mediathekview/MediathekView.jar
-
Verschlüsselung
-
aespipe
(bz2aespipe)
Kurzanleitung (uu-coden kann man natürlich auch weglassen):
cat QUELLE | aespipe | uuencode QUELLE.AES > QUELLE.AES.UUE
cat QUELLE.AES.UUE | uudecode -o - | aespipe -d > QUELLE
- Filesystem: siehe verschlüsseltes Filesystem
-
Video-Bearbeitung/Video-Schnitt (ein lesenswerter Vergleichstest
ist in c't 5/2010 S. 128 und c't 19/2015 S. 100)
Kurzzusammenfassung des Vergleichs: Super Einstieg mit Kdenlive
oder mit mehr Einarbeitungsaufwand Cinerella. Neu: Flowblade!
-
Virus-Scanner (Antivirus)
-
ClamAV:
emerge -avt app-antivirus/clamav
freshclam -v
clamscan -ir *
-
VoIP/SIP
-
Web-Browser für den Text-Modus bzw. Konsole: Browsh oder Carbonyl
-
Wiederherstellung/Restore bei Plattendefekt
-
unsortiert
-
QR-Codes: Python + colorama + Pillow + qrcode
Dann:
qr --error-correction=H "MeinText" > test.png
-
Dateien über das Internet von einem Rechner zum anderen
kopieren:
Magic Wormhole
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
modprobe kvm-intel
grep vmx /proc/cpuinfo
echo "app-emulation/qemu sdl spice" >> /etc/portage/package.use
emerge -avt qemu
ggf.
emerge -avt libvirt virt-manager
gpasswd -a mein_user kvm
Image anlegen:
qemu-img create vm1.raw 10G
Oder (besser?) als QCOW2:
qemu-img create -f qcow2 vm1.raw 10G
Betriebssystem durch einmaligen Boot von image.iso installieren:
qemu-system-x86_64 -enable-kvm -drive if=virtio,driver=raw,node-name=hda,file=vm1.raw -cdrom image.iso -boot once=d
-m 4G -smp 2
So startet man dann später die VM:
qemu-system-x86_64 -enable-kvm -drive if=virtio,driver=raw,node-name=hda,file=vm1.raw -m 4G -smp 2
Wenn man sich gerne vom KVM-Host per SSH am KVM-Gast anmelden
möchte, dann braucht man zusätzlich noch diese Parameter:
-net nic -net user,hostfwd=tcp::2222-:22
Dann ist der Gast vom Host per SSH auf Port 2222 erreichbar.
Um gezielt ein USB-Gerät an den Gast weiterzugeben (hier:
DVB-S-Stick) nutzt man diese Optionen:
-device usb-ehci -device usb-host,vendorid=0x2013,productid=0x0258
# oder:
-device qemu-xhci -device usb-host,vendorid=0x2013,productid=0x0258
Mit "-usb" geht es nicht!
Ggf. muss man im Host noch das Gerät für den Benutzer schreibbar
machen, als Quick-Hack einfach z.B. chmod auf /dev/bus/usb/002/004.
Die vendorid/productid kann man im Host mit lsusb
auslesen.
Im Gast kann man den paravirtualisierten X11-Treiber QXL
verwenden:
emerge -avt x11-drivers/xf86-video-qxl
qemu muss man dann nur die Option "-vga qxl" mitgeben. Das geht aber
nur mit SPICE und dieses ist nicht auf 32-bit-Systemen supportet!
Falls man auf einem 32-bit-System eine 64-bit-VM laufen lassen
will, dann leider ohne KVM Hardware-Unterstützung:
qemu-system-x86_64 -hda vm1.raw -cdrom image.iso -boot d -m 4G
Mit Kimchi
kann man mehrere virtuelle Maschinen verwalten.
Windows7 kann man so installieren:
qemu-system-x86_64 -enable-kvm -hda windows.raw -m 2G -smp 1 -usb -device usb-kbd -device usb-mouse -device usb-audio -boot once=d -netdev user,id=mynet0 -device e1000-82545em,netdev=mynet0 -cdrom /mnt/data/isos/win7pro.iso
VirtIO für Windows:
virtio-win.iso
# Installieren des VirtIO SCSI Treibers über CDROM-E:
qemu-system-x86_64 -enable-kvm -hda windows.raw -m 2G -smp 1 -usb -device usb-kbd -device usb-mouse -device usb-audio -netdev user,id=mynet0 -device e1000-82545em,netdev=mynet0 -drive file=windows7.qcow2,index=0,media=disk,if=virtio -drive file=/mnt/data/isos/win7pro.iso,index=2,media=cdrom -drive file=/mnt/data/isos/virtio-win.iso,index=3,media=cdrom
Für Sound-Wiedergabe diese Option verwenden: -audio pa,model=hda
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)
Ab Kernel 2.6.10 kann man den I/O-Scheduler online nach Block-Geräten
getrennt verändern. Der aktuelle Scheduler ist der, der in
/sys/block/hda/queue/scheduler in eckigen Klammern
steht. Ändern kann man das ganz einfach im laufenden System:
echo cfq > /sys/block/hda/queue/scheduler
Ubuntu-Kernel-Sourcen kann man sich so herunterladen:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git lucid
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
Für Bastler:
Steckerbelegung Ethernet RJ-45
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.
In c't 19/2003 beginnt eine fortlaufende Serie zum Thema "Heimserver
im Eigenbau", in der auch die grundlegenden Netzdienste beschrieben
sind.
Man braucht folgende Files:
/etc/named.boot
/var/named/named.local
/var/named/named.hosts
/var/named/named.reverse
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.
In /etc/bind/named.conf habe ich folgendes
geändert bzw. ergänzt:
forwarders { 212.82.225.7; 212.82.225.12; };
forward only;
listen-on { 127.0.0.1; 10.3.3.200; };
Meine eigenen IP-Adressen löse ich aber per /etc/hosts auf,
da das bei wenigen Rechner nicht allzu aufwändig ist.
Als Alternative zu Bind sollte man sich für das kleine Netzwerk
zuhause auch
Dnsmasq anschauen.
(Zur Konfiguration eines Druckers mit CUPS
siehe folgenden Abschnitt...)
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.
Siehe auch:
Gentoo Printing Guide.
Den passenden Treiber für einen Drucker findet man bei
http://www.linuxprinting.org/.
Für einen HP Deskjet 840C braucht man das (In den USE-Flags sollte
"cups" und "ppds" enthalten sein):
emerge -avt hpijs ghostscript cups
Für einen Canon BJC-620 oder einen Brother HL-1030 braucht man noch
das:
emerge -avt foomatic
Für einen HP OfficeJet G85 braucht man noch neben
USB-Printer-Support im Kernel (als Modul) das:
echo "net-print/hplip -X -qt3 cups foomaticdb parport ppds" >> /etc/portage/package.use
emerge -avt hplip
rc-update add hplip default
/etc/init.d/hplip start
/etc/init.d/cupsd restart
hp-setup
CUPS starten:
/etc/init.d/cupsd start
rc-update add cupsd default
Dann entweder mit dem lokalen Browser die Seite
http://localhost:631/ ansteuern,
oder wenn es auch von einem anderen Rechner aus funktionieren
soll, dann in /etc/cups/cupsd.conf im Abschnitt
<Location /> und <Location /admin> die
Zeile
Allow From meine.ip.adresse
eintragen.
Und dann einfach unter "Adminstration" den Drucker einrichten.
Anmelden kann man sich z.B. als root.
Remote-CUPS-Print-Queues können unter dem URL
ipp://SERVER/printers/DRUCKER eingerichtet werden.
Wenn man von CUPS auf eine lpd-Style-Spooler drucken will, dann muß
man auf dem LPD-Server die Clients in /etc/hosts.lpd
eintragen. Im CUPS muß man den Server unter lpd://servername/raw
ansprechen, also im LPD eine Queue definiert haben, die rohe
Druckdaten unverändert durchlässt, z.B. das in /etc/printcap:
raw:\
:lp=/dev/lp0: \
:sd=/var/spool/lpd/printer-spool: \
:lf=/usr/spool/lpd/bjc620/errs: \
:mx#0: \
:sh: \
:sf:
Und nicht vergessen, den Zugriff auf den lpd in der Datei
/etc/hosts.lpd freizugeben, also in dieser Datei den
Rechnernamen des Clients einzutragen!
Ein Fax-Gerät (Modem) kann man so als "Drucker" in CUPS einrichten:
emerge -avt fax4cups
Übers CUPS-GUI im Browser einen "Drucker" unter der URI
mgetty-fax:/dev/ttyS0 eintragen.
Beim Drucken kann dann über den lpr-Schalter "-J" die Telefonnummer
mitgegeben werden.
Mögliche Fehler, z.B. nach Update:
Wenn der Drucker gar nichts mehr druckt und in
/var/log/cups/error_log solche Fehler kommen:
foomatic-gswrapper: gs '-sstdout=%stderr' '-dBATCH' '-dPARANOIDSAFER' '-dQUIET' '-dNOPAUSE' '-sDEVICE=bjc600' '-dBitsPerPixel=16' '-dProcessColorModel=/DeviceRGB' '-sOutputFile=%std out' '-_'
Unrecoverable error: rangecheck in .putdeviceprops
Process 1616 ending: "foomatic-gswrapper -q -dBATCH -dPARANOIDSAFER -d QUIET -dNOPAUSE -sDEVICE=bjc600 -dBitsPerPixel=16 -d..."
renderer return value: 255
renderer received signal: 255
Process dying with "The renderer command line returned an unrecognized error code 255.", exit stat: 1
error: Illegal seek (29)
Cleaning up ...
Killing process 1615 (KID4) with signal 15
Process dying with "Caught termination signal: Job canceled", exit stat: 0
error: (0)
Cleaning up ...
KID3 exited with status 1
Renderer exit stat: 1
dann muss man im CUPS das
"Color-Model" auf "Four-color CMYK" umstellen!
Für einen Canon PIXMA iP7250 braucht man unter Sabayon das,
um per WLAN drucken zu können (Kein USB!):
equo install --ask net-print/cnijfilter
equo install --ask net-print/gutenprint
equo install --ask sys-devel/binutils
binutils-config -l
binutils-config 2
gcc-config -l
# den x86_64-pc-linux-gnu-5.4.0 wählen:
gcc-config 6
emerge --sync
emerge -avt net-print/cups-bjnp
systemctl restart cups
"Canon network printer" hinzufügen mit
bjnp://IP_ADRESSE_DEINES_DRUCKERS
Marke: Canon
Modell: PIXMA iP7250 - CUPS+Gutenprint v5.2.12
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
Außerdem ist noch Folgendes für die Bash in meinem
/etc/profile.local:
shopt -s histappend
bind '"\C-r": history-search-backward'
shopt -s cdspell
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.loescher-online.de/
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 StartUp:
run-uid = wwwoffle
run-gid = wwwoffle
# Bei Options:
connect-retry = yes
# Bei AllowedConnectHosts die Clients eintragen:
*.sl.de
10.3.3.*
# Bei Proxy:
http://* = localhost:1300
ftp://* = localhost:1300
# Bei Purge:
max-size = 1024
Dabei ist der Proxy bereits auf einen
komprimierten SSH-Tunnel eingestellt,
aber das kann man auch weglassen (für direkte Verbindung ins
Internet oder transparentem Proxy des Providers):
http://* =
ftp://* =
oder den Proxy des Providers eintragen:
http://* = proxy.my.provider.de:8080
ftp://* = proxy.my.provider.de:8080
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@gmx.de
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
news 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@gmx.de
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@gmx.de
loescher:mailsender loescher@gmx.de
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@gmx.de
-
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).
emerge -aC ssmtp
echo "mail-mta/postfix sasl" >> /etc/portage/package.use/00-local
emerge -avt postfix
rc-update add postfix default
/etc/init.d/postfix start
Und optional als Kommandozeilen-Client:
emerge -avt mail-client/mailx
-
Mail-Server für das lokale Netz, der Mails von allen anderen
Rechnern ("Null-Clients") entgegen nimmt, nicht-lokale Mails an
den Provider schickt und empfangene Mails (z.B. mit fetchmail)
lokal ausliefert:
In /etc/postfix/main.cf:
myhostname = server.sl.de
relayhost = [mail.gmx.net]:587
mydestination = sl.de localhost.sl.de rechner1.sl.de rechner2.sl.de ...
# Für unbegrenzt große Mails:
mailbox_size_limit = 0
message_size_limit = 0
In /etc/aliases sollte man das eintragen:
postmaster: root
root: loescher
Gefolgt vom Kommando newaliases.
Bei dial-on-demand braucht man noch das:
defer_transports = smtp
#OLD# disable_dns_lookups = yes
smtp_dns_support_level = disabled
Wenn Internetverbindung online, dann:
/usr/sbin/sendmail -q
Adress-Umschreibung:
canonical_maps = hash:/etc/postfix/canonical
virtual_alias_maps = hash:/etc/postfix/virtual
und in /etc/postfix/canonical das eintragen:
loescher loescher@mein-internetprovider.de
und in /etc/postfix/virtual das eintragen:
loescher@mein-internetprovider.de loescher
Dann:
postmap canonical
postmap virtual
und testen:
postmap -q root@server.sl.de hash:/etc/postfix/canonical
postfix reload
Diese Einstllung bewirkt, daß alle Mails an "loescher" lokal
ausgeliefert werden. Details finden sich in
/usr/share/doc/postfix-2.7.1/readme/STANDARD_CONFIGURATION_README.
-
Mail-Client, der nur Mails an den Mail-Server schicken
soll, sonst nichts:
In /etc/postfix/main.cf:
myhostname = meinrechner.sl.de
myorigin = $mydomain
relayhost = server
inet_interfaces = 127.0.0.1
local_transport = error:local delivery is disabled
#OLD# disable_dns_lookups = yes
smtp_dns_support_level = disabled
Und in local delivery agent den "local delivery agent"
auskommentieren.
-
Mail-Client, der alle seine Mails lokal nach
/var/spool/mail ausliefert:
In /etc/postfix/main.cf:
myorigin = $mydomain
inet_interfaces = 127.0.0.1
mydestination = sl.de localhost.sl.de rechner1.sl.de
#OLD# disable_dns_lookups = yes
smtp_dns_support_level = disabled
Und eine /etc/aliases braucht man noch:
postmaster: root
gefolgt von newaliases.
-
Mail-Client, der nur Mails an einen externen Mail-Server
(z.B. einen Freemailer) schicken soll, sonst nichts:
In /etc/postfix/main.cf:
myhostname = hugo.gibtsnicht.de
myorigin = $mydomain
mydestination =
inet_interfaces = loopback-only
### defer_transports = smtp
#OLD# disable_dns_lookups = yes
smtp_dns_support_level = disabled
relayhost = [mail.gmx.net]:587
smtp_generic_maps = hash:/etc/postfix/generic
mailbox_size_limit = 0
message_size_limit = 0
smtp_sasl_auth_enable = yes
#OLD# smtp_use_tls = yes
smtp_tls_security_level = secure
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
# Um bei allen ausgehenden Mails den Envelope-From zu setzen:
canonical_maps = regexp:/etc/postfix/canonical
canonical_classes = envelope_sender
### ggf. zum Fehlersuchen:
### debug_peer_list=mail.gmx.net
### debug_peer_level=3
Und:
echo "[mail.gmx.net]:587 MEINUSERNAME:MEINKENNWORT" >> /etc/postfix/saslpass
postmap /etc/postfix/saslpass
In /etc/postfix/generic:
root meine.externe.adresse@gmx.de
@sl.de meine.externe.adresse@gmx.de
Um bei allen ausgehenden Mails den Envelope-From zu setzen:
echo '// syslog.linux@gmx.de' > /etc/postfix/canonical
Dann:
cd /etc/postfix
postmap generic
postmap canonical
/etc/init.d/postfix stop
/etc/init.d/postfix start
# bzw.
systemctl enable postfix.service
systemctl start postfix.service
Und ausprobieren:
echo test | mail -s test root
less /var/log/mail.info
Dann noch per Cron einen regelmäßigen Check automatisieren:
0 21 1 * * /bin/echo Mailfunktionstest
Mögliche Fehler findet man in /var/log/mail.info.
Danke für Anregungen aus
mhawthorne.net - Postfix: Configuring Gmail as Relay!
Mit Fetchmail kann z.B. von einem POP3-Account Mail abholen. Das
geht mit folgender ~/.fetchmailrc:
poll mailhost.provider.de with protocol pop3 port 995 fetchall
Man kann damit Mail auch verschlüsselt und komprimiert über einen
SSH-Tunnel laufen lassen.
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 (Winterzeit) ist eine Stunde nach UTC, also Zeitzone +0100.
Also setzt man zuerst 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. (Siehe:
NTP)
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 von einem anderen Rechner holen:
netdate -v tcp rechnername
oder
ntpdate -v -b -u rechnername
und dann mit clock -wu oder hwclock --systohc
setzen.
Es geht auch mit getdate -adjust 1 240 rechnername
Sollte die Uhr einmal verstellt sein und in der Zukunft laufen, dann
entstehen Dateien, die nach der Uhr-Korrektur in der Zukunft
liegen. Das führt zu unschönen Fehlermeldungen. Abhilfe:
touch /tmp/bla
find . -newer /tmp/bla -exec touch '{}' ';'
Anleitung zu NTP.
Die Anzeige des "peers"-Befehls bei ntpq bzw. bei
"ntpq -p" zeigt
eine Liste von Peers des Servers und eine Zusammenfassung der Stati:
-
IP-Adresse des Remote-Peer
-
Reference-ID (0.0.0.0 für eine unbekannte ID)
-
Stratum des Peers (16 bedeutet, daß das Peer nicht synchronisiert ist)
-
Typ des Peers (local, unicast, multicast oder broadcast)
-
Zeit, wann das letzte Paket empfangen wurde in Sekunden
-
Polling-Intervall in Sekunden
-
Reachability-Register (octal)
-
current estimated delay, offset, dispersion des Peers (in
Sekunden)
Das Zeichen am linken Rand Zeit den Selektions-Prozess an:
space = discarded due to high stratum and/or failed sanity checks.
x = designated falseticker by the intersection algorithm. (konnte längere Zeit keine verlässlichen Werte liefern)
. = culled from the end of the candidate list.
- = discarded by the clustering algorithm. (bei letzter Abfrage zu weit abweichende Zeit geliefert)
+ = included in the final selection set.
# = selected for synchronization but distance exceeds maximum. (ebenfalls geeigneter Server, aber weiter hinten in der Bewertung)
* = selected for synchronization. (Aktueller Referenz-Server)
o = selected for synchronization, pps signal in use.
NTP-Server:
www.eecis.udel.edu/~mills/ntp/servers.htm,
oder
pool.ntp.org
0.pool.ntp.org
1.pool.ntp.org
2.pool.ntp.org
ntp0.freenet.de
ntp1.freenet.de
ntps1-0.cs.tu-berlin.de
ntps1-1.cs.tu-berlin.de
ntp0.fau.de
ntp1.fau.de
ntp2.fau.de
ntp3.fau.de
Man kann den Pool von ntp.org auch so nutzen:
server pool.ntp.org
server pool.ntp.org
server pool.ntp.org
Oder in Deutschland besser:
server de.pool.ntp.org
server de.pool.ntp.org
server de.pool.ntp.org
Einen eigenen NTP-Server kann man sich ganz einfach aufsetzen:
emerge -avt ntp
in /etc/ntp.conf das eintragen:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/ntp.drift
restrict 10.0.0.0 mask 255.0.0.0 nomodify nopeer notrap
disable monitor
Damit wird die interne Uhr des Servers als Zeitquelle verwendet.
Diese interne Uhr kann man so stellen, wie bei den Clients, siehe
unten.
Bei ersten Versuchen aber nicht ungeduldig werden: Selbst das
Synchronisieren auf die interne Uhr braucht ca. 8 Minuten!
Wenn man dauerhaften Zugang zum Internet hat, dann kann man gleich
noch richtige Server eintragen, z.B.
server 0.pool.ntp.org
Wenn man ntpd nur zum Zeit-Synchronisieren für den eigenen Rechner
verwenden will, aber ntpd gar nicht als Server für andere Rechner
laufen lassen will, dann ist folgende Konfiguration optimal:
server pool.ntp.org
driftfile /var/lib/ntp/ntp.drift
restrict default ignore
restrict 127.0.0.0 mask 255.0.0.0
disable monitor
Achtung: Manche Internet-DSL-Router öffnen den Port 123/UDP, wenn im
Heimnetz ein NTP-Server läuft und man wird dann aus dem Internet
angreifbar. Mit obigen restrict-Anweisungen bleibt der NTP-Server
nur auf dem eigenen Rechner erreichbar.
Siehe: Kommt Zeit kommt DDoS Angriff.
Damit kann es aber auch sein, dass der ntpd gar keine Zeit mehr
stellen kann, wenn die restrict-Anweisungen zu "scharf" sind.
Viel eingacher geht das mit Chrony, siehe unten...
Dann den ntpd noch dauerhaft starten:
/etc/init.d/ntpd start
rc-update add ntpd default
Clients sind auch ganz einfach: Nur in
/etc/conf.d/ntp-client den richtigen Server eintragen:
NTPCLIENT_OPTS="-Q -b -u server"
Dann noch das Ganze dauerhaft starten:
/etc/init.d/ntp-client start
rc-update add ntp-client default
Wenn man keine dauerhafte Verbindung zu NTP-Servern hat, dann bietet
sich statt xntp das Programm
chrony an.
Eine Konfiguration für Dial-Up-PCs könnte so aussehen:
# Alle Server sind normalerweise offline und werden erst per chronyc
# online geschaltet, wenn die Internetverbindung besteht.
server 82.219.3.1 offline
server 216.27.185.42 offline
server 216.136.10.198 offline
server 61.9.138.184 offline
server 66.115.130.4 offline
server 68.98.18.98 offline
keyfile /etc/chrony.keys
commandkey 1
driftfile /etc/chrony.drift
allow 10.3.3
# RTC als Referenzuhr verwenden, aber mit hohen Stratum:
local stratum 10
# RTC läuft mit UTC und nicht mit localtime:
rtconutc
Siehe auch
die chrony Anleitung.
Wenn man online ist, dann muß man per chronyc dem
chronyd mitteilen, daß er die NTP-Server nun erreichen
kann:
# chronyc
password sagichnicht
online
Das Kennwort muß man auch in /etc/chrony.keys
eintragen.
Bei einer dauerhaften Internetverbindung reicht auch völlig diese
/etc/chrony/chrony.conf ganz ohne allow-Zeilen:
server pool.ntp.org
server 0.gentoo.pool.ntp.org
server 1.gentoo.pool.ntp.org
server 2.gentoo.pool.ntp.org
server 3.gentoo.pool.ntp.org
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server ntp0.freenet.de
server ntp1.freenet.de
server ntps1-0.cs.tu-berlin.de
server ntps1-1.cs.tu-berlin.de
server ntp0.fau.de
server ntp1.fau.de
server ntp2.fau.de
server ntp3.fau.de
server de.pool.ntp.org
Dann:
rc-update add chronyd default
/etc/init.d/chronyd start
chronyc sources
Und wenn NTP gar nicht geht (z.B. wegen einer Firewall) dann kann
man noch HTP benutzen.
Es gibt natürlich noch das einfache Time Protocol nach RFC 868. Dazu
konfiguriert man z.B. den
xinetd als Server durch Eintrag
in /etc/xinetd.d/time-stream:
disable = no
only_from = my.client.home.de
Als Client kann man z.B.
rdate
verwenden:
rdate -s my.server.home.de && /sbin/hwclock --systohc
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.
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
/etc/init.d/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.7 (und evtl.
höher) und den "trident"-Chipsatz in der
Hoontech SoundTrack Digital 4DWave NX
(
Hoontech).
-
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
-
Ab Version 0.9.x:
cd alsa-oss-x.x.x
./configure
make
make install
-
cd alsa-utils-x.x.x
./configure
make
make install
-
/etc/modules.conf
anpassen. Es muß folgendes auskommentiert bzw. hinzugefügt
werden:
# Ab ALSA 0.9.x muß es statt snd-card-xxx nur noch snd-xxx heißen!
# 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
-
Eine Intel 8x0-Soundkarte trägt man z.B. (ohne devfs) so
ein (alsa 0.9.3a):
alias char-major-14 soundcore
alias char-major-116 snd
alias sound-slot-0 snd-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 major=116 cards_limit=1 device_mode=0666 device_gid=17 device_uid=0
alias snd-card-0 snd-intel8x0
options snd-card-intel8x0 index=0
-
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
(bzw. ab ALSA 0.9
/etc/asound.state)
speichern. Das wird in
/etc/modules.conf
automatisch per post-install geladen.
-
Für Aktivierung des digitalen S/PDIF-Ausgangs muß man in
/etc/asound.conf
(bzw. ab ALSA 0.9
/etc/asound.state)
noch diese Zeile ändern:
switch("S/PDIF Mixer Out", true)
Ab ALSA 0.9:
Mit alsamixer einfach das Element IEC958 unmuten.
-
Falls Timing-Probleme auftreten sollten: im Kernel
PCI-Quirks=Yes und PCI-access=any einstellen.
-
Analog 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
Ab ALSA 0.9:
Capture auf Line stellen (mit Space-Taste), unmuten und
auf 100 aufdrehen und Capture unmuten und auf ca. 13
aufdrehen. Aufnehmen in CD-Qualität geht dann so:
arecord -f cd test.wav
-
Für digitale Aufnahmen über das Digital I/O II und das DB II muß
man den "Input-Gain" im Mixer auf Mute stellen, da sonst der
analoge Eingang mit dem digitalen gemischt wird.
Bei Aufnahmen vom DAT sollte außerdem PCM auf 84 stehen!
Ab ALSA 0.9:
Es muß das Element Capture auf Mute sein, da sonst der
analoge Eingang mit dem digitalen gemischt wird.
Aussteuern muß man DAT-Aufnahmen nicht.
-
Den angeschlossenen Joystick kann man nutzen, wenn man im Kernel
(ab 2.2.14) das joystick- und joy-pci-Modul aktiviert und in
/etc/modules.conf
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.
-
Das S/PDIF-Kabel ist bei mir ein 9 Meter langes, 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.
-
TiMidity++
kann ab Version 2.10.0 als MIDI-Sequencer fungieren, wenn man ihn
mit ./configure --enable-audio=alsa --enable-alsaseq
konfiguriert und dann als ALSA-MIDI-Sequencer-Client mit
timidity -iA startet.
-
... Wie gebe ich _echtes_ MIDI wieder? Ohne timidity ...
Eine sehr gute Beschreibung findet man in c't 01/2009 und 02/2009.
Als erstes RAID-Unterstützung im Kernel aktivieren, aber nicht als Module
bauen, da man sonst nicht davon booten kann.
emerge -avt mdadm testdisk
RAID auf sdb2 mit 2 Platten anlegen, wobei zweite Platte noch fehlt:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb2 missing
Filesystem anlegen... Mounten... etc.
Weitere Platte dazunehmen:
mdadm /dev/md0 --add /dev/hdc2
Man kann auch die Anzahl der RAID-Devices erhöhen und so z.B. aus
einem RAID1 mit zwei Platten ein RAID1 mit 3 Platten machen:
mdadm /dev/md0 --grow --raid-devices=3
Genauso kann man ein RAID5 mit 3 Platten um eine erweitern und
gewinnt damit zusätzlichen Platz:
mdadm /dev/md1 --add /dev/hdc3
mdadm /dev/md1 --grow --raid-devices=4 --backup-file=/tmp/md1-grow.backup
resize2fs /dev/md1
Status anzeigen:
mdadm --detail /dev/md0
Für die Überwachung des RAID:
In /etc/conf.d/mdadm das eintragen:
MDADM_OPTS="--mail root --test"
und
/etc/init.d/mdadm start
rc-update add mdadm default
Bzw. für Arch:
pacman -S mdadm
# Für Aktivierung des mdadm-Monitoring muss in /etc/mdadm.conf in
MAILADDR eine Mail-Adresse (z.B. "root") eingetragen werden!
# Testen mit: mdadm --monitor --scan --oneshot --test
# Siehe: RAID - Email notifications
RAID stoppen:
mdadm --stop /dev/md0
RAID starten:
mdadm --auto-detect
Eine Platte aus RAID entfernen:
mdadm /dev/md0 --fail /dev/hdc2
mdadm /dev/md0 --remove /dev/hdc2
mdadm --zero-superblock /dev/hdc2
RAID wieder löschen und hdc2 entfernen:
mdadm --stop /dev/md0
mdadm --zero-superblock /dev/hdc2
Ausführliche Beschreibung, wie man ein bestehendes Root-Filesystem
auf ein RAID verlagert und dann davon booten kann:
Die neue leere Platte ist /dev/sda und die alte /dev/hdc.
# Die neue Platte formatieren:
Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 125 1004031 82 Linux swap / Solaris
/dev/sda2 * 126 2558 19543072+ fd Linux raid autodetect
# Typ ist 0xfd und Bootable!
# Swap einrichten
swapoff -a
export SWAP=/dev/sda1
dd if=/dev/zero of=$SWAP bs=1024 count=10
mkswap -L Swap0 $SWAP
# Den alten Swap auch mit einem Label versehen
export SWAP=/dev/hdc1
dd if=/dev/zero of=$SWAP bs=1024 count=10
mkswap -L Swap1 $SWAP
# RAID einrichten
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb2 missing
export DEV=/dev/md0
mkfs.ext3 $DEV
e2label $DEV Root
tune2fs -c 0 $DEV
tune2fs -i 400d $DEV
mount -L Root /mnt/newroot
rsync -aSH --numeric-ids --delete --delete-excluded --exclude /proc --exclude /sys --exclude /delwatch --exclude /cdrom --exclude /mnt --exclude /root/.ccache --exclude /var/tmp/ccache --exclude /var/spool/wwwoffle / /mnt/newroot/
cd /mnt/newroot/
touch ROOT_AUF_EXTERNER_PLATTE
rm ROOT_AUF_PLATTE
rd .reiserfs_priv
md proc sys mnt
ln -s /mnt/disk02/delwatch .
cd mnt
md a backup cdrom centrix cf disk00 disk01 disk02 disk03 floppy gentoo old newroot test unbenutzt
cd..
vi /mnt/newroot/etc/fstab
LABEL=Root / ext3 defaults 0 0
LABEL=Swap0 swap swap sw 0 0
LABEL=Swap1 swap swap sw 0 0
...
vi /mnt/newroot/boot/grub/menu.lst
# Einträge auf /dev/sda1 setzen und bei externer USB-Platte rootdelay=5,
damit auch lange genug vor dem Mounten von / gewartet wird! Beispiel:
title=Linux 2.6.22.9
root (hd0,1)
kernel /boot/2.6.22.9 root=/dev/md0 vga=789 rootdelay=5
# GRUB sagen, dass /dev/sda seine erste Festplatte ist:
echo "(hd0) /dev/sda" > /mnt/newroot/boot/grub/device.map
umount /mnt/newroot
# RAID stoppen vor der Grub-Installation!
mdadm --stop /dev/md0
mount /dev/sda2 /mnt/newroot
# Grub in die Partition installieren und nicht in den MBR, da er so vom
# RAID mitgespiegelt wird
grub --device-map=/mnt/newroot/boot/grub/device.map --config-file=/mnt/newroot/grub/menu.lst
grub> root (hd0,1)
grub> setup (hd0,1)
quit
umount /mnt/newroot
# Mit testdisk einen MBR auf /dev/sda und /dev/hdc schreiben, der die erste als
# bootable markierte Partition startet.
# Ab grub2 kann man einfach statt testdisk den Grub-Loader in beide
# Boot-Sektoren schreiben:
grub-install /dev/sda
grub-install /dev/sdb
# Booten!
# Dann die alte Partition als 0xfd und bootable markieren und diese zum
# RAID dazunehmen:
mdadm /dev/md0 --add /dev/hdc2
mdadm --detail /dev/md0
Zum Thema Booten von einem USB-Stick siehe auch
Booten von USB.
Sollte jemand ein Performance-Problem mit RAID-5 haben, also
z.B. dass zu wenig Zeit für einen wichtigen Prozess überbleibt,
weil ein Kopierbefehl und der md?_raid5 alle Ressourcen brauchen,
dann sollte man den Kopierbefehl mit ionice starten:
ionice -c3 cp quelle ziel
Man kann aber auch gleich den wichtigeren Befehl in einer "besseren"
Klasse starten: ionice -c2 -n0 ...
Hier gibt es noch
eine Anleitung zu md
in der beschrieben ist, dass man z.B. in
/sys/block/md0/md/sync_speed die aktuelle Geschwindigkeit
des md-Resyncs auslesen kann und in
/sys/block/md0/md/sync_speed_min
bzw. /sys/block/md0/md/sync_speed_max, die minmale
bzw. maximale Sync-Geschwindigkeit einstellen kann.
Sollte beim Booten oder im Laufenden Betrieb diese Meldung
kommen:
kernel: md: kicking non-fresh sda3 from array!
dann kann man diese Platte mit diesem Befehl wieder ins RAID
aufnehmen:
mdadm /dev/md1 --add /dev/sda3
(Das ist bei mir passiert, da die USB-Platte kurz mal nicht
angeschlossen war.)
Wenn in einem RAID5 mehrere Platten temporär gleichzeitig ausfallen,
dann kann man laut
dieser Anleitung
versuchen das RAID wieder zu starten:
mdadm --assemble --force ...
Etwas gefährlicher klingt schon
diese Anleitung.
Sollte man einmal in einem RAID1 aus 5 Platten zwei wegen Defekt
entfernen und dann das RAID1 aber nur noch mit 3 Platten
weiterlaufen lassen wollen, dann sieht das ewtas unschön aus, denn
man sieht, dass 2 Platten "fehlen": Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 34 1 active sync /dev/sdc2
2 0 0 2 removed
3 0 0 3 removed
4 8 18 4 active sync /dev/sdb2
Diese "removed"-Zeilen bekommt man dann ganz einfach so weg:
mdadm /dev/md0 --grow --raid-devices=3
Wie man ein RAID der Version 0.9 in eine höhere Version umwandelt,
um Platten größer 2TB nutzen zu können, ist in
c't 6/2013 S. 184
beschrieben.
Bevor man sich erhöhte Ausfall-Wahrscheinlichkeit durch RAID0 antut,
sollte man darüber nachdenken die einzelnen Platten durch
mhddfs (siehe auch:
Wiki und
README)
zu verbinden. Das ist im Prinzip ein RAID0 auf logischer Ebene.
Für Grub und die /etc/fstab sollte man statt Gerätenamen besser
UUIDs verwenden. Diese kann man so herausfinden:
lsblk -no NAME,UUID /dev/sda2
# oder
blkid /dev/sda2
Sollte man ein BIOS-RAID/HW-RAID ansprechen wollen, weil z.B. der
PC, in dem das RAID eingrichtet wurde nicht mehr "lebt", äußert sich
das zumeist so, dass der mount Befehl nur etwas
bzgl. jmicron_raid_member behauptet.
Das kann man aber so ansprechen:
emerge -avt sys-fs/dmraid
dmraid -r
dmraid -ay
Wenn man von einem RAID aus sda und sdb bootet, dann kann es
vorkommen, dass sich z.B. sda nicht mehr meldet und das RAID beim
booten in zwei eigenständige Teile "zerfällt".
Dann stellt sich die Frage: Wie kann ich im laufenden System sda (von
der gebootet wurde) quasi so entfernen, dass beim nächsten Booten
von sdb gebootet wird?
Beispiel:
sda war ausgefallen und ist jetzt wieder da, bzw. das System hat von
sda gebootet.
Auf sda3 ist das ROOT Filesystem ("/").
Mit fdisk die ROOT Partition löschen:
/dev/sda3 17188864 115755007 98566144 47G fd Linux raid
autodetect
und booten.
Dann die Partition wieder anlegen und RAID Reste löschen:
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sda2
Dann die frischen Partitionen wieder dazunehmen:
mdadm /dev/md123 --add /dev/sda1
mdadm /dev/md125 --add /dev/sda2
mdadm /dev/md126 --add /dev/sda3
Booten und fertig!
Typischer Fall: Eine Festplatte (sdz) ist defekt und muss getauscht
werden.
mdadm /dev/md124 --fail /dev/sdz1
mdadm /dev/md124 --remove /dev/sdz1
mdadm --zero-superblock /dev/sdz1
# Defekte Platte löschen:
# dd if=/dev/zero of=/dev/sdz1
# Neue einbauen, Partition anlegen (GTP, Type "Linux RAID"), dann:
mdadm /dev/md124 --add /dev/sdz1
Arch RAID Grundlagen
Achtung: Da selbst angeblich gleich große Platten
unterschiedlicher Hersteller leicht unterschiedliche Kapazität
aufweisen können, sollte man für die RAID-Partition nie 100% der
Größe nutzen, sondern ca. 100 MB am Ende leerlassen.
Als Partitionstabelle sollte man bei Platten größer 2TB immer GPT
nutzen.
Als Partitionstyp ist "Linux RAID" zu wählen.
Vergrößern eines RAID:
Arch - RAID - Increasing size of a RAID volume
Eine Disk (das Device!) kann man aus dem laufenden Linux so entfernen:
echo 1 > /sys/block/sdX/device/delete
Wieder sichtbar machen, geht dann nur durch einen Rescan:
echo '- - -' > /sys/class/scsi_host/host0/scan
RAID Größe erweitern:
Beispiel: RAID besteht aus einer 3TB (sdc) und einer 4TB (sdd) Platte.
Auf der 3TB Platte sind aber nur 2TB für das RAID genutzt.
Jetzt soll das restliche 1 TB ebenfalls genutzt werden.
Schritte:
Die zu kleine Komponente entfernen:
mdadm /dev/md124 --fail /dev/sdc1 --remove /dev/sdc1
mdadm --zero-superblock /dev/sdc1
Dann mit fdisk die Partition neu anlegen bzw. vergrößern.
Danach wieder dem RAID hinzufügen:
mdadm /dev/md124 --add /dev/sdc1
Nach der RAID Synchronisation muss man noch das RAID erweitern:
mdadm --detail /dev/md124 | grep -e "Array Size" -e "Dev Size"
mdadm /dev/md124 --grow -z max
mdadm --detail /dev/md124 | grep -e "Array Size" -e "Dev Size"
Dann noch das Filesystem erweitern:
resize2fs /dev/md124
Regelmäßige Wartung:
Man sollte das RAID Array regelmäßig auf Lesbarkeit prüfen.
Siehe: Arch
- RAID - Scrubbing
Z.B.:
echo check > /sys/block/md0/md/sync_action
Fortschritt beobachten:
watch cat /proc/mdstat
Es wird normalerweise in /usr/local/samba/ installiert.
cd source
./configure --with-smbmount
make
make smbwrapper
make install
cp bin/smbsh bin/smbwrapper.so /usr/local/samba/bin
Um seinen Rechner als Samba-Client in ein NT-Netz zu integrieren und
sich auch an einem WINS-Server zu melden muß man in
/etc/smb.conf folgendes eintragen:
workgroup = NT-DOMÄNENNAME
netbios name = RECHNERNAME
security = domain
encrypt passwords = yes
wins server = NAME_DES_WINS_SERVERS
und in /etc/rc.config START_SMB="yes"
Ein Verzeichnis kann man so mounten:
smbmount '\\ntserver\sharename' /mnt/sonstwas -ousername=meinlogin,password=meinpasswort
Das NT-Kennwort kann man so ändern:
smbpasswd -D 3 -r name_des_NT_PDC -U mein_login_name
Man kann sich auch sehr schön mit testparm die aktiven
Parameter von Samba anzeigen lassen.
Beispiel für Verzeichnisse freigeben:
[global]
workgroup = SERVER
security = user
encrypt passwords = yes
[fotos]
comment = Fotos
path = /fotos
valid users = steffi
public = no
writable = no
printable = no
[audio]
comment = Audio
path = /audio
valid users = steffi
public = no
writable = no
printable = no
und dann noch mit smbpasswd -a username ein Kennwort setzen
für den Benutzer, der darauf zugreifen darf.
Man sollte nur den Kernel-NFS-Dämon benutzen, da nur dieser
weiterentwickelt wird.
Verzeichnisse werden durch /etc/exports exportiert:
/verzeichnis host.domain.com(optionen) host2(optionen)
Bei den Rechnernamen sind "*" und "?" als Joker erlaubt.
Mit showmount -a bzw. kshowmount kann man sich
die gerade im Zugriff befindlichen Verzeichnisse anschauen.
Wenn Root von Client auch auf dem Server Root sein soll, dann muß
man die Option "no_root_squash" verwenden.
Beim Kernel-NFS darf die Optionenliste keine Leerzeichen
enthalten!
Beim Mounten gibt es noch die Optionen "hard", "soft", "lock" und
"nolock". Typischerweiser verwendet man "rw,soft,nosuid".
Seit Kernel 2.2 ist als Automounter das "autofs" im Kernel. Man
sollte wegen diverser Probleme nicht den BSD-Automounter (amd)
benutzen, sondern lieber autofs.
Zum Start muß man in /etc/rc.config die Variable
START_AUTOFS auf yes setzen.
In die zentrale Konfigurationsdatei /etc/auto.master muß
man die Mountpoints und die Map-Dateien eintragen, z.B.:
/mount /etc/auto.mount
Wenn man die /etc/auto.master ändert, dann muß man autofs
neustarten oder mit "reload" auffrischen. Die Map-Dateien kann man
im laufenden Betrieb ändern.
In der Map-Datei wird zeilenweise ein Unterverzeichnis eingetragen,
das überwacht werden soll, z.B.:
cdrom -ro :/dev/cdrom
nfshome -rw,soft server:/export/home
floppy -fstype=auto,nosuid :/dev/fd0
Bei der "auto"-Option sucht Linux selbst ein passendes Filesystem
nach der Liste in /etc/filesystems.
Als Besonderheit wird auch noch ein solcher Konstrukt
unterstützt:
* -rw,noduid &:/transfer
Das "&" steht für jeweils aktuellen Wert von "*". So kann man sich
leicht Transfer-Verzeichnisse von anderen Rechnern mounten.
Wenn man sich mit (trotz?) PAM als Root per rsh einloggen will, so
muß man in /etc/pam.d/rlogin die Zeile
auth required /lib/security/pam_securetty.so
auskommentieren. Man öffnet damit allerdings ein paar "Scheunentore"
bzgl. Sicherheit. Besser ist gleich die Verwendung von ssh.
Einziges Argument für die r-Dienste ist die Performance. Auf alten
Rechnern ist ssh gerade beim Datentransfer mit scp unerträglich
langsam.
Für den rsh-Dienst braucht es aber z.B. bei SuSe 9.0 noch etwas
mehr:
rpm -ihv /cdrom/suse/i586/xinetd-2.3.12-27.i586.rpm /cdrom/suse/i586/tcpd-7.6-608.i586.rpm
chkconfig rsh on
chkconfig rlogin on
chkconfig xinetd on
rcxinetd start
und dann natürlich eine ~/.rhosts anlegen.
Am besten das
IP-Masquerade-HOWTO
lesen.
Kurzfassung für Kernel 2.2:
Das muß alles in den Kernel (2.2.x):
* Networking support (CONFIG_NET)
* Packet socket (CONFIG_PACKET)
* Kernel/User netlink socket (CONFIG_NETLINK)
??? * Sysctl support (CONFIG_SYSCTL)
* Network firewalls (CONFIG_FIREWALL)
* Socket Filtering (CONFIG_FILTER)
* Unix domain sockets (CONFIG_UNIX)
* TCP/IP networking (CONFIG_INET)
* IP: advanced router (CONFIG_IP_ADVANCED_ROUTER)
* IP: verbose route monitoring (CONFIG_IP_ROUTE_VERBOSE)
* IP: firewalling (CONFIG_IP_FIREWALL)
* IP: firewall packet netlink device (CONFIG_IP_FIREWALL_NETLINK)
* IP: masquerading (CONFIG_IP_MASQUERADE)
* IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP)
* IP: masquerading special modules support (CONFIG_IP_MASQUERADE_MOD)
* IP: ipportfw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPPORTFW)
* IP: ip fwmark masq-forwarding support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_MFW)
* IP: optimize as router not host (CONFIG_IP_ROUTER)
* IP: TCP syncookie support (not enabled per default) (CONFIG_SYN_COOKIES)
* IP: Allow large windows (not recommended if <16Mb of memory) * (CONFIG_SKB_LARGE)
* Network device support (CONFIG_NETDEVICES)
* Dummy net driver support (CONFIG_DUMMY)
* /proc filesystem support (CONFIG_PROC_FS)
Dann IP-Forwarding einschalten:
echo "1">/proc/sys/net/ipv4/ip_forward
Und das Masquerading aktivieren:
ipchains -v -P forward DENY
ipchains -v -A forward -p tcp -s 10.0.0.0/255.0.0.0 -j MASQ
ipchains -v -A forward -p udp -s 10.0.0.0/255.0.0.0 -j MASQ
ipchains -v -A forward -p icmp -s 10.0.0.0/255.0.0.0 -j MASQ
oder einfacher:
ipchains -A forward -j MASQ -i ppp0
wobei ppp0 das Interface ist, über das die Internetverbindung
besteht. Wenn man das Interface auch noch weglässt, dann wird alles
überallhin ge-forwarded.
Das sicherste ist
ipchains -v -A forward -s 10.3.3.2 -j MASQ
Hier werden nur Pakete vom Rechner 10.3.3.2 weitergeleitet.
Dann muß man nur noch auf dem Client einen Nameserver in
/etc/resolv.conf eintragen und einen Route legen:
route add default gw mein_ip_forwarding_rechner
Mit Kernel 2.4 oder 2.6 und iptables:
Im Kernel braucht man mindestens folgendes:
CONFIG_NETFILTER=y
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_FTP=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_NAT_FTP=m
Und dann:
modprobe iptable_nat
# In the NAT table (-t nat), Append a rule (-A) after routing
# (POSTROUTING) for all packets going out ppp0 (-o ppp0) which says
# to MASQUERADE the connection (-j MASQUERADE).
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Turn on IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Eine ganz einfache Firewall für den Heimgrbrauch ist schnell
eingrichtet. Dazu braucht man nicht einmal separate Hardware.
Es kann auch der Heimserver im Keller ins Internet gehen und
gleichzeitig Firewall spielen. Das ist natürlich nichts für die ganz
Paranoiden, aber immernoch besser als ins Internet ohne
Firewall.
Im Kernel einfach das ganze Netfilter-System aktivieren und alles
als Modul bauen. Die passenden Module werden automatisch geladen.
Hier ist ein sehr einfaches Firewall-Script:
iptables -F
iptables -A INPUT -i ppp0 -p tcp --syn -j LOG
iptables -A INPUT -i ppp0 -p tcp --syn -j DROP
In Zeile 1 werden alle Regeln gelöscht.
In Zeile 2 wird eine Regel erstellt, die alle eingehenden Pakete auf
ppp0 im Syslog protokolliert.
In Zeile 3 werden alle über ppp0 eingehenden Pakete verworfen.
Das "--syn" besagt dabei aber, daß nur die Pakete von Verbindungen
verworfen werden, die nicht von diesem Rechner initiiert
wurden. Ohne "--syn" würden alle eingehenden Pakete verworfen und
man könnte gar keine Daten mehr empfangen.
Diese Firewall blockt also alle von außen über ppp0 initiieren
Verbindungen, d.h. unser Heimserver bietet damit seine Dienste nur
"nach innen" und nicht dem ganzen Internet an.
Wenn doch den einen oder anderen Service vom Internet zugänglich
machen will, dann z.B. so für ssh:
iptables -A INPUT -i ppp0 -p tcp --syn --destination-port 22 -j
ACCEPT
Das Ganze würde dann so aussehen:
iptables -F
iptables -A INPUT -i ppp0 -p tcp --syn --destination-port 22 -j
ACCEPT
iptables -A INPUT -i ppp0 -p tcp --syn -j LOG
iptables -A INPUT -i ppp0 -p tcp --syn -j DROP
Am besten packt man das in ein Script und startet dieses Script
z.B. unter Gentoo in /etc/conf.d/local.start.
Und für die, die etwas Grafisches wollen:
Die meisten Router haben bereits eine Firewall eingebaut, z.B. die
FritzBox. Bei dieser kann man auch eine undokumentierte Funktion
nutzen, um den Netzwerk-Traffic mitzuschneiden, wie bei
Tippscout
beschrieben: Man ruft dazu einfach die FritzBox mit diesem URL auf:
http://fritz.box/html/capture.html.
Die FritzBox kann aber im Prinzip alles mitschneiden. Dazu ruft man
http://fritz.box/capture.lua auf.
Da ich nur ein Unterverzeichnis verschlüsseln möchte, fiel meine
Wahl auf EncFS.
Das ist ganz leicht einzurichten:
emerge -avt encfs
modprobe fuse
mkdir -p /home/loescher/test-crypt
mkdir -p /home/loescher/test
encfs /home/loescher/test-crypt /home/loescher/test
mkdir /home/loescher/test/erstes_verzeichnis
cp /etc/* /home/loescher/test/erstes_verzeichnis
fusermount -u /home/loescher/test
Ab Kernel 2.6 ist bereits alles für Software-Suspend enthalten.
Hier gibt es
ein HOWTO.
-
make xconfig:
Software Suspend aktivieren.
-
Kernel bauen.
-
Als Boot-Parameter das Swap-Device angeben:
resume=/dev/hda3
Wenn man ohne Resume hochfahren will, dann braucht man den
Parameter noresume
-
Zum Suspenden ist das hibernate-script am besten. Unter
Gentoo installiert man es einfach mit:
emerge -avt hibernate-script
-
Den Suspend startet man dann einfach mit: hibernate
Gentoo widme ich gerne eine eigene Seite.
WLAN Reichweite erhöhen
Die optimale Methode, die WLAN Reichweite zu erhöhen ist ein zweiter
Router/Accesspoint, der mit dem ersten per Kabel (oder Powerline)
verbunden ist.
Folgende Einstellungen muß man auf dem zweiten Router vornehmen:
-
IP Adresse auf eine andere als die des ersten legen, z.B. 192.168.178.3
-
DHCP deaktivieren und als DNS-Server die IP-Adresse vom ersten Router angeben
-
Firewall deaktivieren
-
UPnP deaktivieren
-
Port-Weiterleitungen deaktivieren
Auf allen Routern / Access-Points gleiche WLAN-Einstellungen vornehmen:
-
gleiche SSID (WLAN-Name)
-
gleiche Verschlüsselung (WPA2-PSK)
-
gleiches WLAN-Passwort
-
WLAN-Funkkanäle auf "Auto" oder "5er-Abstand", also Kanal 1, 6 oder 11
Allgemeine WLAN Einrichtung
Ein paar Notizen, um einen "Netgear MA111 802.11b Wireless USB
Adapter" in ein WLAN zu verbinden.
Als Software/Treiber braucht man nur das:
echo "net-wireless/linux-wlan-ng ~x86" >> /etc/portage/package.keywords
echo "net-wireless/linux-wlan-ng-modules ~x86" >> /etc/portage/package.keywords
echo "net-wireless/linux-wlan-ng-utils ~x86" >> /etc/portage/package.keywords
echo "net-wireless/linux-wlan-ng-firmware ~x86" >> /etc/portage/package.keywords
emerge -avt linux-wlan-ng
Allgemein:
modprobe prism2_pci oder prism2_usb/prism2_plx
wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
wlanctl-ng wlan0 lnxreq_autojoin ssid=<deine_SSID_hier_eintragen> authtype=opensystem
ifconfig wlan0 <deine_IP> netmask <deine_Netzmaske> broadcast <deine_Broadcast>
route add default gw <dein_Gateway>
Konkret:
modprobe prism2_usb prism2_doreset=1
wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
wlanctl-ng wlan0 lnxreq_autojoin ssid=SAGICHNICHT
authtype=opensystem
Dann enteweder
pump -i wlan0
oder:
dhcpcd -no wlan0
Um sein (oder andere) Netzwerke zu finden, kann man kismet
nutzen.
Ein modernerer Stick, der unter Linux funktioniert ist der Longshine
LCS-8131G3. Den Treiber gibt es unter
http://zd1211.ath.cx/.
Ab Kernel 2.6.18 ist der Treiber bereits im enthalten.
Zum Aktivieren muss man vorher noch das im Kernel aktivieren:
Networking
---> Wireless
---> ---> Generic IEEE 802.11 Networking Stack
---> ---> ---> Software MAC add-on to the IEEE 802.11 networking stack
Ausserdem braucht man für Verschlüsselung das unter Wireless:
IEEE 802.11i CCMP support
IEEE 802.11i TKIP encryption
Dann braucht man nur noch die Firmware:
emerge -avt zd1211-firmware
Man kann für ältere Kernels auch den separaten Treiber
verwenden:
echo "net-wireless/zd1211 ~x86" >> /etc/portage/package.keywords
emerge -avt zd1211
emerge -avt zd1211-firmware
Die Wireloess-Tools braucht man immer:
emerge -avt wireless-tools
Ein erster Test:
iwlist scan
Wenn das einen Fehler liefert, dann bitte prüfen, ob der Treiber den
Chipsatz richtig erkannt hat (Syslog) und ob ggf. die Firmware
korrekt geladen wurde!
Das iwlist sollte entweder anzeigen, dass keine WLANs in Reichweite
sind, oder die gefundenen WLANs.
Manchmal ist auch noch ein
ifconfig wlan0 up
vor dem iwlist scan nötig!
Unverschlüsseltes WLAN (zum ersten Test) einrichten:
iwlist wlan0 scan
iwconfig wlan0 mode Managed essid 'LoescherWLAN' ap 00:13:07:F4:EA:1F
ifconfig wlan0 192.168.178.30
dhcpcd -dno wlan0
oder statt dem DHCP:
ifconfig wlan0 mein_rechnername
route add default gw 192.168.178.1
WPA einrichten:
emerge -avt net-wireless/wpa_supplicant
Dann in /etc/conf.d/net:
modules=( "wpa_supplicant" )
wpa_supplicant_wlan0="-Dzd1211rw"
Dan in /etc/wpa_supplicant/wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="my_WLAN_ssid"
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
psk=82d3b8e...
}
Den PSK-Key konvertiert man von ASCII in Hex indem man folgendem
Kommando die geheime ASCII-Passphrase des Access-Points eingibt:
wpa_passphrase my_WLAN_ssid
Dann kann man den wpa_supplicant starten:
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
Mit "-d" werden Debug-Infos erzeugt.
Um das dauerhaft einzurichten ist das nötig:
ln -s /etc/init.d/net.lo /etc/init.d/net.wlan0
rc-update add net.wlan0 default
/etc/init.d/net.wlan0 start
Wenn man öfters zwischen WLAN und Ethernet hin- und herwechselt,
sich aber dennoch im gleichen Netz befindet, dann kann man die
beiden Interfaces zu einem zusammenfassen (Bonding) und damit immer
das nutzen, das gerade verfügbar ist:
In /etc/conf.d/net das eintragen:
# Siehe: /usr/share/doc/netifrc-*/net.example.bz2
dns_domain="sl.de"
dns_servers="192.168.178.1"
# Keine IP-Konfiguration fuer enp0s25
config_enp0s25="null"
modules="wpa_supplicant"
# zum Debuggen: -dd
wpa_supplicant_wls1="-Dwext -b bond0"
# Keine IP-Konfiguration fuer wlan0
config_wls1="null"
# Das bond0 besteht aus enp0s25 und wls1
slaves_bond0="enp0s25 wls1"
# Feste IP-Konfiguration des bond0
config_bond0="192.168.178.211 broadcast 192.168.178.255 netmask 255.255.255.0"
# enp0s25 wird von bond0 benoetigt und soll vorher gestartet werden
RC_NEED_bond0="net.enp0s25"
# Default Route ueber bond0
routes_bond0="default via 192.168.178.1"
Man sollte bedenken, dass für das WLAN die MAC-Adresse von eth0
verwendet wird. Also ggf. auf dem WLAN-Router freischalten!
Dann noch den Start eintragen und starten:
rc-update delete net.lo
rc-update add net.wls1 default
rc-update add net.bond0 default
/etc/init.d/net.bond0 start
/etc/init.d/net.wls1 start
Eine Alternative dazu ist der NetworkManager.
Im Ubuntu Wiki über den NetworkManager
ist sehr schön beschrieben, wie man den NetworkManager auf der
Kommandozeile einrichtet.
So z.B. ein WLAN:
nmcli connection add ifname wlan0 type wifi ssid MY_WLAN_SSID
nmcli connection modify wifi-wlan0 mode infrastructure
nmcli connection modify wifi-wlan0 wifi-sec.key-mgmt wpa-psk
nmcli connection modify wifi-wlan0 wifi-sec.psk MY_SECRET_WLAN_KEY
nmcli connection up wifi-wlan0
Wenn man mit vi in der Konfiguration unter
/etc/NetworkManager/system-connections/ etwas ändert, dann
braucht man noch ein
nmcli connection reload
Bonding richtet man laut
Network Bonding
wie folgt ein.
Achtung: Das Bond Device darf nicht "bond0" heissen, da es
das schon unter /proc/net/bonding/ gibt!
Also:
nmcli connection add type bond ifname bond333
nmcli con add type ethernet ifname enp0s25 master bond333
nmcli con add type wifi ssid LoescherWLAN ifname wls1 master bond333
nmcli connection modify bond-slave-wls1 mode infrastructure
nmcli connection modify bond-slave-wls1 wifi-sec.key-mgmt wpa-psk
nmcli connection modify bond-slave-wls1 wifi-sec.psk MY_SECRET_WLAN_KEY
nmcli connection up bond-slave-enp0s25
nmcli connection up bond-slave-wls1
Empfehlenswert ist es (allein schon wegen der besseren Performance)
OpenVPN einzusetzen, es kann aber auch Gründe
geben, das Ganze nur mit OpenSSH zu implementieren.
Für VPN mit OpenVPN siehe
nachfolgenden Abschnitt...
Wem das allerdings zu kompliziert ist, der kann es auch per SSH
machen:
Dazu ist einmalig folgendes erforderlich:
Auf RECHNER_A:
md ~/vpn
ssh-keygen -t rsa -f ~/vpn/id_rsa-vpn
scp ~/vpn/id_rsa-vpn.pub RECHNER_B:~/.ssh/
Ein Skript /root/bin/start_vpn anlegen mit diesem Inhalt:
#!/bin/bash
modprobe tun
sleep 2
ssh -f -x -w 0:0 -p 2222 -i ~/vpn/id_rsa-vpn RECHNER_B /root/bin/start_vpn
sleep 2
ifconfig tun0 10.10.10.1 pointopoint 10.10.10.2 netmask 255.255.255.252
sleep 2
route add -host RECHNER_B gw 10.10.10.2 tun0
sleep 2
echo 1 > /proc/sys/net/ipv4/ip_forward
sleep 2
Auf RECHNER_B:
cat ~/.ssh/id_rsa-vpn.pub >> ~/.ssh/authorized_keys
vi ~/.ssh/authorized_keys
und das vor dem Key einfügen:
command="/root/bin/start_vpn"
Ein Skript /root/bin/start_vpn anlegen mit diesem Inhalt:
modprobe tun
ifconfig tun0 10.10.10.2 pointopoint 10.10.10.1 netmask 255.255.255.252
route add -host RECHNER_A gw 10.10.10.1 tun0
echo 1 > /proc/sys/net/ipv4/ip_forward
Start einer SSH auf einem speziellen Port mit speziellen Optionen:
/usr/sbin/sshd -p 2222 -o 'PasswordAuthentication no' -o 'PermitRootLogin forced-commands-only' -o 'ChallengeResponseAuthentication no' -o 'PermitTunnel yes' -o 'RSAAuthentication yes' -o 'PubkeyAuthentication yes'
Für den Verbindungsaufbau ist dann nur noch auf RECHNER_A ein
start_vpn nötig.
Für VPN mit OpenVPN gibt es
diese sehr schöne Anleitung.
Im Beispiel hat RECHNER_A die virtuelle IP 10.3.3.1 und RECHNER_B
die 10.3.3.2.
emerge -avt openvpn
cd /etc/openvpn
openvpn --genkey --secret geheim.key
scp geheim.key RECHNER_B:/etc/openpvn/
Eine /etc/openvpn/openvpn.conf anlegen:dev tun
remote RECHNER_B.dyndns.org
# ifconfig EIGENE_VIRTUELLE_ADRESSE GEGENSEITE
ifconfig 10.3.3.1 10.3.3.2
secret geheim.key
port 1194
verb 1
keepalive 30 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
log-append /var/log/openvpn.log
Auf RECHNER_B sind lediglich die beiden IP-Adressen vertauscht und
natürlich remote RECHNER_A.dyndns.org.
Bei Problemen sollte man mit verb 4 starten.
Auf den beiden Routern muß man noch ein Portforwarding von Port 1194
UDP einrichten.
/etc/init.d/openvpn start
rc-update add openvpn default
Achtung: Diese Anleitung ist noch unfertig!
http://www.gentoo.org/doc/en/uml.xml
emerge -avt sys-apps/usermode-utilities
ACCEPT_KEYWORDS=~x86 emerge -avt sys-kernel/usermode-sources
modprobe tun
echo 1 > /proc/sys/net/ipv4/ip_forward
Root-Filesystem anlegen:
md /xtemp/uml
cd /xtemp/uml
dd if=/dev/zero of=swap_fs count=500 bs=1M
/sbin/mkswap -f swap_fs
dd if=/dev/zero of=root_fs seek=2048 count=1 bs=1M
/sbin/mkreiserfs -f root_fs
mount -o loop root_fs /mnt/gentoo
cd /mnt/gentoo
tar -xjpf /src/stage3-i686-2007.0.tar.bz2
cd usr
tar -xjf /src/portage-20070906.tar.bz2
mount -t proc none /mnt/gentoo/proc
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
nano /etc/fstab
/dev/ubda / reiserfs noatime 0 1
/dev/ubdb none swap sw 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec
passwd
rc-update del consolefont boot
rc-update del keymaps boot
UML-Kernel:
cd /srv/aegis/src/uml-linux
make menuconfig ARCH=um
make linux ARCH=um
cp linux /xtemp/uml/
Start:
cd /xtemp/uml
./linux ubd0=root_fs ubd1=swap_fs eth0=tuntap,,,192.168.178.209
Im UML:
ifconfig eth0 192.168.178.210
ping 192.168.178.209
# /etc/resolv.conf anlegen
route add default gw 192.168.178.1
ping www.heise.de
Nun zur Firewall.
Siehe: ~/bin/firewall-uml
noch offen: iptables forward-Regel erstellen und "swapoff -a" im Gast
bleibt hängen.
UnionFS-Fuse bietet sich an, um ohne Root-Privilegien ein Union-FS
aufzusetzen:
emerge -avt unionfs-fuse
cd /tmp
mkdir readonly writeable mountpoint
echo "Hallo" > readonly/test
unionfs -o cow /tmp/writeable=RW:/tmp/readonly=RO /tmp/mountpoint
echo "neuer Text" >> mountpoint/test
echo "neue Datei" > mountpoint/test2
fusermount -u /tmp/mountpoint
ls -al readonly writeable
Für den Kernel gibt es auch noch das Union-FS
Aufs2.
Am einfachsten verwendet man
ReadyMedia
(MiniDLNA):
emerge -avt net-misc/minidlna
vi /etc/minidlna.conf
/etc/init.d/minidlna start
rc-update add minidlna default
Alternativ dazu:
Mediatomb:
emerge -avt mediatomb
rc-update add mediatomb default
/etc/init.d/mediatomb start
Dann im Browser
http://localhost:49152/
ansteuern und Mediatomb konfigurieren.
Weitere Infos und Software:
Als UPnP-Client kann man z.B. den Mediaplayer aus Wind*ws Vista oder 7
hernehmen.
Ein super Standalone-Gerät für Audio-Streaming ist der
Terratec Noxon iRadio 300.
Man sollte von Zeit zu Zeit seinen eigenen Internet-Anschluß nach
offenen Ports scannen.
Entweder per Internet-Service:
Oder selbst mit NMAP:
nmap -O meine_ip
nmap -sV meine_ip
nmap -sV -sU meine_ip
Laut dieser
Anleitung benötigt die USV "Eaton 3S" den Treiber
usbhid-ups.
Kurzfassung folgender Anleitungen:
man - usbhid-ups
NUT Anleitung
Gentoo - NUT
echo "sys-power/nut usb ups_drivers_usbhid-ups" >> /etc/portage/package.use
emerge -avt sys-power/nut
usermod -a -G usb nut
cd /etc/nut
nut.conf:
MODE=standalone
ups.conf:
[Eaton3S]
driver=usbhid-ups
port=auto
upsd.users:
[monuser]
password = geheim
upsmon master
upsmon.conf:
MONITOR Eaton3S@localhost 1 monuser geheim master
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
NOTIFYCMD "/usr/sl/nut_notify"
/bin/ls -1 nut.conf ups.conf upsd.users upsmon.conf >> CHANGED-FILES
rc-update add upsdrv default
rc-update add upsd default
rc-update add upsmon default
service upsdrv start
service upsd start
service upsmon start
upsc Eaton3S
Shinobi kann als Netzwerk Videorekorder für Überwachungskameras
ähnlich dem Zoneminder
verwendet werden.
Installation
nach Arch Linux -
Shinobi:
yay -S shinobi-git
pacman -S mariadb
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mariadb
mariadb
# enter: CREATE DATABASE ccio; flush privileges; \q
mariadb < /usr/share/shinobi/sql/user.sql
mkdir /usr/share/shinobi/videos2
chown shinobi /usr/share/shinobi/videos2
# configure the files under "/etc/shinobi" accordingly, e.g.:
# can change your super admin password in /etc/shinobi/super.json with a new one generated with:
echo -n PASSWORD | md5sum
systemctl start shinobi.target
# access:
http://127.0.0.1:8080/super
# create new account:
-> Accounts -> +Add
# add camera:
> ONVIF Scanner
Ergebnis: Shinobi läuft, aber irgendwie bekomme ich es nicht hin,
dass nur bei Bewegungserkennung das Video aufgezeichnet wird.
Erste Tests mit IPCam auf Android:
ffplay http://ip.des.smartphones:8080/video
ffmpeg -i http://ip.des.smartphones:8080/video -acodec none -vcodec copy test.mp4
# oder gleich als richtiges h264:
ffmpeg -i http://ip.des.smartphones:8080/video -y -c:v libx264 -acodec none
-profile:v baseline -level 3.0 -f mp4 -s 640x368 -x264opts
nocabac:level_idc=30:bframes=0:global_header:threads=auto:subq=1:frameref=6:partitions=all:trellis=1:chroma_me:me=dia:bitrate=500
test.mp4
Dann laut Objekte mit Motion per Video überwachen:
yay -S motionplus
vi /etc/motionplus/ipwebcam.conf
> device_name IP Webcam
> netcam_url http://192.168.178.32:8080/video
vi /etc/motionplus/motionplus.conf
> target_dir /tmp
> webcontrol_localhost off
> camera /etc/motionplus/ipwebcam.conf
-
Logilink PC0028 mit Chipsatz VIA VT6212L: wird von Linux
erkannt, aber leider keine daran angeschlossenen Geräte.
-
D-Link DU-520 mit Chipsatz NEC D720101GJ: funktioniert einwandfrei!
Siehe auch:
Ubuntu Zertifizierung
Da in meinem alten Digitainer nun zum wiederholten mal das Netzteil
"Medion Digitainer Fortron ATX-Netzteil 150 Watt FSP150-60MDN"
defekt war, habe ich zu einem anderen (hoffentlich besserem) Modell
gegriffen:
Listan Be Quiet!
BN220 Pure Power L8 300Watt
In das Digitainer-Gehäuse passt ein ATX-Netzteil mit diesen maximalen
Maßen hinein:
Breite: 15cm
Höhe: 12,5cm
Tiefe: 16,5cm