2001-02-14
2001-02-15
LILO kann nicht booten, wenn Kern (vmlinuz) in
einer Partition oberhalb 1024 Zylinder liegt.
Lösung, z.B.
Bootdiskette erzeugen, die Kern direkt enthält: (siehe 4.6 Booten und
Bootmanager)
CA10: # /sbin/badblocks –v /dev/fd0 1440
CA10: # dd if=Ihr_Kernel of=/dev/fd0
bs=18k
CA10:
# rdev /dev/fd0 Ihre_Root_Partition
CA10:
# rdev –R /dev/fd0 1
Anmelden,
virtuelle Konsolen, etc.
·
Zugang zu UNIX
nur nach Anmeldung Þgültiger
Benutzer und Kennwort
·
Warum: Multi-User
- Betriebssystem muß jeden Anwender identifizieren können
klassische Anwendung:
Konsole
Terminals
Hugo,
Erwin, Meier, root melden sich am UNIX-Rechner an; diese können gleichzeitig
mit gleichen oder unterschiedlichen Programmen arbeiten.
unter Linux: virtuelle
Terminals
Alt + F1
Alt + F2 Alt + F2
virtuelle Terminals
Besonderheiten
der Konsole (<Alt> + <F1>)
Ausgabe
von Fehler- und Kontrollmeldungen (Systemmeldungen)
einige Befehle:
tty "An welchem
Terminal bin ich angemeldet?"
z.B. /dev/tty1
logout Abmelden von einem
Terminal
auch: exit
<Strg> + D (EOF)
pwd print working
directory
(zeige das aktuelle
Arbeitsverzeichnis an)
cd change directory
wechsle das aktuelle Verzeichnis
(wie unter DOS)
cd / (Hauptverzeichnis)
cd /tmp (temporäres Verzeichnis)
cd .. (übergeordnetes Verzeichnis)
ls List
zeige den Inhalt des aktuellen
Verzeichnisses an
ls-l long (Listenform)
ls / (Verzeichnis /)
ls /dev (Verzeichnis /dev)
ls --help zeigt Optionen an (fast
bei jedem Befehl; manchmal auch -h --h)
ls --help | more zeigt Liste in "More"
(Programm, das Datenstrom seitenweise anzeigt)
Einfacher
Anwendungsfall
·
Erstellen einer
Ablage für eine neue Notiz
·
eine Notiz
erzeugen
·
die erstellte
Notiz nochmals anzeigen
·
eine Kopie der
Notiz erzeugen
·
die Notiz löschen
(Anmeldung am System,
root)
cd /root in
Verzeichnis /root wechseln (=Arbeitsverzeichnis
=
Heimatverzeichnis des Benutzers root)
mkdir ablage make dir;
erstellt Verzeichnis "ablage"
ls ablage
cd ablage
ls leer
-Editor verwenden: vi, emacs, joe, pico, ...
vi notiz Startet
den Editor "vi" mit der Datei "notiz"
-Eingabe von Text-
i insert
(einfügen)
-"Aller Anfang ist schwer.
Aber Übung macht den Meister."-
<ESC> Verlassen
des Eingabemodus
-Speichern der Datei-
ZZ speichern
und Editor verlassen
:w speichern
-Verlassen des Editors-
:q
-Speichern und Verlassen-
:wq
-Verlassen ohne Speichern-
:q!
-Editor startet, ohne Datei-
vi
-"Speichern unter..."-
:w notiz
-Bewegen im Text-
hjkl
-Nochmals anzeigen-
vi notiz
cat notiz liest
von stdin (=Tastatur) und schreibt auf stdout
(=Bildschirm) bis EOF kommt (<Strg> + D)
-Kopie erzeugen-
cp notiz notiz.kopie Kopiert von Quelle nach Ziel
cat notiz.kopie ansehen
ls notiz
und notiz.kopie
rm notiz remove
(löscht die angegebene Datei)
rm /root/ablage/notiz (absolute Pfadangabe)
ls notiz.kopie
cp /root/ablage/notiz
/tmp/hugo notiz als hugo in tmp gespeichert
mv move
(bewegen, umbenennen)
mv notiz erwin benennt notiz
in erwin um
-Ordner löschen-
es existiere
/root/frank/test
aktuelles Verzeichnis:
/root/frank
rm -r test löscht
Ordner "test" und alle untergeordneten
Objekte
-r: recursive
rm -r / NICHT
machen! Löscht alle Dateien!!!
Manual Pages
(Handbuch)
man
<Stichwort> Manual
Page zu Stichwort aufrufen (Ruft
automatisch less auf; beenden mit :q)
man cp
man ls
man mv
man vi
...
man man
man -f <Stichwort> sucht nach Stichwort und listet
gefundene Seiten (Stichwortsuche)
man -f passwd
man -k <Stichwort> sucht innerhalb der Seiten nach
Stichwort (Volltextsuche)
man -k cp
man <Sektion>
<Stichwort>
ruft Manual Page zu
Stichwort in bestimmter Sektin auf
man 1 passwd
man 5 passwd
man cp = man 1 cp (der
erste Treffer zählt)
Kapitel:
1 Befehle
(=Programme) für Benutzer
2 Systemaufrufe
der verschiedenen Bibliotheken
3 C-Bibliotheksfunktion
4 Beschreibung
von Konfigurationsdateien
5 Syntax
wichtiger Dateien
6 Beschreibung
von Spielen
7 Text,
Textformatierung
8 Befehle
des Systemverwalters
9 Linux-Kernelroutinen
n "der
Rest"
weitere Informationen
(Artikel, Bücher, FAQs, etc.)
/usr/share/doc und Unterordner
2001-02-16
2001-02-26
2001-02-27
2001-02-28
2001-03-01
2001-03-02
2001-03-05
2001-03-06
2001-03-07
2001-03-08
Läuft der cron-Daemon? Wie findet man es heraus?
ps ax | grep „cron“
hugo> ps a
… 49 großer
Prozeß
… 50 bash
… 77 ps
hugo>
renice –n 17 49 ü
hugo> renice –n –17 49 L Benutzer darf nicht verbessern!
„Uncompressing Linux...“
init
®alle weiteren Prozesse werden von init bzw. von seinen „Kindprozessen“ erzeugt
(®“was ist zu tun?“)
®Definition der Runlevel
®was ist in runlevels zu tun?
®Standard-runlevel
ÞHochlaufen des Systems (und Herunterfahren) wird allein von init gesteuert
> init <runlevel>
®geht in Runlevel <runlevel> über
0 Halt
S Single user mode
1 Multi-user ohne Netzwerk
2 Multi-user mit Netzwerk (Standard)
3 Multi-user mit Netzwerk, xdm
4 frei
5 frei
6 reboot
Beispiel:
init 0 hutdown –h now
init 6 hutdown
–r now
init S Übergang
in single user mode
> default runlevel
id:2:initdefault:
hier ist Level 2 der Standardlevel
niemals
0 oder 6 eintragen!
Achtung: /etc/inittab darf nicht zerstört werden, sonst Probleme beim Ausführen von init
In /etc/inittab ist auch festgelegt, auf welchem Terminal Anmeldung möglich ist:
> getty -programs
1:123:respawn:/sbin/mingetty tty1
2:123:respawn:/sbin/mingetty tty2
3:123:respawn:/sbin/mingetty tty3
Beispiel: Wechsel von
runlevel 2 nach runlevel 3
init 3
®init schaut in /etc/inittab nach, was zu tun ist
ÞShellskript /sbin/init.d/rc3 ist aufzurufen
a) rc führt alle Stop-Skripte des Levels 2 aus; alle Skripte, die in /sbin/init.d/rc2.d liegen und mit „K“ anfangen („K“ ®kill; alle Stopp-Skripte fangen mit K an; Zahl nach „K“ gibt Aufrufreihenfolge an)
b) rc führt alle Start-Skripte des Levels3 aus; alle Skripte, die in /sbin/init.d/rc3.d liegen und mit „S“ anfangen („S“ ®Start; sonst wie „K“)
Was passiert?
/etc/inittab wird eingelesen, auf Veränderungen geprüft und bei Bedarf entsprechende Maßnahmen gestartet (z.B. getty auf weiterer Schnittstelle starten)
Netzwerk
host (=Rechner)
mit Hostname (=Rechnername)
Netzwerkverbindung
Linux unterstützt alle gängigen Netzwerkkarten (z.B. Ethernet für lokale Netze)
Linux unterstützt alle gängigen Netzwerkprotokolle (z.B. TCP/IP, IPX, AppleTalk)
Beispiel:
TCP/IP-Netzwerkkarte mit Ethernetkarte
Voraussetzung:
o Ethernetkarte, die von Linux unterstützt wird, ist verfügbar
o Kernel muß für das zu verwendenede Netz korrekt konfiguriert sein (Standardkernel enthält Unterstützung)
o Test, ob Ethernetkarte korrekt erkannt wurde:
cat /proc/net/dev
ist Zeile „eth0“ enthalten, so wurde Karte korrekt erkannt
falls nicht:
YAST ®Administration des Systems ®Hardware in System integrieren ®Netzwerkkarte konfigurieren
Netzwerknamen wählen (z.B. eth0)
Treiber: (z.B. NE2000 (PCI))
Parameter ...
weiter
modprobe eth0 (cat /proc/net/dev)
modprobe lädt ladbare Module nach; hier: die dem Gerät eth0 zugeordneten Treiber
Þkein Neustart erforderlich
YaST hat lediglich Eintrag in /etc/modules.conf geändert (Schlüsselwert: eth0)
Konfigurationsdaten:
Rechnername: hostname
unter welchem Namen soll Rechner
angesprochen werden; eindeutig in Domain
(hier: ca10)
Konvention: kleine Buchstaben, 8 Zeichen
max.
Domainname: domainname
®Gliederung von großen Netzen
hier: ca.de
Ein Rechner wird durch Angabe seines
vollen Namens angesprochen (full qualified
name)
IP-Adresse: Class-C-Adresse, nach RFC 1597
192.168.0.10
Netzwerkmaske Subnetmask, netmask
hier: 255.255.255.0
Gatewayadresse: IP-Adresse eines Gateway-Rechners = ein
Rechner, der mit mehreren Netzwerken verbunden ist und Weiterleitung in fremde Netze realisiert
hier: <leer>
Adresse des Nameservers: Nameserver stellt Dienst bereit, mit
dem Rechnernamen in IP-Adressen
umgewandelt werden (DNS = Domain Name
Server)
hier: <leer>, nein
[0] [X] Ethernet eth0 192.168.0.10
F10 (speichern)
Hostname: ca10
Domainname: ca.de
inetd: ja
Portmap: ja
... ja
Test auf Erfolg:
ping localhost (eigene Adresse)
ping 192.168.0.10
ping 192.168.0.1 (Recardos
Rechner)
2001-03-09
eth0 nicht in /proc/net/dev enthalten:
®keine Netzwerkkarte/Treiber o.ä. Für Device eth0 vorhanden
Ursache:
Abhilfe:
nicht definiert:
YaST (Hardware integrieren)
/etc/modules.conf
Modul nicht geladen:
modprobe eth0
Hostname: ca10
eingenen Hostname ermitteln:
in YaST nachschauen
hostname (Befehl)
ping ca10
unknown host ca10
®Host ca10 ist unbekannt (TCP/IP-Protokoll)
(arbeitet mit IP-Adressen, nicht mit Hostnamen)
ÞUmstellung notwendig:
1.DNS
2.Konfigurationstabelle
/etc/hosts
Abbildung von IP-Adressen auf Rechnernamen
192.168.0.01 ca01.ca.de ca01 recardo
192.168.0.10 local host frank
192.168.0.99 ca99.ca.de ca99 dozent ameis
IP-Adresse fullqualified name hostname nicknames
/etc/host.conf
Wie erfolgt Namensauflösung?
order legt Suchreihenfolge fest
order bind,hosts erst Nameserver fragen, dann /etc/hosts
order hosts, bind erst /etc/hosts fragen, dann Nameserver
order hosts nur /etc/hosts fragen
/etc/HOSTNAME
enthält eine Zeile und zwar den Namen des Rechners (nur Host-Teil)
Arbeiten
mit Netzwerk
i.d.R. Benutzername und Kennwort
1.root muß geeignetes Kennwort haben
2.Benuter nach Bedarf einrichten (entweder kein Kennwort oder initiales Kennwort - z.B. Benutername)
Informationen
über einen Benutzer
finger <Benutzer> lokal
finger <Benutzer>@<Host> entfernt
finger ca01 Informationen über den Benutzer ca01, auf demjenigen
Rechner, auf dem finger ausgeführt wird (lokal)
finger ca01@ca10 Informationen über den Benutzer ca01 auf dem Rechner ca10
finger Liste der angemeldeten Benutzer auf dem lokalen Rechner
finger @ca10 Liste der angemeldeten Benutzer auf ca10
Fehlerfälle
connection refused/Verbindung
abgelehnt
alle Programme im Netzwerk arbeiten nach Client/Server-Prinzip, z.B. finger, ftp, telnet, rcp, rlogin, rsh, ping,...
Client Server
> finger @ca99 „fingerd“
caxx ca99
hier: finger auf caxx versucht den finger-Server auf ca99 zu erreichen; läuft dies nicht, kommt es zum Fehler (connection refused, Verbindung abgelehnt, <hängt> + Timeout,...)
Abhilfe:
fingerd starten
inetd (startet bei Bedarf notwenidge Daemons (=Server, hier z.B. fingerd))
Kontrolle:
# ps
ax | grep „inetd“
®inetd nicht enthalten initd läuft nicht
Starten:
# /usr/sbin/inetd (jedesmal nach Systemstart)
YaST Administration des Systems Netzwerk konfigurieren Netzwerkdienste konfigurieren Ja,ja,ja
Test:
finger @<sichselbst>
[...] dann fehlt nkitserv
chfn
<Benutzer>
Informationen über Benutzer verändern
lokal, root
~/.plan
Inhalt der Datei (ASCII) wird bei finger
angezeigt; jeder Benutzer kann eine derartige Datei haben; wenn diese nicht
vorhanden ist, erschent No Plan
Elektronisches
Telefonieren
talk (sprechen)
Host ca81 Host ca77
erwin otto
> talk otto@ca77 erwin@ca81 ruft...
> talk erwin@ca81
Fenster teilt sich Fenster teilt sich
der Benutzer, mit dem man sprechen will, muß angemeldet sein! (da online-Kommunikation) (mit finger erwin@ca81 testen)
Beenden von Talk: <Strg> + C
Benimm-Regel: mit „oo“ Ende beantragen, mit „oo“ bestätigen (over and out)
Arbeiten
auf fremden Rechner
Host ca77 Host ca49
einfache Anmeldung
otto Benutzer: root, HerrOtto, HerrHugo
Voraussetzung: otto muß Usernamen (Account) auf Zielrechner haben, hier: HerrOtto
rlogin -l <user> <host>
Anmelden auf entferntem Rechner
otto@ca77> rlogin -l HerrOtto ca49
Password:...
HerrOtto@ca49> hostname
ca49
HerrOtto@ca49>
exit
otto@ca77> hostname
ca77
vereinfachtes Login (ohne
Benutzernamen)
rlogin ca49
Wird kein Benutzername (z.B. -l erwin) angegeben, so wird davon ausgegangen, daß der lokale Benutzername auch auf dem Zielrechner benutzt werden soll.
Rlogin (stammt aus BSD-UNIX) in UNIX-Systemen weit verbreitet
andere Möglichkeit
telnet
Standardisiert (Telnet-Protokoll) im Rahmen TCP/IP-Protokollserie
telnet Client (Benutzerschnittstelle)
telnetd Server (reagiert auf telnet-Anfragen)
Host: 0815 Host:
cray
otto@0815> telnet
telnet> open cray
0815 login> login: HerrOtto
password:...
HerrOtto@0815> exit (wenn nötig: quit)
telnet ist in vielen Betriebssystemen verfügbar!
®Von fast jedem Rechner kann Verbindungzu Telnet-Server (z.B. UNIX) aufgebaut werden
auch Win98:
Start-Menü Ausführen telnet
2001-03-12
Standardisiert
Auslastung
auf
ca99 existiert:
~ca10/.rhosts
ca10 ca10
ca10 root
root@ca10> rcp /etc/passwd ca10@ca99:~/xyz
rsh
remote shell
rsh führt Kommandos
(=Befehle/Programme) auf dem entfernten Host
aus
rsh [-l user] host [command]
Benutzername
auf Zielsystem (falls identisch: überflüssig)
Zielrechner
Befehl
vax cray
hugo hugo
hugo@vax> rsh cray
hostname
cray
hugo@vax> hostname
vax
root@ca01> rsh -l
ca01 ca99 hostname
ca99
root@ca01>
hostname
ca01
identisch mit:
rlogin -l ca01 ca99
...
hostname
exit
root@ca01> rsh -l ca01 ca 99 cat /etc/passwd /tmp/xyz
führt Kommando cat
/etc/passwd auf ca99 aus.
Ausgabe wird in /tmp/xyz
(lokal) umgelenkt!
rsh
vax cat remotefile > lokalfile
auf vax ausführen
lokal umlenken
rsh vax cat remotefile „>“
other-remotefile
auf vax ausführen
auf vax
ausführen
vax> rsh cray langeMathBerechnung < Daten
> Ergebnis
nur langeMathBerechnung
wird auf cray ausgeführt; Daten
kommen von vax; Ergebnis
wird auch auf Rechner vax
geschrieben
vax> rsh cray
Shell wird gestartet
(=login)
rrm löschen
von entfernten Dateien? Nein
rmv Dateien
umbennenen auf entfernten? Nein
vax> mv bla blub lokal
umbenennen
vax> rsh
cray mv bla blubb auf cray
Þkeine
Notwendigkeit für weitere „r“-Befehle; jeder Befehl auf dem
Zeilsystem kann mit rsh gestartet
werden (sofern erlaubt)
2001-03-13
2001-03-14
mv auf
Directories angewandt verschiebt das angegebene Directory (mit Inhalt) an den
Zielort.
Am Zielort darf ein
Directory mit dem angegebenen Namen nicht existieren.
Funktioniert nicht
über die Grenzen des Dateisystems hinaus (auf gemountete Partitionen.
Druckerbetrieb
Drucker
üblicherweise an paralleler Schnittstelle angeschlossen
ab
Kernel Version 2.2.x
/dev/lp0 =DOS LPT1
/dev/lp1 =DOS
LPT2
/dev/lp2 =DOS LPT3
vor
Kernel 2.2.x
/dev/lp1 =DOS LPT1
/dev/lp2 =DOS
LPT2
/dev/lp3 =DOS LPT3
Test des Druckers
>echo Hallo, „Drucker“ >
/dev/lp0
mehrere Druckaufträge (evtl. von
mehreren Benutzern)
sollen
« parallel » abgearbeitet werden können
®Druckerwarteschlangen
Spooling-Betrieb
ca99
Drucker
ca10
/var/spool/lpd/... /var/spool/...
hugo@ca99> man mount | lpr (Druckbefehl unter UNIX)
hugo@ca10> man mount | lpr geht nicht
(kein Drucker da!)
hugo@ca10> man mount | rsh
ca99 lpr geht
Druckerwarteschlange
Definition: /etc/printcap
Repräsentation: Verzeichnis /var/spool/lpd
Linux enthält Paket: lprold
BSD-Spooling
grundsätzlich
für Netzwerkbetrieb ausgelegt
Druckvorgang
·
Datendatei
(=Druckauftrag vom Benutzer) wird in das Verzeichnis einer Druckerwarteschlange
kopiert
·
Steuerdatei
wird angelegt
·
®Druckjob = Dateindatei + Steuerdatei
·
Steuerdatei
schickt Datendatei i.d.R. durch ein Filterprogramm (Anweisungen für Drucker
werden erzeugt)
lpr
·
Anwendungsschnittstelle
für Druckerwarteschlange
hugo>
lpr textdatei
hugo>
lpr datei1 datei2 datei3
hugo>
lpr -Pfarbe farbdatei
hugo>
lpr -Pplakat -s großeFarbPlakatdatei
hugo>
cat /etc/passwd | grep
« users » | sort | lpr-PNadel
·
stellt eine
oder mehrere Dateien in die Warteschlange
·
-P legt
Warteschlange fest, keine: Standardwarteschlange
Standardwarteschlange:
in Variable PRINTER definiert; wenn PRINTER nicht existiert, wird traditionelle
Standardwarteschlange verwendet: lp
·
liest auch von
Standard-Input (verwendbar mit Eingabeumlenkung: <, |)
·
-s Symbolic Link
wird auf Druckdatei erzeugt (ÞDatei wird nicht kopiert)
·
sinnvoll bei
großen Dateien
·
ÞDruckdatei darf nicht vor Beendigung des Druckauftrages
gelöscht werden
lpq
line printer queue
·
zeigt Jobs in
der Warteschlange
lpq -Pnadel
active tux 17 Hallo.txt 4711 Bytes
1st hugo 18 bla.txt 4715 Bytes
2nd root 19 blub.txt 1111Bytes
lprm
Löschen
von Jobs aus einer Druckerwarteschlange (nur Eigentümer der Druckdatei oder
root darf löschen)
lprm
-Pnadel 19
lprm
17 löscht Job 17 der Standardwarteschlange
lprm
aktiven
Job der Standardwarteschlange
löschen
(xlpq
(Serie: xap); Monitor für Warteschlange)
lpc
line printer control
programme
>lpc
>? Hilfe
>status <Warteschlangenname> Statusbericht
> disable <Warteschlangenname> keine Jobs mehr aufnehmen
> enable <Warteschlangenname> Jobs werden wieder
angenommen
> stop <Warteschlangenname> Jobs werden nicht mehr
ausgedruckt
> start <Warteschlangenname> Jobs werden wieder gedruckt
> down <Warteschlangenname> disable + stop
>
up <Warteschlangenname> enable
+ start
> abort <Warteschlangenname> down + aktiven Job abbrechen
> topq <Warteschlangenname>
Job schiebt
Auftrag mit Jobnummer
Job
an Anfang der
Warteschlange
lpd
·
Druck-Manager,
line printer daemon
·
untersucht
/etc/printcap nach Warteschlange
·
Management der
lokalen Warteschlange (Sind Jobs vorhanden? Müssen diese gefiltert werden?)
Übertragung zum /dev/lp...
·
Reihenfolge
einhalten
·
gibt Auskunft
über Status von Warteschlangen + Druckern
·
Weiterleitung
von Druckaufträgen an entfernte Rechner (an dortigen lpd)
·
nimmt
Druckaufträge von entfernten Rechnern entgegen oder weist sie ab (fehlende
Berechtigung)
Autorisierung:
/etc/hosts.lpd Liste der zugelassenen Rechner
oder
/etc/hosts.equiv
·
lpd wird
automatisch bei Systemstart gestartet, wenn in /etc/rc.config
START_LPD=yes
Konfiguration der Warteschlange
/etc/printcap
jede
Warteschlange wird durch eine Zeile definiert
Beispiel: einfache lokale Warteschlange
ascii|deskjet|lp:lp=/dev/lp0:sd=/var/spool/lpd/ascii:sh:mx#10240
Name
der Warteschlange (mehrere Namen (Alias) werden durch | getrennt (ascii,
deskjet oder lp)
Daten werden an Gerät /dev/lp0
geschickt
Spoolverzeichnis; bei manueller
Konfiguration Verzeichnis erstellen!
(Eigentümer und Gruppe: lp)
suppress
header
Obergrenze
f. Druckjobs:
10240kB
Beispiel für entfernte Warteschlange
„Mein
Rechner soll auf anderen Rechnern drucken“; d.h. Netzwerkdrucker benutzen ®in /etc/printcap
Netzwerkdrucker|lp1|Laser:\ Name(n) der
Warteschlangen
rm=cray:\ Zielrechner
(bei uns ca99)
rp=lokalerDrucker:\ Name
des Druckers auf Zielrechner
sd=/var/spool/lpd/lp1:\ Warteschlange
(Verzeichnis)
sh:mx#0 keine
Titelseite, keine Größenbeschränkung
Installation unter Linux
1.lprold Paket installieren
2.lokalen Drucker mit YaST konfigurieren:
YaST
®Administration
des Systems ®Hardware
integrieren ®Drucker
farbig
[ ]
Typ: Auswahl des Druckers
Name: wird festgelegt
Papier: A4
Schnittstelle: parallel
Þ/etc/printcap wird erzeugt
3
bzw. 4 Warteschlangen werden angelegt:
ascii für ASCII-Dateien (Konvertierung nach PS)
lp Standard (Konvertierung nach PS)
raw
druckt ohne Konvertierung
mono wie lp, aber schwarz-weiß
3.Netzwerkdrucker
wie oben beschrieben (/etc/printcap ändern)